metabase远程代码执行漏洞分析

渗透技巧 9个月前 admin
209 0 0

        此漏洞是由于在安装metabase时测试连接数据库发生的jdbc注入,metabase由clojure开发,该语言类似于groovy,有自己独立的编译器,编译为.class字节码运行在jvm中。于metabase支持的数据库众多导致其攻击面非常之广

metabase远程代码执行漏洞分析

漏洞分析

metabase在测试数据库时,唯一验证的token在/api/session/properties 中泄露

metabase远程代码执行漏洞分析

拿到此token便可以访问/api/setup/validate端点连接数据库

而在众多数据库依赖中,h2数据库最好利用,可以直接执行Java代码,关于jdbc攻击h2可以参考文章https://blog.csdn.net/mole_exp/article/details/124243446

而遗憾的是metabase在之前版本中修复了h2相关漏洞:https://github.com/metabase/metabase/security/advisories/GHSA-gqpj-wcr3-p88v在新版中会移除连接字符串中的init关键字

metabase远程代码执行漏洞分析

而在测试h2连接中,存在拼接sql语句的逻辑导致sql注入

metabase远程代码执行漏洞分析

我们只需要找到以下属性之外的某个属性(该属性需在h2连接属性的白名单之内),利用堆叠注入便可以完成任意sql语句执行,从而调用Java代码

metabase远程代码执行漏洞分析

h2连接属性在位于org.h2.engine.DbSettings,org.h2.engine.ConnectionInfo#KNOWN_SETTINGS,在其中任意挑选一个即可

metabase远程代码执行漏洞分析

构造如下payload,注意分号前面需要转义

jdbc:h2:mem:./tm;MODE=MSSQLServer;JMX=1\;CREATE TRIGGER test BEFORE SELECT ON INFORMATION_SCHEMA.TABLES AS $$//javascriptnjava.lang.Runtime.getRuntime().exec('calc.exe')$$--=x\

metabase远程代码执行漏洞分析

请尽快升级到最新版本:

https://github.com/metabase/metabase/releases/tag/v0.46.6.2

本文章仅供安全研究,请忽做非法用途

原文始发于微信公众号(非叶安全):metabase远程代码执行漏洞分析

版权声明:admin 发表于 2023年7月28日 下午1:31。
转载请注明:metabase远程代码执行漏洞分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...