漏洞分析|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注入到代码执行的过程。
➡️