vlambda博客
学习文章列表

文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现

制丨阿星

整理丨阿星


这个漏洞是今年2月份出现的,他的影响范围也是非常广的。

2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938),这个漏洞是由于Tomcat AJP协议存在缺陷而导致,而攻击者利用该漏洞通过构造特定参数,读取服务器webapp下的任意文件,若目标服务器存在文件上传功能,攻击者可以进一步实现远程代码执行。



漏洞复现步骤


1、docker启动环境

2、Python2 poc.py 172.18.0.2 -p 8009 -w manager -f /WEB-INF/web.xml


我们首先去启动vnlhub

然后启动docker

启动docker之后我们到vnlhub下面去

然后cd到tomcat

Ls查一下,vulhub已经给我们结成好了CVE-2020-1938这一个漏洞的环境,我们cd进去拖取一下这个环境就可以了。


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现



文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


我们在去看一下端口是不是8080  cat README


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


在这里我们没有访问到,那么我们换一个浏览器


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


那么这个就是我们CVE-2020-1938所影响的一个环境,而这个漏洞我们也把它叫做幽灵猫漏洞。


接下来让我们一起去复现它。



文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现

<部分>


我们利用Python2的环境


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现




文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


那么我们就可以通过这样的一个漏洞利用的脚本,跟上这样的读取参数来去读取对方服务器下面的web.xml文件,我们可以看到我们能够成功的读取这个文件的结果出来,这个也是通过文件包含的一个漏洞来去达到这样的一个目的。


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


如果我们想进一步的去getshell该怎么办呢?


如果我们需要getshell的话是需要对方有这样的一个上传功能,在这里我们首先生成一个木马通过kali。


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


我们在这里生成一个java的反向连接的木马。


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


这个时候我们需要将这个木马上传到服务器,由于我们这里没有这个上传功能,所以我们这里就直接把这个木马复制过去。


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


在这里有一个txt文件,按道理来说是不解析的,但我们可以通过文件包含漏洞来去解析txt中的木马,然后我们主机远程上线。


这个时候我们在去打开msf来去开启 监听,那么对方包含这个文件的时候,我们主机在kail这里就可以成功上线。


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


我们设定一个java代码,并且是一个反向连接的代码。


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


那么我们在设定反弹过来的ip,也就是跟我们木马中的一致。


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


这个时候我们run一下开始监听,这个时候就已经开始监听了。


然后我们在这里通过脚本去成功执行,利用我们的幽灵猫漏洞


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


-f直接指定这样一个本地文件包含,回车。


文件年包含漏洞之——tomcat CVE-2020-1938漏洞复现


回车过后我们可以看到我们的kail里面,它就会获取这样的一个反向连接,反向连接从我们的容器连接到我们的kail里面来,此刻我们去执行下命令id,可以发现我们现在是root身份,那么我们在这里就可以获得一个权限。



获得目标的一个执行命令权限,成功的拿到了shell。

那么这就是这个文件包含配合上传的一个getshell的利用方式。