tomcat任意文件写入(CVE-2017-12615)
tomcat任意文件写入(CVE-2017-12615)
前提条件:一般
影响范围:Apache Tomcat 7.0.0 – 7.0.79
利用条件:
服务器是windows
Tomcat 7.0.x版本
配置文件中readonly=false(默认是true)
利用过程:
用PUT请求提交jsp马,文件后缀需要加%20绕过
注意我这里后缀加%20是可以上传文件,不过文件后缀相当于jsp%20,而我后缀加/则能上传webshell
1、PUT /shell.jsp%20 HTTP/1.1
这种方式可以成功创建jsp文件是因为Windows下不允许文件名以空格结尾,但是尾部添加空格可以使tomcat认为其不是jsp文件从而交由DefaultServlet处理。这种利用方式适用与Windows系统+Tomcat 7.x。
2、PUT /shell.jsp::$DATA HTTP/1.1
这种方式可以成功创建jsp文件是因为利用了Windows环境下NTFS文件格式的特性,NTFS文件格式存在如下的性质,为此同样可以使tomcat认为其不是jsp文件从而交由DefaultServlet处理。这种利用方式适用与Windows系统+Tomcat 7.x。
3、PUT /shell.jsp/ HTTP/1.1
这种就是上方我们所使用的形式,这种形式适合与Windows系统及Linux系统,覆盖了Tomcat 5.x-9.x。漏洞原理:
当conf/web.xml 中readonly值为false时,可通过PUT请求上传文件,虽然Tomcat存在过滤机制,不过可利用Windows或Linux的特性绕过。
修复:
不影响正常业务时,配置conf/web.xml 中readonly值为True或注释参数,禁止使用PUT方法并重启tomcat。
根据官方补丁升级最新版本。