写在前面:合法学习边界
本文是 Spring 家族漏洞清单,用于排查与加固。相关验证只在授权环境进行。
一、为什么要把 Spring 当“家族”看
Spring 不是一个软件,而是一整套生态:核心框架、Boot、Cloud、Data、Security、Session…每个分支都可能出问题。渗透测试时识别到 Spring 技术栈,就要按分支逐个排查。
二、各分支主要漏洞
1. Spring Framework(核心)
1
2
3
| Spring4Shell(CVE-2022-22965):数据绑定 → RCE
影响:5.3.0-5.3.17、5.2.0-5.2.19,JDK9+
修复:升级 5.3.18+/5.2.20+,禁用 class.* 绑定
|
2. Spring Cloud Gateway
1
2
3
4
| SpEL 注入 RCE(CVE-2022-22947)
影响:3.1.0-3.1.1、3.0.0-3.0.6
修复:升级 3.1.2+/3.0.7+,认证 /actuator/gateway
详见本站 Spring Cloud Gateway 篇
|
3. Spring Data
1
2
3
| SpEL 注入(CVE-2022-22950):对不可信数据做 SpEL 求值
影响:Spring Data Commons 相关版本
修复:升级并避免对不可信输入求值
|
4. Spring Boot Actuator
1
2
3
| 管理端点未认证 → 信息泄露/组合 RCE
修复:生产关闭端点、加认证、最小化暴露
详见本站 Actuator 篇
|
5. Spring Security
1
2
| 配置不当:放行敏感接口、默认凭据、CORS 配置错误
修复:白名单 + 权限校验 + 审计
|
6. Spring Session / Spring MVC
1
2
| 会话固定、数据绑定过度、模板注入(视版本)
修复:升级 + 加固配置
|
三、渗透测试排查顺序
1
2
3
4
5
| 1. 指纹:识别 Spring Boot/Cloud/框架版本
2. 先扫 /actuator 系列端点
3. 确认版本后逐个核对已知 CVE
4. 有 gateway 端点 → 试 SpEL 注入
5. 有数据绑定接口 → 试 class.module(Spring4Shell)
|
四、修复与加固清单
1
2
3
4
5
| 统一升级 Spring 生态到安全版本
Actuator 生产禁用 + 认证
禁止 class.* 等危险属性绑定
WAF 拦截 SpEL/数据绑定关键字
对 Spring 组件做资产登记与版本监控
|
排查操作步骤
1
2
3
4
5
| 第 1 步:指纹识别 Spring 分支与版本
第 2 步:先扫 /actuator 系列端点
第 3 步:对版本核对已知 CVE(见上表)
第 4 步:有 gateway 端点试 SpEL;有数据绑定试 Spring4Shell
第 5 步:按表修复并复测
|
五、小结
Spring 家族漏洞“多而分散”,但排查思路是统一的:先指纹定版本,再按分支核对漏洞。把 Framework、Cloud Gateway、Boot Actuator、Data 分开记,就不会在“是哪个 Spring 出的问题”上打转。