0x02:spring cloud SnakeYAML RCE
利用条件:
可以 POST 请求目标网站的
/env
接口设置属性可以 POST 请求目标网站的
/refresh
接口刷新配置(存在spring-boot-starter-actuator
依赖)目标依赖的
spring-cloud-starter
版本 < 1.3.0.RELEASE目标可以请求攻击者的 HTTP 服务器(请求可出外网)
利用方法:
步骤一: 托管 yml 和 jar 文件
在自己控制的 vps 机器上开启一个简单 HTTP 服务器,端口尽量使用常见 HTTP 服务端口(80、443)
在网站根目录下放置后缀为 yml
的文件 example.yml
,内容如下:
步骤二: 设置 spring.cloud.bootstrap.location 属性
spring 1.x
spring 2.x
步骤三: 刷新配置
spring 1.x
spring 2.x
漏洞原理:
spring.cloud.bootstrap.location 属性被设置为外部恶意 yml 文件 URL 地址
refresh 触发目标机器请求远程 HTTP 服务器上的 yml 文件,获得其内容
SnakeYAML 由于存在反序列化漏洞,所以解析恶意 yml 内容时会完成指定的动作
先是触发 java.net.URL 去拉取远程 HTTP 服务器上的恶意 jar 文件
然后是寻找 jar 文件中实现 javax.script.ScriptEngineFactory 接口的类并实例化
实例化类时执行恶意代码,造成 RCE 漏洞
漏洞分析:
漏洞环境:
正常访问:
Last updated
Was this helpful?