源码框架漏洞

中心主题:源码框架漏洞


1. Apache Shiro

简介

Apache Shiro 是一款开源安全框架。使用时需要配置 ShiroFilter 等组件,用于认证和授权等安全功能。
常见配置中会用到 rememberMe Cookie(记住我功能)。

版本信息

  • 受影响版本:Apache Shiro ≤ 1.2.4(部分资料标注为 1.2.4 版本)

原理

rememberMe Cookie 的处理流程:

  1. 用户登录成功后生成 rememberMe Cookie 值
  2. 使用 AES 加密
  3. Base64 编码后存入 Cookie
  4. 下次访问时服务器解密并反序列化

漏洞分支

Shiro-550

  • 原理rememberMe Cookie 反序列化漏洞(CC 链)
  • 触发点Shiro 内置的 CookieRememberMeManager 在解密后直接反序列化
  • 影响:远程命令执行(RCE)
  • 修复
    • 升级 Shiro 至 ≥ 1.2.5
    • 或自定义 RememberMeManager 并禁用反序列化

Shiro-721

  • 原理:AES 加密密钥可被爆破(默认密钥泄露)
  • 触发点Shiro 默认使用硬编码密钥 kPH+bIxk5D2O9v8y9f1z3w==
  • 影响:可构造恶意 rememberMe Cookie 实现反序列化
  • 修复
    • 升级 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 等)

具体漏洞示例

  • 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 文件
  • 如需添加图片或进一步细分某个漏洞,可告诉我我继续完善!