Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
superset-g3-v0-import-sql-plant — Prueba de concepto de laboratorio para una falla de autorización en Apache Superset 6.1.0, donde un editor de dashboard con rol Gamma inserta SQL de dataset mediante la importación de dashboard v0 sin versionado, que se ejecuta al actualizar el gráfico. | Kitploit
Herramientas/GitHubGitHub/abraxas/superset-g3-v0-import-sql-plant
Autenticación y AutorizaciónEscalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPapers e InvestigaciónLabs y Práctica

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHubabraxas/superset-g3-v0-import-sql-plant

superset-g3-v0-import-sql-plant

Prueba de concepto de laboratorio para una falla de autorización en Apache Superset 6.1.0, donde un editor de dashboard con rol Gamma inserta SQL de dataset mediante la importación de dashboard v0 sin versionado, que se ejecuta al actualizar el gráfico.

Ver Repositorio
15hace 1 díaAún no revisado

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

Un compañero de trabajo con una cuenta normal de editor de paneles puede ocultar su propia consulta de base de datos dentro de un gráfico en el que otras personas ya confían. La próxima vez que alguien abra ese gráfico, la consulta se ejecuta contra la conexión de datos de la empresa. Pueden leer tablas a las que nunca se les dio acceso. No necesitan el permiso adicional de "ejecutar mi propio SQL" que se supone que controla esto. No pueden registrar un nuevo inicio de sesión de almacén de datos y no pueden ejecutar INSERT o DELETE a través de esta ruta del gráfico.

Clase: Privilegio residual Alcance: Remoto

Apache Superset 6.1.0 (c83fb2bb) - Apache Software Foundation

Gamma por defecto tiene can_write en Dashboard, por lo que POST /api/v1/dashboard/import/ está dentro de la matriz. El JSON que no es ZIP no tiene metadata.yaml, por lo que el despachador prueba v1 y luego recurre a v0 sin versión. decode_dashboards reconstituye SqlaTable. import_dataset busca por table_name + schema + database_id (desde params.database_name) y datasource.override(i_datasource) copia export_fields, incluido sql, sin raise_for_access y sin escritura en Dataset. Luego, POST /api/v1/chart/data compila ese SQL como el FROM virtual en la conexión analítica del dataset.

SQL de Gamma sin sql_lab. El PUT REST de Dataset sigue en 403. El ZIP v1 sigue vacío.

IDaún sin CVE
ClasePrivilegio residual (residual de CVE-2026-23982 / CVE-2024-26016)
AlcanceRemoto (HTTP autenticado; Gamma por defecto)
CWECWE-863, CWE-284
CVSSAlto: 7.6 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
ProductoApache Superset
Afectado6.1.0 (c83fb2bb1dcfac41ac51bcebd82471f4a7180d18); GitHub Latest GA en el momento de la búsqueda
AutenticaciónGamma por defecto (can_write en Dashboard). No sin autenticación. No Admin (fuera de alcance).
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1

Qué puede hacer un atacante

Necesita una cuenta Gamma (o cualquier cuenta con escritura en Dashboard) y un dataset que pueda graficar después: el mismo table_name + schema en una Base de datos cuyo database_name esté en el JSON params. La concesión complementaria es sobre el objeto dataset, no sobre cada tabla que nombra el SQL plantado. raise_for_access de chart/data es sobre el objeto datasource (datasource_access / schema / propietario). get_from_clause solo rechaza has_mutation().

PrivilegioMétodo / sinkReconocimiento / integridad / disponibilidadProbado en laboratorio o inferido
Sobrescribir el SQL virtual de un dataset con nombre coincidenteGamma POST /api/v1/dashboard/import/ JSON no-ZIP; v0 import_dataset datasource.override copia export_fields incluyendo sqlIntegridad (dataset.sql)Probado en laboratorio. Import 200; dataset.sql = SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness
Ejecutar ese SQL en la URI analítica del datasetPOST /api/v1/chart/data tras el plant; get_from_clause envuelve el sql almacenado como TextAsFromReconocimiento (SELECT cualquier tabla que el usuario de la URI pueda leer)Probado en laboratorio. 200; compilado FROM (SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness) AS virtual_table
Ocultar la consulta en un gráfico que otros usuarios ya autorizados tienen abiertoMismo plant; propietarios / otros principales con datasource_access ejecutan al refrescarIntegridad + reconocimiento (otras personas ejecutan el plant)Inferido. El laboratorio Gamma ya tenía el permiso, por lo que se auto-ejecutó
Romper paneles que usaban el SQL antiguoReemplazar el sql de la tabla física con un SELECT del atacanteDisponibilidadInferido
Negativo: ejecución en SQL LabPOST /api/v1/sqllab/execute/n/aProbado en laboratorio. 403
Negativo: sobrescritura REST de DatasetPUT /api/v1/dataset/{id} con sqln/aProbado en laboratorio. 403; sql permaneció vacío (hermano de CVE-2026-23982)
Negativo: ZIP v1 con metadata.yamlmismo endpoint de importación, bundle ZIPn/aProbado en laboratorio. 200; sql permaneció vacío (clase CVE-2024-26016)

Cerrado en este remanente: importación no autenticada; registrar una nueva URI de Database (la importación de dataset v0 no crea la conexión; la falta de params.database_name es DatabaseNotFoundError); DML a través de chart/data (has_mutation()); Gamma graficando un dataset que no puede leer (403); un table_name único recién insertado (PVM creado, no adjunto a Gamma). No es RCE. No es Admin. La separación del almacén de producción limita el SELECT a ese usuario de la URI. La URI analítica del laboratorio era el mismo Postgres que el metadatos, por lo que el acceso entre tablas incluyendo ab_user es inferido, no verificado con un segundo oráculo.

Cómo lo encontré

Fijé Apache Superset 6.1.0. Admin es equivalente a nivel de SO y está fuera de alcance. Busqué remanentes contra la propia matriz de roles de Apache: Gamma, Alpha, sql_lab, invitado embebido, Public.

La oleada de 6.0.0 ya cerró sqlExpression en chart/data (CVE-2026-23980), SQL REST de Dataset (CVE-2026-23982), y DO $$ / EXPLAIN ANALYZE en SQL Lab (CVE-2026-23984). La autorización de importación para ZIP versionado es CVE-2024-26016. El v0 sin versionar sigue siendo el último en command_versions porque "los archivos no están versionados."

import_ en Dashboard se mapea a escritura. El JSON no-ZIP es {filename: bytes} sin metadata.yaml. El despachador intenta v1, captura IncorrectVersionError, ejecuta v0. decode_dashboards convierte __SqlaTable__ en un modelo vivo. import_dataset busca y sobrescribe. export_fields incluye sql. En tiempo de consulta se trata el SQL almacenado como confiable: get_from_clause después de has_mutation().

Pistas falsas ya registradas: tratar el ZIP v1 como el remanente (sql permaneció vacío); PUT REST de Dataset (403); SQL Lab como Gamma (403); inflar a cualquier objeto Database (v0 no registra una URI); una reverse shell. Teatro. El testigo es el FROM virtual.

Laboratorio

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

o:

cd lab
./run.sh
Descargar herramienta