Next.js中间件权限绕过漏洞 CVE-2025-29927

admin 2025年4月14日11:10:36评论13 views字数 2676阅读8分55秒阅读模式
什么是Next.js?

Next.js 是由 Vercel 开发的基于 React 的现代 Web 应用框架,具备前后端一体的开发能力,广泛用于开发 Server-side Rendering (SSR) 和静态站点生成(SSG)项目。Next.js 支持传统的 Node.js 模式和基于边缘计算(Edge Function)的运行模式,适用于轻量、高性能的服务逻辑。

首先百度,这是个啥玩意,找到官网,进入看看
Next.js中间件权限绕过漏洞 CVE-2025-29927
官网链接:
https://www.nextjs.cn/learn/basics/create-nextjs-app?utm_source=next-site&utm_medium=homepage-cta&utm_campaign=next-website
不用多说了,介绍得贼详细!
Next.js中间件权限绕过漏洞 CVE-2025-29927
环境搭建

1、部署Next.js

漏洞复现,首先需要搭建环境,刚好官网有入门教程,按照教程走起!

Next.js中间件权限绕过漏洞 CVE-2025-29927

首先安装Node.js ,下载链接:

https://nodejs.org/en/
Next.js中间件权限绕过漏洞 CVE-2025-29927

安装完Node.js,由于我是windows系统,按照教程继续安装Git Bash,并运行

Next.js中间件权限绕过漏洞 CVE-2025-29927
Next.js中间件权限绕过漏洞 CVE-2025-29927

至此,关闭官网教程,下一步安装符合漏洞版本的Next.js,漏洞版本如下:

11.1.4 <= Next.js <= 13.5.6
14.0.0 <= Next.js <= 14.2.24
15.0.0 <= Next.js <= 15.2.2

有请ChatGPT,有AI真好

Next.js中间件权限绕过漏洞 CVE-2025-29927

直接复制如下命令,安装14.1.1

npm install next@14.1.1

安装完成

Next.js中间件权限绕过漏洞 CVE-2025-29927

然后运行

npm install

启动Next.js项目

npm run dev

启动时可能出现如图报错

Next.js中间件权限绕过漏洞 CVE-2025-29927

问题抛给GPT解决

Next.js中间件权限绕过漏洞 CVE-2025-29927

完善配置文件 package.json 

{  "dependencies": {    "next": "^14.1.1"  },  "scripts": {  "dev": "next dev",  "build": "next build",  "start": "next start"  }}

再次启动,出现新的报错

Next.js中间件权限绕过漏洞 CVE-2025-29927

问题再次抛给GPT

Next.js中间件权限绕过漏洞 CVE-2025-29927

继续完善

Next.js中间件权限绕过漏洞 CVE-2025-29927

成功启动

Next.js中间件权限绕过漏洞 CVE-2025-29927

2、配置利用场景

#赛博昆仑漏洞通告https://mp.weixin.qq.com/s/L43SBRSlQLSfCtYDnfg2SQ

近日,赛博昆仑CERT监测到Next.js 中间件认证绕过漏洞(CVE-2025-29927)的漏洞情报。当配置为使用中间件进行身份验证和授权时,未经过身份认证的攻击者可以绕过Next.js 应用程序中的授权检查。

把配置的任务交给GPT

Next.js中间件权限绕过漏洞 CVE-2025-29927

首先创建中间件middleware.js ,定义受保护的路径。放在根目录,与package.json同级

import { NextResponse } from "next/server";// 定义受保护的路径const protectedRoutes = ["/dashboard""/admin"];export function middleware(req) {  const { pathname } = req.nextUrl;  // 获取用户的身份令牌(可以从 Cookie、Session 或 Headers 获取)  const token = req.cookies.get("authToken")?.value;  // 如果是受保护路径但没有 token,则重定向到登录页  if (protectedRoutes.includes(pathname) && !token) {    return NextResponse.redirect(new URL("/login", req.url));  }  return NextResponse.next();}// 只应用于某些路由export const config = {  matcher: ["/dashboard/:path*""/admin/:path*"], // 保护的路由};

其次,创建一个保护页面dashboard.js,放到pages目录下

export default function Dashboard() {  return <h1>这是受保护的 Dashboard 页面</h1>;}

最后,设置登录逻辑,创建一个login页面 (其实,可以不用,顶多404呗,不影响复现)

import { useRouter } from "next/navigation";export default function LoginPage() {  const router = useRouter();  const handleLogin = async () => {    // 假设用户成功登录    document.cookie = "authToken=your_token; path=/"// 设置身份验证 Cookie    router.push("/dashboard"); // 跳转到受保护页面  };  return (    <div>      <h1>请登录</h1>      <buttononClick={handleLogin}>登录</button>    </div>  );}

一切就绪,测试一下,访问dashboard页面,没有授权,正常跳转到登录页面

Next.js中间件权限绕过漏洞 CVE-2025-29927

漏洞复现

#微步漏洞通告https://mp.weixin.qq.com/s/i9fckopkdJzS8IYII8qgNg

当在 next.js应用中使用middleware 时,在请求头中加入特定的 x-middleware-subrequest 请求头即可绕过 middleware 中的逻辑。例如当使用 middleware 进行身份验证与授权,可利用该漏洞绕过身份验证。

那去网上搜一下公开的POC,大厂CERT漏洞公告通常不会给出来,复现截图关键部位基本都打码,需要自己去网上搜寻一下,以下是我找到的公开POC

https://projectdiscovery.io/blog/nextjs-middleware-authorization-bypass

如图,不同版本,POC还不太一样

Next.js中间件权限绕过漏洞 CVE-2025-29927

根据我的版本,找到POC

x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware

先发一个正常的包,返回307跳转

Next.js中间件权限绕过漏洞 CVE-2025-29927

使用POC,返回200,未授权访问dashboard受保护的页面,漏洞复现完成!

Next.js中间件权限绕过漏洞 CVE-2025-29927
Next.js中间件权限绕过漏洞 CVE-2025-29927

原文始发于微信公众号(仇辉攻防):【漏洞复现】Next.js中间件权限绕过漏洞 CVE-2025-29927

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月14日11:10:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Next.js中间件权限绕过漏洞 CVE-2025-29927https://cn-sec.com/archives/3949877.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息