登录后更精彩...O(∩_∩)O...
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)
1.漏洞描述
Spring Cloud Gateway 是基于 Spring Framework 和 Spring Boot 构建的 API 网关,它旨在为微服务架构提供一种简单、有效、统一的 API 路由管理方式。 Spring官方博客发布了一篇关于Spring Cloud Gateway的CVE报告,据公告描述,当启用和暴露 Gateway Actuator 端点时,使用 Spring Cloud Gateway 的应用程序可受到代码注入攻击。攻击者可以发送特制的恶意请求,从而远程执行任意代码。
2.影响版本
漏洞名称:Spring Cloud Gateway远程代码执行漏洞 漏洞影响版本: Spring Cloud Gateway<3.1.1 Spring Cloud Gateway<3.0.7 Spring Cloud Gateway其他已不再更新的版本 漏洞危害等级:高危 厂商是否已发布漏洞补丁:是
3.漏洞环境搭建
利用docker搭建漏洞复现环境 git pul #更新vulhub
cd到/vulhub/spring/CVE-2022-22947目录
启动漏洞环境
└─$ sudo docker ps -a 1 ⨯
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3c2ccb7817a3 vulhub/spring-cloud-gateway:3.1.0 "java -Djava.securit…" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cve-2022-22947_spring_1
8eadb1952371 vulhub/spring-webmvc:5.3.17 "catalina.sh run" 2 weeks ago Exited (255) 2 weeks ago 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cve-2022-22965_spring_1
访问http://10.10.3.245:8080
4.漏洞复现
(1). 并提交以下数据,用于创建一条恶意路由:
- id 字段指定新路由的名称,必须全局唯一。
- filters 字段给这条路由指定若干个过滤器。过滤器用于对请求和响应进行修改。
- name 字段指定要添加的过滤器名称,这里添加了一个 AddResponseHeader 过滤器,用于 gateway 给客户端返回响应之前添加一个响应头。
- args.name 字段指定要添加的响应头。
- args.value 字段指定响应头的值。这里的值是要执行的 SpEL 表达式,用于执行 whoami 命令。注意需要将命令输出结尾的换行符去掉,否则过滤器执行时会抛出异常说「响应头的值不能以 \r 或 \n 结尾」。
- uri 字段指定将客户端请求转发到 http://httpbin.org/get。
- predicates 字段指定匹配此路由的条件。这里指定了两个条件,一个是请求的方法为 GET,一个是请求的 URI 为 /EchoSec。
(2). 接着以 POST 方法请求 /actuator/gateway/refresh ,用于刷新路由,使刚添加的恶意路由生效。
(3). 最后以 GET 方法请求 /EchoSec,触发恶意路由。在响应中可以看到过滤器添加的响应头:
删除添加的恶意路由
5.修复方案
安全建议 官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,酌情升级至安全版本(3.1.x用户应升级到3.1.1+;3.0.x用户应升级到3.0.7+) 临时缓解措施 1.如果不需要Gateway actuator endpoint功能,可通过以下配置文件禁用: 2.如果需要actuator,则应使用Spring Security对其进行防护,可参考以下网址: 参考连接
refer: 1. https://blog.csdn.net/qq_36197704/article/details/123344997 2. https://www.safedog.cn/news.html?id=5071
|