漏洞原理

eureka.client.serviceUrl.defaultZone 属性被设置为恶意的外部 eureka server URL 地址
refresh 触发目标机器请求远程 URL,提前架设的 fake eureka server 就会返回恶意的 payload
目标机器相关依赖解析 payload,触发 XStream 反序列化,造成 RCE 漏洞

利用条件

可以 POST 请求目标网站的 /env 接口设置属性
可以 POST 请求目标网站的 /refresh 接口刷新配置(存在 spring-boot-starter-actuator 依赖)
目标使用的 eureka-client < 1.8.7(通常包含在 spring-cloud-starter-netflix-eureka-client 依赖中)
目标可以请求攻击者的 HTTP 服务器(请求可出外网)

[ 下载 ]Flask 并符合要求的 python 脚本示例,修改Python脚本中反弹IP及端口

《spring_boot通过eureka xstream反序列化获取系统Shell》

执行脚本:

《spring_boot通过eureka xstream反序列化获取系统Shell》

监听端口:

《spring_boot通过eureka xstream反序列化获取系统Shell》

发送请求:

《spring_boot通过eureka xstream反序列化获取系统Shell》

刷新接口:

《spring_boot通过eureka xstream反序列化获取系统Shell》

结果:

《spring_boot通过eureka xstream反序列化获取系统Shell》

参考文章:https://github.com/LandGrey/SpringBootVulExploit