Struts2 历史RCE漏洞 EXP汇总 常用工具流量特征分析
字数 1907
更新时间 2025-08-26 22:11:29

Struts2 历史RCE漏洞分析与利用指南

1. Struts2漏洞概述

Apache Struts2是一个基于MVC设计模式的Java Web应用框架,其核心机制使用OGNL(Object-Graph Navigation Language)表达式处理视图层数据。由于对用户输入过滤不严,Struts2历史上存在大量远程代码执行(RCE)漏洞。

2. OGNL机制与漏洞原理

2.1 OGNL基础

  • OGNL是Struts2默认的表达式语言
  • 允许访问Java对象的方法和属性
  • 支持静态方法调用和对象实例化

2.2 漏洞成因

Struts2漏洞主要源于:

  1. 用户输入未经充分过滤直接传入OGNL解析器
  2. 关键安全配置未正确设置
  3. 特殊功能插件(如Rest插件)引入的安全问题

3. 主要漏洞分析

3.1 S2-057 (CVE-2018-11776)

影响版本:≤2.3.34 和 ≤2.5.16
漏洞条件

  • alwaysSelectFullNamespace=true
  • action元素未设置namespace属性或使用通配符

利用方式

/${1+1}/actionChain1.action

RCE Payload

${(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context)...}

3.2 S2-053 (CVE-2017-12611)

影响版本:2.0.1-2.3.33, 2.5-2.5.10
漏洞成因:Freemarker模板引擎双重解析OGNL

RCE Payload

%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm)...}

3.3 S2-052 (CVE-2017-9805)

影响版本:2.1.2-2.3.33, 2.5-2.5.12
漏洞成因:Rest插件处理XML时XStream反序列化漏洞

利用方式

  • 修改Content-Type为application/xml
  • 发送恶意XML数据

3.4 S2-048 (CVE-2017-9791)

影响版本:2.3.x
漏洞成因:Struts1插件中ActionMessage类OGNL注入

3.5 S2-045/S2-046 (CVE-2017-5638)

影响版本:2.3.5-2.3.31, 2.5.0-2.5.10
漏洞成因:Jakarta插件文件上传Content-Type处理不当

S2-045利用点:Content-Type头
S2-046利用点:filename参数

3.6 S2-037/S2-033

影响版本:2.3.20-2.3.28(部分除外)
漏洞成因:Rest插件method参数OGNL注入

3.7 S2-032

影响版本:2.3.20-2.3.28(部分除外)
利用条件:需开启动态方法调用

利用方式

?method:#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS...

3.8 S2-019

影响版本:2.0.0-2.3.15.1
利用条件:struts.devMode=true

3.9 S2-016

影响版本:2.0.0-2.3.15
利用方式:通过redirect/redirectAction前缀注入OGNL

3.10 S2-015

影响版本:2.0.0-2.3.14.2
利用方式:基于通配符的动作映射

3.11 S2-013/S2-012

影响版本:2.0.0-2.3.14
漏洞成因:标签includeParams属性处理不当

3.12 S2-009/S2-005/S2-003

漏洞系列:参数处理绕过防护机制

3.13 S2-001

漏洞成因:表单验证失败时OGNL表达式二次解析

4. 检测工具特征分析

4.1 天融信工具特征

  • Cookie在第一行
  • 默认Cookie值:SessionId=96F3F15432E0660E0654B1CE240C4C36
  • 固定请求头:
    Accept: text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
    

4.2 Struts2-Scan特征

  • 类似天融信工具风格
  • 可自定义Cookie

4.3 K8工具特征

  • Accept头在第一行
  • 无Cookie字段

4.4 安恒工具特征

  • 固定User-Agent:Auto Spider 1.0
  • 请求中常带有"x"参数

5. 防御建议

  1. 及时升级到最新Struts2版本
  2. 禁用不必要的插件和功能
  3. 严格过滤用户输入
  4. 生产环境关闭devMode
  5. 使用WAF防护已知攻击模式

6. 漏洞复现环境

推荐使用:

  • Vulhub (https://github.com/vulhub/vulhub)
  • VulApps (https://github.com/Medicean/VulApps)

7. 参考资源

  1. OGNL官方文档
  2. Struts2安全公告
  3. Marshalsec工具(用于S2-052漏洞利用)

:本文档仅用于安全研究和防御目的,请勿用于非法用途。实际测试需获得系统所有者授权。

相似文章
相似文章
 全屏