Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-33149-PoC — Prova de conceito de exploit para CVE-2026-33149, uma injeção de cabeçalho Host no Tandoor Recipes que permite envenenamento de link de convite e envenenamento de cache. Inclui módulos para aceitação de host, paginação, esquema e envenenamento de convite. | Kitploit
Ferramentas/GitHubGitHub/filipegaudard/cve-2026-33149-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebPhishingSegurança WebTestes de Penetração
GitHubfilipegaudard/cve-2026-33149-poc

CVE-2026-33149-PoC

Prova de conceito de exploit para CVE-2026-33149, uma injeção de cabeçalho Host no Tandoor Recipes que permite envenenamento de link de convite e envenenamento de cache. Inclui módulos para aceitação de host, paginação, esquema e envenenamento de convite.

Ver Repositório
28há 6 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

CVE-2026-33149 — Injeção de Cabeçalho de Host no Tandoor Recipes

CVE-2026-33149 GHSA CVSS 8.1 CWE-644

Affected Version Responsible Disclosure


Resumo

O Tandoor Recipes define ALLOWED_HOSTS = '*' por padrão em settings.py, fazendo com que o Django aceite qualquer valor no cabeçalho HTTP Host sem validação. A aplicação usa request.build_absolute_uri() para gerar URLs absolutas em vários contextos sensíveis à segurança. Um atacante que consiga enviar requisições com um cabeçalho Host forjado pode redirecionar todas as URLs geradas pelo servidor para um domínio controlado pelo atacante.

O impacto mais crítico é o envenenamento de links de convite: quando um administrador cria um convite de usuário, o e-mail enviado pelo servidor contém um link apontando para o domínio do atacante. A vítima clica em um e-mail de aparência legítima, o token do convite é exfiltrado, e o atacante o utiliza para sequestrar o fluxo de provisionamento de conta.

Detalhes da Vulnerabilidade

CampoValor
ID CVECVE-2026-33149
GHSAGHSA-x636-4jx6-xc4w
CWECWE-644 — Neutralização Incorreta de Cabeçalhos HTTP para Sintaxe de Script
CVSS v3.18.1 ALTA — AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Versão AfetadaTandoor Recipes ≤ 2.5.3
FornecedorTandoorRecipes/recipes

Mapeamento MITRE ATT&CK

ID da TécnicaNomeRelevância
T1557Adversário no MeioManipulação de URLs geradas pelo servidor para redirecionar tráfego
T1566.002Phishing: Link de SpearphishingE-mail de convite envenenado contém link controlado pelo atacante

Análise da Causa Raiz

1. ALLOWED_HOSTS com Curinga

Arquivo: recipes/settings.py:118

ALLOWED_HOSTS = extract_comma_list('ALLOWED_HOSTS', '*')  # default: wildcard

O ALLOWED_HOSTS do Django é uma medida de segurança que valida o cabeçalho Host contra uma lista de permissões. O curinga '*' desativa essa validação completamente, permitindo qualquer valor arbitrário.

2. Geração Insegura de URLs em E-mails de Convite

Arquivo: cookbook/serializer.py:1852-1853

message += _('Click the following link to activate your account: ') + self.context[
    'request'].build_absolute_uri(
    reverse('view_invite', args=[str(obj.uuid)])
) + '\n\n'

request.build_absolute_uri() constrói URLs usando request.get_host(), que retorna o valor bruto do cabeçalho Host quando ALLOWED_HOSTS não o restringe. O UUID do convite — um token secreto — é incorporado na URL que agora aponta para o atacante.

3. Superfícies Adicionais Afetadas

  • Paginação da API — As classes de paginação do DRF usam build_absolute_uri() para URLs next/previous
  • Esquema OpenAPI — O gerador de esquema o usa para URLs de servidor
  • Envenenamento de Cache — Implantações com proxies de cache correm o risco de servir URLs envenenadas a todos os usuários a partir de uma única requisição

Fluxo do Ataque

┌──────────┐     ① Requisição Forjada         ┌─────────────────┐
│ Atacante │ ──────────────────────────────→│  Servidor Tandoor│
│          │   Host: attacker.com           │  ALLOWED_HOSTS=*│
└──────────┘                                └────────┬────────┘
                                                     │
                                          ② build_absolute_uri()
                                             usa "attacker.com"
                                                     │
                                                     ▼
                                            ┌────────────────┐
                                            │  Servidor SMTP │
                                            └────────┬───────┘
                                                     │
                                       ③ E-mail com link envenenado:
                                       http://attacker.com/invite/<uuid>
                                                     │
                                                     ▼
                                            ┌────────────────┐
                                            │    Vítima      │
                                            │  (clica no link)│
                                            └────────┬───────┘
                                                     │
                                          ④ UUID enviado ao atacante
                                                     │
                                                     ▼
                                            ┌────────────────┐
                                            │   Atacante     │
                                            │ usa o UUID no │
                                            │ servidor real  │
                                            └────────────────┘

Prova de Conceito

Requisitos

  • Python 3.8+
  • Biblioteca requests
pip install requests

Uso

# Executar todos os módulos de validação com autenticação básica
python3 poc.py --target http://localhost:8085 \
               --basic-auth admin:password \
               --attacker evil.com \
               --module all

# Executar todos os módulos com cookies de sessão
python3 poc.py --target http://target:8085 \
               --session <sessionid> \
               --csrf <csrftoken> \
               --attacker evil.com \
               --module all

# Apenas envenenamento de link de convite
python3 poc.py --target http://target:8085 \
               --session <sessionid> \
               --csrf <csrftoken> \
               --attacker evil.com \
               --module invite \
               --email [email protected] \
               --group-id 1

Módulos

MóduloDescrição
host-acceptVerifica se o alvo aceita cabeçalhos Host arbitrários (ALLOWED_HOSTS = '*')
paginationConfirma que as URLs de paginação da API refletem o domínio injetado
schemaConfirma que as URLs de servidor do esquema OpenAPI refletem o domínio injetado
inviteCria um link de convite envenenado — o vetor de ataque principal
allExecuta todos os módulos sequencialmente

Verificação Manual (curl)

1. Aceitação do Cabeçalho Host

curl -s -o /dev/null -w "%{http_code}" \
  http://TARGET:8085/api/user/ \
  -H "Host: attacker.com" \
  -u "admin:password"
# Esperado: 200 (vulnerável) | 400 (corrigido)

2. Reflexão da URL de Paginação

curl -s "http://TARGET:8085/api/recipe/?page_size=1" \
  -H "Cookie: sessionid=SESSION; csrftoken=CSRF" \
  -H "Host: evil.com" \
  -H "Accept: application/json"
# Esperado: {"next": "http://evil.com/api/recipe/?page=2&page_size=1", ...}
Baixar ferramenta