前言:Tomcat-AJP
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta
项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和 SERVLET容器连接。
编号
CVE编号:CVE-2020-1938
CNVD编号:CNVD-2020-10487
影响版本
tomcat 6
tomcat7 ~ 7.0.100
tomcat8 ~ 8.5.51
tomcat9 ~ 9.0.31
漏洞简介
此漏洞属于文件包含漏洞,攻击者可构造恶意的请求包利用此漏洞读取webapp目录下的任意文件,如:配置文件、源代码等。
CNVD平台对Apache Tomcat AJP协议在我国境内的分布情况进行统计,结果显示我国境内的IP数量约为55.5万,通过技术检测发现我国境内共有43197台服务器受此漏洞影响,影响比例约为7.8%。
复现
复现过程在私人渗透测试环境下完成!
一、搭建环境
看一下版本
这里使用的Tomcat是8.5.32版本,至此环境搭建完毕。
在默认web目录(ROOT)中创建个测试文本,并写入test字符
二 、操作
好了,上面准备就绪,开始
读取文件命令:
python tomcat.py read_file --webapp=ROOT /test.txt 127.0.0.1
参数:
read_file
操作(读取文件) webapp
指定web目录 /test.txt
文件所在目录
读取WEB-INF/web.xml文件
好了,至此结束。
案例使用exp:https://github.com/hypn0s/AJPy
解决方案
- 升级至安全版本
- 临时禁用AJP协议端口,在conf/server.xm l配置文件中注释掉<Connector port=“8009”
protocol="AJP/1.3"redirectPort=“8443” /> 或者防火墙添加AJP的端口限制对公网的开放- 配置ajp配置中的secretRequired跟secret属性来限制认证