【首发1day详情】CVE-2024-51479 全网首发漏洞复现分析+POC (Next.js权限绕过)

embedded/2024/12/29 5:25:39/

绪论

如果各位师傅觉得有用的话,可以给我点个关注~~ 如果师傅们有什么好的建议也欢迎联系我~~ 感谢各位师傅的支持~~

46efdf9b0f46665c0f1841f400539a3f.png

正文部分

声明

  1. 1. 本漏洞根据网上的资料和我自己的理解去复现,并不确定就是cve-2024-51479的最终细节

  2. 2. 尝试在互联网进行复现,虽然可以成功复现,但是案例并不算很多,所以不能保证为漏洞的最终细节

  3. 3. 只在漏洞应用上进行了漏洞的理解和分析,没有基于源码进行探究,如果有问题希望各位师傅指出

  4. 4. 对于Next.js,也是在发现漏洞详情后进行研究的,可能存在一些欠缺,如果有问题欢迎提出

起因

在刷推特的时候看到的有关一个next.js的未授权访问漏洞

创建了一个列表,主要是有关POC和漏洞情报的,师傅们感兴趣可以加一下,有推荐的up主也可以联系我添加

情报列表:https://x.com/i/lists/1863661568082522557 82f765e93f3241a6ece0de9116912bd3.png

于是就进行了搜索,发现有个师傅分享了一个可疑的POC,就想着去学习一下next.js有关的内容,顺便看看有没有机会进行一下漏洞POC的验证

8bebf0b9a077ce7691f7620a6c68482d.png


Next.js的应用常见

15min快速上手nextjs_哔哩哔哩_bilibili[2]

简单来说Next.js和Node.js作用有点像,可以作为后端服务器进行数据的返回处理,同时可以将其REACT进行结合,其可以编写后端的代码,并且后端部分的代码是无法在前端看见的,对于一些单页面应用(SPA)的安全性有很大的提高(简单点来说就是大多数都是通过js完成的应用,提供一定的安全性,不然全都的代码都在前端进行显示,存在很大的安全问题)

简单来说,Next.js不仅是一个前端框架,它还提供了强大的后端功能,使你能够在一个统一的代码库中同时编写前后端代码。这种全栈开发模式结合了Node.js的强大后端能力和React的优秀前端体验,有效地提升了单页面应用的安全性和性能

Next.js作为后端功能的时候的模式

javascript">https://juejin.cn/post/7436395564998426664

网上的教程讲的相对复杂,我将其进行了分类,本质上就分为两类,

一类是html在前端才进行渲染的前后端分离的模式:CSR模式

另一类是直接返回渲染好的html的模式:SSR模式,CSR模式,ISR模式

前后端分离模式(CSR模式)

这个最好理解,就是我们常见的前后端分离的框架,前端通过js去请求后端接口,然后再进行数据渲染,所以他的鉴权本质上和后端的api接口才有关!!

直接返回渲染好的html

SSR模式

简单来说就是在每个请求后,都会在后端渲染一个html页面,进行返回

SSG模式

简单来说在网站搭建的时候就会生成html静态页面了,在后续请求的时候是不会进行改变的

ISR模式

简单来说就是将SSR和SSG进行了结合,在部署的时候就生成了html页面(SSG),在后续会根据条件或者时间进行html页面的重新生成并返回(SSR)

漏洞POC

/admin?__nextLocale=anything# 其中/admin为网站对应的后台页面
# 个人测试anything可以是任何东西,但是不能和后台路径一样,也就是不能为
/admin?__nextLocale=admin

漏洞的触发条件

1. 基于路径名的中间件中执行授权(SSG,ISR的一种形式)
2. 9.5.5 < Next.js <14.2.14

漏洞的描述

Next.js 是一个用于构建全栈 Web 应用程序的 React 框架。在受影响的版本中,如果 Next.js 应用程序正在基于路径名的中间件中执行授权,则可能会绕过应用程序根目录下的页面的此授权,允许未经授权访问Next.js应用程序中的根级页面,这些页面本应受到授权检查的保护

javascript">FOFA: app="NEXT.JS"

92f2d00f796305c0d5ade540769172ca.png


漏洞复现

访问网站的后台页面

https://xxx.xxx.xxx/admin[3]

发现存在鉴权,会直接进行返回到/auth页面

a688c72e861810fb22d1dbdf22503281.png

使用poc进行访问

javascript">https://xxx.xxx.xxx/admin?__nextLocale=111

9c167408b79603266979c1c6a72f8bcd.png

对该漏洞的理解

简而言之:这个漏洞能绕过前端路径的鉴权,如果其直接返回了完整的html页面,危害就会很大,能获取到全部的数据,又或者采用的是前后端分离的模式(CSR),如果存在前端路径的鉴权能够用该方式进行前端鉴权的绕过(有很多没有前端路径的鉴权,就不需要使用该方法了,直接访问也是可以正常后台页面的),但是能否存在有效数据,就和其后端鉴权有关了,但是可以访问后台页面,可以更方便的测试接口(例如绕过vue路由守卫!),如果api有鉴权,那么这个漏洞危害很有限,所以遇到next.js的站点还是可以试试。

漏洞的局限性

允许未经授权访问Next.js应用程序中的根级页面,这些页面本应受到授权检查的保护

该漏洞的危害是可以访问Next.js应用程序中的根级页面,也许这些页面本来是有鉴权的,但是这并不意味着你可以获取到数据,所以网站使用不同的Next.js的模式有着很大的关系,如果使用的CSR模式,类似常规的前后端分离的结构,那你本质上就只是绕过了前端的检验而已,并没有绕过他的接口的鉴权,所以也不一定存在未授权的问题!!

5fb542791857f56ded0e8b46392a190b.png

危害体现(个人感觉和next.js的使用方式有关)

1. 直接返回了HTML页面,并且只使用路径作为鉴权(危害最大)(SSR,SSG,ISR模式)

他将路径作为鉴权的方式,当可以访问这个页面的时候,服务器就会渲染出好的html直接返回,就不存在后续的接口的鉴权,所以绕过了路径作为鉴权,就是绕过了全部的鉴权,这种的危害是最大的,能直接获取到完整的数据

javascript">http://xxx.xxx.xxx/admin/blog?__nextLocale=anything

390e4978f7a5af716f3b25dfdb79cd7f.png

0e8fd8c8b4936719ebbc66639b4d7694.png

2. 本身就存在漏洞(方便测试)(CSR模式,但是本身api存在未授权)
javascript">http://xxx.xxx.xxx/admin/users?__nextLocale=anything

    刚访问的时候为一个基础的模板

cf711c0ed43823741554c75721659d6b.png

485a34eb9fb25be217779640d051c29b.png

访问后会请求接口

7e74b1fe2132b072f78cd7bbb188044a.png

最后渲染数据

6cf82c9293149228666b4e7b98972012.png

3. 只是绕过了前端(虚假的未授权)(CSR模式,但是本身api不存在未授权) 
b4691e9476ce0e1f3d2da6639ec06c9f.png
fb84e6df9a0b6a87ee4852682816015f.png
4. 本身对前端路由就没有鉴权

这种情况访问/admin,和/admin?__nextLocale=anything 的效果是一样的,都能访问,这种情况就和漏洞没有关系了,还得看他的api是否鉴权

javascript">https://xxx.xxx.xxx/admin

3628ab41e61c6c01cbaa15d32e7e2e41.png

javascript">https://xxx.xxx.xxx/admin?__nextLocale=anything

a67852f30c6c686093045496f94d22f5.png

引用链接

[1] https://x.com/i/lists/1863661568082522557https://x.com/i/lists/1863661568082522557
[2] 15min快速上手nextjs_哔哩哔哩_bilibili: https://www.bilibili.com/video/BV14t4y187Kk/?buvid=XUC54AEC021C181D8552EB6AED44230A3865A&is_story_h5=false&mid=XUTX26WvADq3O7z3v4emRg%3D%3D&p=1&plat_id=168&share_from=ugc&share_medium=android&share_plat=android&share_session_id=b0c135c5-91ab-4a30-85a6-1a74c45a7ab2&share_source=WEIXIN&share_tag=s_i&spmid=main.my-history-search-result.option-more.0×tamp=1734708206&unique_k=5AAYtYt&up_id=16948004

知识星球

具体的星球介绍可以看一下这里~~

WingBy小密圈,他来了!

f90c0bc5a25021f714c6f11e940991f5.png

注意:帮会和星球是为了考虑大家的方便习惯,福利和内容是一致的,后续更新也是一致的~~~只需要进行一次付费就可以啦~~(建议还是使用帮会)

项目合作

有甲方大大,或者厂商师傅,或者其他的项目,欢迎咨询,我以及团队始终将客户的需求放在首位,确保客户满意度~~

目前主要的服务范围:

1. 渗透测试、漏洞扫描

2. 代码审计

3. 红蓝攻防

4. 重保以及其他攻防类项目

5. 红队武器化开发以及蓝队工具开发

6. CTF相关赛事的培训等

7. cnvd,cnnvd,edu,cve等证书

8. nisp,cisp等证书


http://www.ppmy.cn/embedded/148935.html

相关文章

C-5 B样条曲线

C-5 B样条曲线 N i , 0 ( u ) { 1 , u i ≤ u < u i 1 0 , o t h e r s N_{i,0}(u)\left\{\begin{matrix} 1 , \quad u_i\le u <u_{i1} \\0 ,\quad others \qquad \quad\end{matrix}\right. Ni,0​(u){1,ui​≤u<ui1​0,others​ N i , p ( u ) u − u i u i p −…

机器学习之PCA降维

主成分分析&#xff08;PCA&#xff0c;Principal Component Analysis&#xff09; 主成分分析&#xff08;PCA&#xff09;是一种常见的无监督学习技术&#xff0c;广泛应用于数据降维、数据可视化以及特征提取等任务。PCA的目标是通过线性变换将数据从高维空间映射到低维空间…

postgresql ERROR: cannot drop the currently open database

postgresql ERROR: cannot drop the currently open database 解释&#xff1a; 这个错误表明你正在尝试删除或者切换当前正在使用的数据库。在PostgreSQL中&#xff0c;一个数据库对应着一个进程&#xff0c;当一个数据库处于打开状态时&#xff0c;你不能直接删除或者切换它…

[ThinkPHP]5.0.23-Rce 1

[ThinkPHP]5.0.23-Rce 1 根据题目知道这是一个5.0.23的PHP RCE&#xff0c;话不多说直接上扫描器 检测出Payload url地址&#xff1a; ?scaptcha&test-1 Post表单参数: _method__construct&filter[]phpinfo&methodget&server[REQUEST_METHOD]1HackBar构造p…

软考高项,项目整合管理

定义 项目整合管理包括识别、定义、组合、统一和协调项目管理过程组的各个过程和项目管理活动。在项目管理中&#xff0c;整合管理兼具统一、合并、沟通和建立联系的性质&#xff0c;项目整合管理贯穿项目始终。项目整合管理的目标包括&#xff1a;①资源分配&#xff1b;②平衡…

Yolo11改策略:卷积改进|SAC,提升模型对小目标和遮挡目标的检测性能|即插即用

摘要 一、论文介绍 本文参考的论文主要介绍了DetectoRS模型&#xff0c;一个高性能的目标检测模型。DetectoRS通过引入递归特征金字塔&#xff08;RFP&#xff09;和可切换空洞卷积&#xff08;SAC&#xff09;两大创新点&#xff0c;显著提升了目标检测的精度。尽管原文并未…

PCL点云库入门——PCL库点云滤波算法之直通滤波(PassThrough)和条件滤波(ConditionalRemoval)

0、滤波算法概述 PCL点云库中的滤波算法是处理点云数据不可或缺的一部分&#xff0c;它们能够有效地去除噪声、提取特征或进行数据降维。例如&#xff0c;使用体素网格滤波&#xff08;VoxelGrid&#xff09;可以减少点云数据量&#xff0c;同时保留重要的形状特征。此外&#…

计算机图形学知识点汇总

一、计算机图形学定义与内容 1.图形 图形分为“图”和“形”两部分。 其中&#xff0c;“形”指形体或形状&#xff0c;存在于客观世界和虚拟世界&#xff0c;它的本质是“表示”&#xff1b;而图则是包含几何信息与属性信息的点、线等基本图元构成的画面&#xff0c;用于表达…