Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
superset-g3-v0-import-sql-plant — Prova de conceito de laboratório para uma falha de autorização no Apache Superset 6.1.0, em que um editor de dashboard com perfil Gamma insere SQL de dataset por meio da importação de dashboard v0 sem versionamento, executado na atualização do gráfico. | Kitploit
Ferramentas/GitHubGitHub/abraxas/superset-g3-v0-import-sql-plant
Autenticação e AutorizaçãoEscalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebPapers e PesquisaLabs e Prática

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHubabraxas/superset-g3-v0-import-sql-plant

superset-g3-v0-import-sql-plant

Prova de conceito de laboratório para uma falha de autorização no Apache Superset 6.1.0, em que um editor de dashboard com perfil Gamma insere SQL de dataset por meio da importação de dashboard v0 sem versionamento, executado na atualização do gráfico.

Ver Repositório
15há 1 diaAinda não 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

Um colega com uma conta normal de editor de dashboard pode esconder a sua própria consulta à base de dados dentro de um gráfico em que outras pessoas já confiam. Da próxima vez que alguém abrir esse gráfico, a consulta é executada contra a ligação de dados da empresa. Podem ler tabelas às quais nunca lhes foi dado acesso. Não precisam da permissão extra "executar o meu próprio SQL" que deveria controlar isto. Não conseguem registar um novo login de armazém de dados e não conseguem executar INSERT ou DELETE através deste caminho do gráfico.

Classe: Privilégio residual Alcance: Remoto

Apache Superset 6.1.0 (c83fb2bb) - Apache Software Foundation

O Gamma predefinido tem can_write em Dashboard, pelo que POST /api/v1/dashboard/import/ está na matriz. O JSON não-ZIP não tem metadata.yaml, pelo que o despachante tenta v1 e depois recorre à v0 sem versão. decode_dashboards reconstitui SqlaTable. import_dataset procura por table_name + schema + database_id (a partir de params.database_name) e datasource.override(i_datasource) copia export_fields, incluindo sql, sem raise_for_access e sem escrita em Dataset. POST /api/v1/chart/data compila então esse SQL como o FROM virtual na ligação analítica do dataset.

SQL Gamma sem sql_lab. O PUT REST de Dataset continua 403. O ZIP v1 continua vazio.

IDainda sem CVE
ClassePrivilégio residual (residual de CVE-2026-23982 / CVE-2024-26016)
AlcanceRemoto (HTTP autenticado; Gamma predefinido)
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
ProdutoApache Superset
Afetado6.1.0 (c83fb2bb1dcfac41ac51bcebd82471f4a7180d18); GitHub Latest GA na altura da investigação
AutenticaçãoGamma predefinido (can_write em Dashboard). Não é não autenticado. Não é Admin (fora do âmbito).
LicençaGNU Affero GPL v3.0
Laboratórioapenas 127.0.0.1

O que um atacante consegue fazer

Requer uma conta Gamma (ou qualquer conta com escrita em Dashboard) e um dataset que possa mais tarde representar num gráfico: o mesmo table_name + schema numa Database cujo database_name esteja no JSON params. A concessão complementar é sobre o objeto dataset, não sobre todas as tabelas que o SQL plantado nomeia. O raise_for_access de chart/data é ao nível do objeto datasource (datasource_access / schema / owner). get_from_clause apenas recusa has_mutation().

PrivilégioMétodo / sinkRecon / integridade / disponibilidadeComprovado em laboratório ou inferido
Sobrescrever o SQL virtual de um dataset com nome correspondenteGamma POST /api/v1/dashboard/import/ JSON não-ZIP; v0 import_dataset datasource.override copia export_fields incluindo sqlIntegridade (dataset.sql)Comprovado em laboratório. Import 200; dataset.sql = SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness
Executar esse SQL na URI analítica do datasetPOST /api/v1/chart/data após o plant; get_from_clause envolve o sql armazenado como TextAsFromRecon (SELECT em qualquer tabela que o usuário da URI possa ler)Comprovado em laboratório. 200; compilado FROM (SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness) AS virtual_table
Ocultar a consulta num gráfico que outros usuários autorizados já têm abertoMesmo plant; proprietários / outros principais com datasource_access executam ao atualizarIntegridade + recon (outras pessoas executam o plant)Inferido. O laboratório Gamma já tinha a permissão, então auto-executou
Quebrar dashboards que usavam o SQL antigoSubstituir o sql da tabela física por um SELECT do atacanteDisponibilidadeInferido
Negativo: execução no SQL LabPOST /api/v1/sqllab/execute/n/aComprovado em laboratório. 403
Negativo: sobrescrita REST de DatasetPUT /api/v1/dataset/{id} com sqln/aComprovado em laboratório. 403; sql permaneceu vazio (irmão de CVE-2026-23982)
Negativo: ZIP v1 com metadata.yamlmesmo endpoint de import, pacote ZIPn/aComprovado em laboratório. 200; sql permaneceu vazio (classe CVE-2024-26016)

Fechado sobre este resíduo: import não autenticado; registrar uma nova URI de Database (o import de dataset v0 não cria a conexão; a ausência de params.database_name resulta em DatabaseNotFoundError); DML através de chart/data (has_mutation()); Gamma criando gráfico de um dataset que não pode ler (403); um table_name único recém-inserido (PVM criado, não anexado ao Gamma). Não é RCE. Não é Admin. A separação do warehouse em produção limita o SELECT ao usuário daquela URI. A URI analítica do laboratório era o mesmo Postgres dos metadados, então o acesso entre tabelas, incluindo ab_user, é inferido, não verificado por um segundo oráculo.

Como eu encontrei

Fixe a versão do Apache Superset em 6.1.0. Admin é equivalente ao SO e está fora do escopo. Procurei resíduos contra a própria matriz de papéis do Apache: Gamma, Alpha, sql_lab, convidado embutido, Public.

A onda 6.0.0 já fechou sqlExpression em chart/data (CVE-2026-23980), SQL REST de Dataset (CVE-2026-23982) e DO $$ / EXPLAIN ANALYZE no SQL Lab (CVE-2026-23984). A autorização de import para ZIP versionado é CVE-2024-26016. O v0 não versionado ainda é o último em command_versions porque "os arquivos não são versionados."

import_ no Dashboard mapeia para escrita. JSON não-ZIP é {filename: bytes} sem metadata.yaml. O dispatcher tenta v1, captura IncorrectVersionError, executa v0. decode_dashboards transforma __SqlaTable__ num modelo ativo. import_dataset procura e sobrescreve. export_fields inclui sql. No momento da consulta, o SQL armazenado é tratado como confiável: get_from_clause após has_mutation().

Caminhos errados já registrados: tratar o ZIP v1 como o resíduo (sql permaneceu vazio); PUT REST de Dataset (403); SQL Lab como Gamma (403); inflar para qualquer objeto Database (v0 não registra uma URI); um reverse shell. Teatro. A testemunha é o FROM virtual.

Laboratório

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

ou:

cd lab
./run.sh
Baixar ferramenta