
Bu laboratuvar ortamını sıfırdan kendim oluşturdum. Next.js uygulaması içerisinde giriş, ana sayfa ve admin sayfalarını hazırladım. Middleware ile yetkilendirme mekanizmasını kurduktan sonra Burp Suite kullanarak CVE-2025-29927 zafiyetini kontrollü ortamda gösterdim.
在 Next.js 应用程序中,中间件会在请求到达应用程序之前运行,执行身份验证和授权等检查。
而在 CVE-2025-29927 漏洞中,由于特意添加的 x-middleware-subrequest HTTP 头,中间件在某些情况下会将请求视为已验证。这可能导致未经授权的用户访问受保护的页面。
在本项目中,我在使用 Docker 搭建的实验室环境中演示了影响 Next.js 应用程序的 CVE-2025-29927 漏洞。
实验室环境是我从零开始搭建的。我使用 Next.js 准备了 login、index 和 admin 页面。随后,我使用中间件为 admin 页面添加了权限控制。
我通过 Burp Suite 捕获 HTTP 请求,添加了 x-middleware-subrequest 头,并演示了绕过中间件检查、未经授权访问 admin 页面的过程。
.
├── pages
│ ├── admin.js
│ ├── index.js
│ └── login.js
├── middleware.js
├── Dockerfile
├── package.json
└── README.md
在运行项目之前,需要安装以下软件。
将代码仓库下载到您的计算机。
git clone https://github.com/berraesen/nextjs-middleware-auth-bypass-lab.git
进入该目录。
cd nextjs-middleware-auth-bypass-lab
构建 Docker 镜像。
docker build -t nextjs-auth-bypass .
启动容器。
docker run -d -p 3000:3000 --name nextjs-lab nextjs-auth-bypass
在浏览器中访问以下地址。
http://localhost:3000
项目中包含以下页面。
对 admin 页面的访问通过中间件进行控制。
首先,尝试通过浏览器访问 /admin 页面。
由于您没有权限,将被重定向到 login 页面。
使用 Burp Suite 捕获请求。
在请求中添加以下 HTTP 头。
x-middleware-subrequest: middleware
重新发送请求。
可以看到,当中间件检查被绕过时,可以访问 admin 页面。
安装完成后:
İstemci
│
▼
HTTP Request
│
▼
Next.js Middleware
│
├──────────────► Normal İstek
│ │
│ ▼
│ Yetki Kontrolü
│ │
│ ▼
│ Login Sayfasına Yönlendirme
│
▼
x-middleware-subrequest
Header Eklendi
│
▼
Middleware Kontrolü Atlandı
│
▼
Admin Sayfasına Erişim
建议将受影响的 Next.js 版本升级到最新版本,以修复此漏洞。
此外,不应仅依赖中间件进行授权,还应在服务器端实施额外的权限检查。