
Exploit-Skript für CVE-2026-5147, das boolesche und zeitbasierte Blind-SQL-Injection gegen MySQL-Schnittstellen durchführt, um Version, Datenbank, Schema und Daten zu extrahieren. Enthält Kalibrierung, Dump-Unterbefehle und konfigurierbare Payloads.
Für autorisierte Schwachstellenverifizierung und Übungsplatz-Training: Führt gegen eine SQL-injizierbare Schnittstelle MySQL Boolesche Blind-SQL-Injection (EXP / INSTR oder ASCII) und zeitbasierte Blind-SQL-Injection (if + ascii + sleep) durch, optional mit Abruf von Version, Datenbankname, Tabellenstruktur und Daten (Verhalten ähnlich wie --dump von sqlmap).
Nicht auf nicht autorisierten Systemen verwenden.
pip install requests
CURRENT_USER + INSTR-Sonden an den Injektionspunkt und unterscheidet mithilfe des Geschäftsfelds in der JSON-Antwort (Standard code) zwischen „wahr / falsch"-Zweigen.-p instr oder ascii).--skip-calibrate: Überspringt die obige Kalibrierung; errät weiterhin über Boolesche + JSON-Felder, wechselt nicht automatisch zur zeitbasierten Methode (geeignet für lokales Debugging).Der JSON-Feldname und -Wert für „wahr" können über --json-code-field, --json-code-true angepasst werden (muss mit der Ziel-API übereinstimmen).
# Nur Domain: Pfad gemäß Standard zusammensetzen (siehe DEFAULT_API_PATH im Skript)
python cve-2026-5147.py -u target.example.com
# HTTPS angeben, benutzerdefinierter Pfad und Injektionsparametername
python cve-2026-5147.py -u target.example.com --https --path /api/foo --param id
# Kompletter Datenbank-Dump (extrem viele Anfragen, mit Vorsicht verwenden)
python cve-2026-5147.py -u target.example.com dump
# Nur Tabellennamen-Strings abrufen, keine Daten exportieren
python cve-2026-5147.py -u target.example.com dump --schema-only
Fortschritt und Diagnoseinformationen gehen an stderr, die endgültige Zusammenfassung an stdout.
| Parameter | Beschreibung |
|---|---|
-u / --url | Ziel (Domain, host:port oder vollständige URL), Pflichtfeld |
--path | Pfad, der an den Host angehängt wird, wenn kein Pfad angegeben ist (Standard: Mandanten-API-Pfad) |
--https | Verwendet https, wenn kein Schema angegeben ist (Standard ergänzt http://) |
--param | Name des Injektionsparameters (Standard website) |
-p / --payload | Boolesches Fragment: instr oder ascii (zeitbasierte Blind-SQL-Injection fest if+ascii+sleep) |
--timeout | HTTP-Timeout (Sekunden); wird bei zeitbasierter Blind-SQL-Injection automatisch auf mindestens sleep+5 gesetzt |
--sleep | Sekunden für sleep() bei zeitbasierter Blind-SQL-Injection |
--time-floor | Als wahr werten: Gesamtdauer ≥ dieser Wert (Sekunden); Standard etwa sleep - 1 |
--json-code-field / --json-code-true | JSON-Feld und „wahr"-Wert, die vom Booleschen Seitenkanal gelesen werden |
--skip-calibrate | Sonden-Kalibrierung überspringen |
--only | version / database / both: nur Version, nur Datenbankname oder beides abrufen |
-H / -P | Zusätzliche Request-Header, zusätzliche Query-Parameter, wiederholbar |
Unter dem Unterbefehl dump gibt es außerdem --schema-only, --dump-out, --dump-row-limit, --dump-select usw., siehe python cve-2026-5147.py -h.
| Unterbefehl | Bedeutung |
|---|---|
info (Standard) | Ruft VERSION(), aktuellen Datenbanknamen DATABASE() ab (beeinflusst durch --only) |
dump | Ruft zusätzlich Tabellennamen der aktuellen Datenbank, Spaltennamen pro Tabelle und Zeilendaten ab (oder nur Schema, siehe --schema-only) |
main() zuerst calibrate_sqli_oracle, bei Fehlschlag effective_detect = "time" und bind_time_payload; im Zeitmodus dann calibrate_time_oracle.--json-code-field angeglichen (nicht mehr fest code).command wurde korrigiert: Der Standard-Unterbefehl ist info, nicht dump.Das Skript dient ausschließlich der Sicherheitsforschung und autorisierten Tests. Der Nutzer muss selbst sicherstellen, dass er die lokalen Gesetze und den Autorisierungsumfang der Zielumgebung einhält.