1.1 综述
2022年3月1日,VMware官方发布漏洞报告,在使用Spring Colud Gateway的应用程序开启、暴露Gateway Actuator端点时,会容易造成代码注入攻击,攻击者可以制造恶意请求,在远程主机进行任意远程执行。
1.2 漏洞描述
漏洞编号 | CVE-2022-22947 |
漏洞评级 | 高危 |
漏洞类型 | 远程代码执行 |
影响范围 | Spring Cloud Gateway 3.1.x < 3.1.1 |
漏洞分析 | ShortcutConfigurable.java中的getValue方法可以被ConfigurationService.java包中ConfigurableBuilder的normalizeProperties函数的this.properties参数控制修改,攻击者通过添加带有filter的恶意路由,当重新加载路由时,会触发对参数的归一化逻辑,从而导致filter参数value中的SPEL表达式被解析。 |
第2章 漏洞复现
2.1 windows环境
2.1.1 工具准备
Burpsuite
2.1.2 环境搭建
1. 打开vulfocus靶场启动环境。如图所示
2. 访问http://192.168.117.131:45397,若可以正常访问,则漏洞环境启动成功。
2.1.3 漏洞复现
1. 访问页面并抓包
2. 构造并发送恶意的路由请求
* id 字段指定新路由的名称,必须全局唯一;
filters
* 字段给这条路由指定若干个过滤器。过滤器用于对请求和响应进行修改;
* name 字段指定要添加的过滤器,这里添加了一个 AddResponseHeader 过滤器,用于 gateway 给客户端返回响应之前添加一个响应头;
* args.name 字段指定要添加的响应头;
* args.value 字段指定响应头的值。这里的值是要执行的 SPEL 表达式,用于执行 whoami 命令。注意需要将命令输出结尾的换行符去掉,否则过滤器执行时会抛出异常说「响应头的值不能以 \r 或 \n 结尾」;
* uri 字段指定将客户端请求转发到 http://example.com。
3. 应用之前的路由发送此数据包,此数据包可触发表达式
4. 发送此数据包,查看命令回显,可以看到之前添加的路由
5. 访问actuator API接口
6. 访问env接口并获取flag
7.复制通关