Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
superset-g3-v0-import-sql-plant — 针对 Apache Superset 6.1.0 授权缺陷的概念验证实验环境:Gamma 仪表板编辑者通过未版本化的 v0 仪表板导入植入数据集 SQL,并在图表刷新时执行。 | Kitploit
工具/GitHubGitHub/abraxas/superset-g3-v0-import-sql-plant
身份验证与授权权限提升漏洞分析漏洞利用Web应用程序漏洞利用Web安全论文与研究实验室与实践

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
abraxas/superset-g3-v0-import-sql-plant

superset-g3-v0-import-sql-plant

针对 Apache Superset 6.1.0 授权缺陷的概念验证实验环境:Gamma 仪表板编辑者通过未版本化的 v0 仪表板导入植入数据集 SQL,并在图表刷新时执行。

查看仓库
121小时7分前尚未审核

Abraxas Labs - superset-g3-v0-import-sql-plant

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  superset-g3-v0-import-sql-plant

superset-g3-v0-import-sql-plant

拥有普通仪表盘编辑器账户的同事可以将自己的数据库查询隐藏在其他用户已经信任的图表中。下次任何人打开该图表时,该查询就会针对公司的数据连接运行。他们可以读取从未被授予访问权限的表。他们不需要本应作为此操作门槛的额外“运行我自己的 SQL”权限。他们无法注册新的仓库登录凭据,也无法通过此图表路径执行 INSERT 或 DELETE。

类别: 权限残留 可达性: 远程

Apache Superset 6.1.0 (c83fb2bb) - Apache Software Foundation

默认 Gamma 拥有 can_write Dashboard 权限,因此 POST /api/v1/dashboard/import/ 在权限矩阵内。非 ZIP 的 JSON 没有 metadata.yaml,因此调度器先尝试 v1,然后回退到无版本号的 v0。decode_dashboards 重建 SqlaTable。import_dataset 通过 table_name + schema + database_id(来自 params.database_name)查找,并且 datasource.override(i_datasource) 复制 export_fields,包括 sql,且没有 raise_for_access,也没有 Dataset 写入。随后 POST /api/v1/chart/data 将该 SQL 编译为数据集分析连接上的虚拟 FROM。

Gamma SQL 无需 sql_lab。Dataset REST PUT 仍返回 403。v1 ZIP 仍为空。

ID暂无 CVE
类别权限残留(CVE-2026-23982 / CVE-2024-26016 的残留)
可达性远程(已认证 HTTP;默认 Gamma)
CWECWE-863、CWE-284
CVSS高危:7.6 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
产品Apache Superset
受影响版本6.1.0(c83fb2bb1dcfac41ac51bcebd82471f4a7180d18);狩猎时为 GitHub 最新 GA 版本
认证默认 Gamma(can_write Dashboard)。非未认证。非 Admin(超出范围)。
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

攻击者能做什么

需要一个 Gamma(或任何具有 Dashboard 写权限)账户,以及一个他们之后可以制图的 dataset:在某个 Database 上具有相同的 table_name + schema,且该 Database 的 database_name 出现在 JSON 的 params 中。互补授权作用于 dataset 对象,而不是植入的 SQL 所命名的每一张表。Chart/data 的 raise_for_access 针对的是 datasource 对象(datasource_access / schema / owner)。get_from_clause 仅拒绝 has_mutation()。

权限方法 / 汇聚点侦察 / 完整性 / 可用性实验室验证或推断
覆盖名称匹配数据集的虚拟 SQLGamma POST /api/v1/dashboard/import/ 非 ZIP JSON;v0 import_dataset 的 datasource.override 复制 export_fields,包括 sql完整性(dataset.sql)实验室验证。导入返回 200;dataset.sql = SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness
在该数据集的分析 URI 上运行该 SQL植入后 POST /api/v1/chart/data;get_from_clause 将存储的 sql 包装为 TextAsFrom侦察(SELECT 该 URI 用户可读取的任何表)实验室验证。返回 200;编译后 FROM (SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness) AS virtual_table
将查询隐藏在已授予权限的其他用户已打开的图表中同一植入;所有者 / 其他 datasource_access 主体在刷新时执行完整性 + 侦察(其他人运行植入内容)推断。实验室 Gamma 已有授权,因此自行执行
破坏使用旧 SQL 的仪表板将物理表 sql 替换为攻击者 SELECT可用性推断
否定项:SQL Lab 执行POST /api/v1/sqllab/execute/不适用实验室验证。403
否定项:数据集 REST 覆盖使用 sql 的 PUT /api/v1/dataset/{id}不适用实验室验证。403;sql 保持为空(CVE-2026-23982 同类)
否定项:带 metadata.yaml 的 v1 ZIP同一导入端点,ZIP 包不适用实验室验证。200;sql 保持为空(CVE-2024-26016 类)

已排除的遗留问题:未认证导入;注册新的数据库 URI(v0 数据集导入不会创建连接;缺少 params.database_name 会报 DatabaseNotFoundError);通过 chart/data 执行 DML(has_mutation());Gamma 绘制其无法读取的数据集(403);新插入的唯一 table_name(PVM 已创建,但未附加到 Gamma)。不是 RCE。不是管理员。生产仓库拆分将 SELECT 限制为该 URI 用户。实验室分析 URI 与元数据是同一个 Postgres,因此跨表包括 ab_user 是推断的,而非二次验证。

我是如何发现的

我固定使用 Apache Superset 6.1.0。管理员等同于操作系统权限,不在范围内。我对照 Apache 自己的角色矩阵寻找遗留问题:Gamma、Alpha、sql_lab、嵌入式访客、Public。

6.0.0 浪潮已经关闭了 chart/data sqlExpression(CVE-2026-23980)、Dataset REST SQL(CVE-2026-23982)以及 SQL Lab DO $$ / EXPLAIN ANALYZE(CVE-2026-23984)。版本化 ZIP 的导入授权是 CVE-2024-26016。未版本化的 v0 仍然在 command_versions 中排在最后,因为“文件未版本化”。

Dashboard 上的 import_ 映射到写入。非 ZIP JSON 是 {filename: bytes},没有 metadata.yaml。调度器先尝试 v1,捕获 IncorrectVersionError,然后运行 v0。decode_dashboards 将 __SqlaTable__ 转换为实时模型。import_dataset 查找并覆盖。export_fields 包含 sql。查询时将存储的 SQL 视为可信:get_from_clause 在 has_mutation() 之后。

已记录的弯路:将 v1 ZIP 视为遗留问题(sql 保持为空);Dataset REST PUT(403);以 Gamma 身份使用 SQL Lab(403);膨胀为任意 Database 对象(v0 不注册 URI);反向 shell。都是表演。见证者是虚拟 FROM。

实验室

python3 superset-g3-v0-import-sql-plant-Abraxas-Labs.py

或:

cd lab
./run.sh

仅针对 http://127.0.0.1:19710。镜像 apache/superset:6.1.0。Compose 项目 superset-g3-v0-import。种子:Admin、仅 Gamma 用户、位于 Lab Analytics 上的物理数据集 lab_items、Gamma datasource_access。Oracle 是植入 SQL 以及图表/数据中的见证字符串。

SUCCESS superset-g3-v0-import-sql-plant gamma-import-ok plant-sql-ok chart-data-witness-ok sqllab-403 dataset-put-403 v1-zip-no-overwrite SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS

修复方案

v0 的 import_dataset 必须在 override 复制 sql 之前要求 Dataset 写权限并调用 raise_for_access。从 command_versions 中移除未版本化的 v0,或拒绝缺少 metadata.yaml 的导入。在查询时,继续将存储的虚拟 SQL 视为需要 Dataset 写权限的能力。

参考资料

  • github.com/apache/superset 标签 6.1.0
  • dashboards/api.py · dispatcher.py · dashboard importers/v0.py · dataset importers/v0.py · helpers.py · sqla/models.py
  • 相关(非此路径):CVE-2026-23982 · CVE-2024-26016
  • CWE-863 · CWE-284
  • 分析文章:https://abraxaslabs.tech/research/superset-g3-v0-import-sql-plant

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。不提供任何担保。

下载工具