框架漏洞
源码框架漏洞
中心主题:源码框架漏洞
1. Apache Shiro
简介
Apache Shiro 是一款开源安全框架。使用时需要配置 ShiroFilter 等组件,用于认证和授权等安全功能。
常见配置中会用到 rememberMe Cookie(记住我功能)。
版本信息
- 受影响版本:Apache Shiro ≤ 1.2.4(部分资料标注为 1.2.4 版本)
原理
rememberMe Cookie 的处理流程:
- 用户登录成功后生成
rememberMeCookie 值 - 使用 AES 加密
- Base64 编码后存入 Cookie
- 下次访问时服务器解密并反序列化
漏洞分支
Shiro-550
- 原理:
rememberMeCookie 反序列化漏洞(CC 链) - 触发点:
Shiro内置的CookieRememberMeManager在解密后直接反序列化 - 影响:远程命令执行(RCE)
- 修复:
- 升级 Shiro 至 ≥ 1.2.5
- 或自定义
RememberMeManager并禁用反序列化
Shiro-721
- 原理:AES 加密密钥可被爆破(默认密钥泄露)
- 触发点:
Shiro默认使用硬编码密钥kPH+bIxk5D2O9v8y9f1z3w== - 影响:可构造恶意
rememberMeCookie 实现反序列化 - 修复:
- 升级 Shiro 至 ≥ 1.4.2
- 自定义随机密钥
2. Fastjson
简介
Alibaba 开源的 Java 语言数据处理工具(JSON 解析库)。
漏洞分支
- Fastjson 1.2.24 及以下:远程代码执行(RCE)
- 核心原理:
@type字段导致反序列化(AutoType功能被滥用) - 修复方式:
- 升级至 1.2.83 或更高版本
- 关闭
AutoType支持(ParserConfig.getGlobalInstance().setAutoTypeSupport(false))
3. Struts2
简介
Struts2 是基于 MVC 模式的 Java Web 框架,主要针对 Web 应用。
漏洞分支(S2-系列)
| 漏洞编号 | 原理简述 | 影响版本 | 修复版本 |
|---|---|---|---|
| S2-016 | OGNL 表达式注入(redirect 参数) |
Struts 2.0.0 ~ 2.3.15 | 2.3.15.1 |
| S2-045 | Content-Type 头导致 OGNL 注入 | Struts 2.3.5 ~ 2.3.31 | 2.3.32 |
| S2-046 | Multipart 文件上传导致 OGNL 注入 | Struts 2.3.5 ~ 2.3.31 | 2.3.32 |
| S2-053 | 模板引擎(Freemarker)中的 OGNL 注入 | Struts 2.0.0 ~ 2.3.33 | 2.3.34 |
| S2-057 | Namespace 污染导致 RCE | Struts 2.0.4 ~ 2.5.16 | 2.5.17 |
通用修复建议:
- 升级至最新 Struts2 版本
- 禁用 OGNL 表达式动态执行
4. Spring 框架
SpringMVC / SpringBoot
常见漏洞点
- SpringMVC:路径遍历、文件上传绕过
- SpringBoot:
- Actuator 未授权访问(
/actuator接口) - Jolokia 未授权 RCE
- Spring Cloud Gateway RCE(CVE-2022-22947 等)
- Actuator 未授权访问(
具体漏洞示例
- Spring Framework RCE (CVE-2022-22965):Spring Cloud Function + SpEL 表达式注入
- Spring Cloud Gateway RCE (CVE-2022-22947):
id参数 SpEL 注入 - Spring Boot Actuator:未授权访问导致信息泄露
修复:
- 升级 Spring Boot 至 2.6.6+ / 2.7.0+
- 关闭不必要的 Actuator Endpoint
- 使用
Spring Cloud最新安全版本
5. ThinkPHP
版本分支
ThinkPHP 5.x(5.0 ~ 5.1)
- 漏洞:SQL 注入、文件包含、RCE(
thinkphp框架核心漏洞) - 典型 CVE:
- ThinkPHP 5.0.x 任意文件包含
- ThinkPHP 5.1.x 命令执行
ThinkPHP 3.x(3.0 ~ 3.2)
- 漏洞:SQL 注入、XSS、文件上传
- 典型:ThinkPHP 3.x 框架通用漏洞较多
修复建议:
- 升级至 ThinkPHP 6.x(推荐)
- 严格过滤用户输入,开启
request严格模式
6. Apache Log4j
漏洞分支(Log4j2)
- Log4j2 JNDI 注入(CVE-2021-44228):最著名“核弹级”漏洞
- 影响版本:2.0-beta9 ~ 2.14.1
- 触发:
${jndi:ldap://...}表达式
- Log4j2 其他:
- CVE-2021-45046
- CVE-2021-45105
- CVE-2021-44832
修复:
- 升级至 2.17.1(或更高)
- 移除 JNDI 功能(
log4j2.formatMsgNoLookups=true)
附加内容(图片中其他节点)
- Fastjson 漏洞利用方式:
@type+ 恶意类加载 - Spring Cloud Function / SpEL 表达式注入
- 白名单错误页面(WhiteList Error Page)示例
- Apache Log4j 升级建议:
log4j2.formatMsgNoLookups=true+ 最新版本 - Shiro 升级命令:
mvn dependency:tree检查版本
使用说明:
- 本 Markdown 已按思维导图分支结构化整理
- 每个框架下包含 原理、影响版本、修复方式
- 可直接复制保存为
源码框架漏洞.md文件 - 如需添加图片或进一步细分某个漏洞,可告诉我我继续完善!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Tubby Little Hero!






