
这个漏洞是今年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进去拖取一下这个环境就可以了。

这个时候我们在去本地浏览器上去访问一下,访问我们的虚拟机地址8080端口,然后我们进一步的去查看一下虚拟机的ip地址。

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

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

那么这个就是我们CVE-2020-1938所影响的一个环境,而这个漏洞我们也把它叫做幽灵猫漏洞。
接下来让我们一起去复现它。
我们需要去利用到一个脚本,在这个脚本里是编写了这个漏洞攻击的代码。然后我们跟上目标的地址,加上ajp协议端口,加上-w manager -f 能够通过这样一个漏洞我们就能够去读取它下面的web xml文件

我们利用Python2的环境

跟上容器的ip地址,那这个容器的ip地址我们这里把它改为容器的ip地址
如果我们不知道去哪里去查看这个容器的ip地址,那么我们直接跟上虚拟机的地址,跟上-p 8009端口一样也是可以的

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

如果我们想进一步的去getshell该怎么办呢?
如果我们需要getshell的话是需要对方有这样的一个上传功能,在这里我们首先生成一个木马通过kali。

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

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

在这里有一个txt文件,按道理来说是不解析的,但我们可以通过文件包含漏洞来去解析txt中的木马,然后我们主机远程上线。
这个时候我们在去打开msf来去开启 监听,那么对方包含这个文件的时候,我们主机在kail这里就可以成功上线。

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

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

这个时候我们run一下开始监听,这个时候就已经开始监听了。
然后我们在这里通过脚本去成功执行,利用我们的幽灵猫漏洞

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

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

获得目标的一个执行命令权限,成功的拿到了shell。
那么这就是这个文件包含配合上传的一个getshell的利用方式。