漏洞分析|Metabase 远程代码执行(CVE-2023-38646): H2 JDBC 深入利用

💡 原文中文,约10700字,阅读约需26分钟。
📝

内容提要

最近发现了一个远程代码执行漏洞(CVE-2023-38646),通过研究发现该漏洞是通过JDBC利用的。漏洞主要通过H2数据库的深入利用,包括使用RUNscript和TRIGGER来执行代码。同时介绍了通过DefineClass实现自定义类加载和执行的方法。总结了该漏洞利用的过程,并提到了可应用于H2的SQL注入和代码执行的过程。

🎯

关键要点

  • 发现了远程代码执行漏洞(CVE-2023-38646),通过JDBC利用。
  • 漏洞主要通过H2数据库的深入利用,包括使用RUNscript和TRIGGER执行代码。
  • 研究采用Vulfocus构建环境,制作了ARM架构的镜像以适应M1芯片。
  • 漏洞分析显示,数据库连接中存在安全风险,安装时配置数据源数据库可触发漏洞。
  • 利用setup和setup-token可以完整利用漏洞,setup方式不需要权限。
  • H2数据库支持多种利用方式,主要通过RUNscript和TRIGGER实现漏洞利用。
  • RUNscript可以通过HTTP协议执行远程SQL语句,但在真实攻击中受限。
  • TRIGGER可以通过JavaScript引擎执行代码,尽管在JDK 15后移除默认解析。
  • DefineClass允许自定义类加载和执行,解决了JDK9和JDK11的兼容性问题。
  • 漏洞回显利用DefineClass执行,需适配Jetty11版本。
  • 总结指出该漏洞利用可应用于H2的SQL注入,形成SQL注入到代码执行的过程。
➡️

继续阅读