漏洞原理
eureka.client.serviceUrl.defaultZone 属性被设置为恶意的外部 eureka server URL 地址
refresh 触发目标机器请求远程 URL,提前架设的 fake eureka server 就会返回恶意的 payload
目标机器相关依赖解析 payload,触发 XStream 反序列化,造成 RCE 漏洞
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 服务器(请求可出外网)
可以 POST 请求目标网站的 /refresh 接口刷新配置(存在 spring-boot-starter-actuator 依赖)
目标使用的 eureka-client < 1.8.7(通常包含在 spring-cloud-starter-netflix-eureka-client 依赖中)
目标可以请求攻击者的 HTTP 服务器(请求可出外网)
[ 下载 ]Flask 并符合要求的 python 脚本示例,修改Python脚本中反弹IP及端口
执行脚本:
监听端口:
发送请求:
刷新接口:
结果:
参考文章:https://github.com/LandGrey/SpringBootVulExploit