漏洞原理
Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互。而该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者可通过构造特定参数读取webapp目录下的任意文件,如:webapp 配置文件或源代码等。
影响版本
Apache Tomcat 9.x < 9.0.31
Apache Tomcat 8.x < 8.5.51
Apache Tomcat 7.x < 7.0.100
Apache Tomcat 6.x
工具
Poc:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
攻击机:kali2022
靶机:ubuntu22.04
环境搭建
- 安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 测试是否安装成功
sudo docker run hello-world
(3)安装Vulhub
$ git clone https://github.com/vulhub/vulhub.git
靶场使用
输入systemctl start docker 启动docker
输入systemctl status docker 查看docker状态
输入sudo docker-compose up -d 启动靶场环境
5.输入sudo docker ps查看容器id
6.输入docker exec -it docker-id /bin/bash 进入容器,这里的docker-id为71408c1b603e
成功进入容器
7.在win10浏览器输入靶场ip查看是否启动成功
漏洞复现
- 用nmap查看开启端口
- nmap 192.168.56.135 -A
看到8009端口的AJP协议是开启的,且Tomcat版本<9.0.31,并且存在8009端口服务的开启,所以可怀疑有CVE-2020-1938 Apache Tomcat文件包含漏洞的存在。
(3)使用poc读取读取ROOT路径下的web.xml
(4)尝试在webapps文件夹中创建一个新的文档233.txt
(5)读取成功