实战案例:记一次利用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漏洞:

  1. Spring Boot Actuator jolokia配置不当导致的RCE漏洞
  2. Spring Cloud Gateway应用对外暴露Gateway Actuator导致的远程代码执行漏洞(CVE-2022-22947)

4.2 漏洞验证

  1. 首先检查/jolokia或/actuator/jolokia接口 - 未发现
  2. 检查/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 利用步骤

  1. 构造POST请求包,在/gateway/actuator/gateway/routes/ceshiRCE添加恶意路由
  2. 请求包含恶意的SpEL表达式
  3. 设置Content-Type为application/json
  4. 发送请求后返回201表示添加成功
  5. 刷新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 关键点

  1. Actuator端点暴露:系统未正确配置Actuator端点的访问权限
  2. SpEL表达式注入:路由配置中的参数未经充分过滤,允许执行任意SpEL表达式
  3. 动态路由加载:Spring Cloud Gateway支持动态添加路由,且会立即生效

7. 防御建议

7.1 基本防护措施

  1. 升级Spring Cloud Gateway到安全版本(3.1.1+或3.0.7+)
  2. 禁用或保护Actuator端点:
    management.endpoint.gateway.enabled=false
    management.endpoints.web.exposure.exclude=gateway
    
  3. 限制Actuator端点的访问权限,仅允许内部或授权IP访问

7.2 进阶防护

  1. 实现API网关的认证和授权机制
  2. 对输入参数进行严格的验证和过滤
  3. 在生产环境中禁用不必要的Actuator端点
  4. 设置SpEL表达式解析器的安全限制

8. 总结

本案例展示了如何通过Spring Boot框架特征识别、敏感接口探测和Spring Cloud Gateway漏洞利用获取系统权限。关键点包括:

  1. 通过错误页面识别框架类型
  2. 系统性地探测Actuator端点
  3. 准确识别可利用的漏洞类型
  4. 构造有效的SpEL表达式实现RCE

此案例强调了在渗透测试中框架识别和已知漏洞验证的重要性,同时也提醒开发人员需要重视中间件和框架的安全配置。

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 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端点: 限制Actuator端点的访问权限,仅允许内部或授权IP访问 7.2 进阶防护 实现API网关的认证和授权机制 对输入参数进行严格的验证和过滤 在生产环境中禁用不必要的Actuator端点 设置SpEL表达式解析器的安全限制 8. 总结 本案例展示了如何通过Spring Boot框架特征识别、敏感接口探测和Spring Cloud Gateway漏洞利用获取系统权限。关键点包括: 通过错误页面识别框架类型 系统性地探测Actuator端点 准确识别可利用的漏洞类型 构造有效的SpEL表达式实现RCE 此案例强调了在渗透测试中框架识别和已知漏洞验证的重要性,同时也提醒开发人员需要重视中间件和框架的安全配置。