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

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

原创 fkalis fkalis 2024-12-22 05:50

绪论

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

正文部分

声明

1. 本漏洞根据网上的资料和我自己的理解去复现,并不确定就是cve-2024-51479的最终细节2. 尝试在互联网进行复现,虽然可以成功复现,但是案例并不算很多,所以不能保证为漏洞的最终细节3. 只在漏洞应用上进行了漏洞的理解和分析,没有基于源码进行探究,如果有问题希望各位师傅指出4. 对于Next.js,也是在发现漏洞详情后进行研究的,可能存在一些欠缺,如果有问题欢迎提出

起因

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

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

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

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

Next.js的应用常见

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

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

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

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

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应用程序中的根级页面,这些页面本应受到授权检查的保护

FOFA: app="NEXT.JS"

漏洞复现

访问网站的后台页面

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

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

使用poc进行访问

https://xxx.xxx.xxx/admin?__nextLocale=111

对该漏洞的理解

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

漏洞的局限性

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

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

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

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

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

http://xxx.xxx.xxx/admin/blog?__nextLocale=anything

2. 本身就存在漏洞(方便测试)(CSR模式,但是本身api存在未授权)

http://xxx.xxx.xxx/admin/users?__nextLocale=anything

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

访问后会请求接口

最后渲染数据

3. 只是绕过了前端(虚假的未授权)(CSR模式,但是本身api不存在未授权)

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

https://xxx.xxx.xxx/admin

https://xxx.xxx.xxx/admin?__nextLocale=anything

引用链接

[1]
https://x.com/i/lists/1863661568082522557
: https://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小密圈,他来了!

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

项目合作

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


目前主要的服务范围:


1. 渗透测试、漏洞扫描

2. 代码审计

3. 红蓝攻防

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

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

6. CTF相关赛事的培训等

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

8. nisp,cisp等证书