绪论
如果各位师傅觉得有用的话,可以给我点个关注~~ 如果师傅们有什么好的建议也欢迎联系我~~ 感谢各位师傅的支持~~
正文部分
声明
1. 本漏洞根据网上的资料和我自己的理解去复现,并不确定就是cve-2024-51479的最终细节
2. 尝试在互联网进行复现,虽然可以成功复现,但是案例并不算很多,所以不能保证为漏洞的最终细节
3. 只在漏洞应用上进行了漏洞的理解和分析,没有基于源码进行探究,如果有问题希望各位师傅指出
4. 对于Next.js,也是在发现漏洞详情后进行研究的,可能存在一些欠缺,如果有问题欢迎提出
起因
在刷推特的时候看到的有关一个next.js的未授权访问漏洞
情报列表:https://x.com/i/lists/1863661568082522557创建了一个列表,主要是有关POC和漏洞情报的,师傅们感兴趣可以加一下,有推荐的up主也可以联系我添加
于是就进行了搜索,发现有个师傅分享了一个可疑的POC,就想着去学习一下next.js有关的内容,顺便看看有没有机会进行一下漏洞POC的验证
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"
漏洞复现
访问网站的后台页面
https://xxx.xxx.xxx/admin[3]
发现存在鉴权,会直接进行返回到/auth页面
使用poc进行访问
javascript">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直接返回,就不存在后续的接口的鉴权,所以绕过了路径作为鉴权,就是绕过了全部的鉴权,这种的危害是最大的,能直接获取到完整的数据
javascript">http://xxx.xxx.xxx/admin/blog?__nextLocale=anything
2. 本身就存在漏洞(方便测试)(CSR模式,但是本身api存在未授权)
javascript">http://xxx.xxx.xxx/admin/users?__nextLocale=anything
刚访问的时候为一个基础的模板
访问后会请求接口
最后渲染数据
3. 只是绕过了前端(虚假的未授权)(CSR模式,但是本身api不存在未授权)
4. 本身对前端路由就没有鉴权
这种情况访问/admin,和/admin?__nextLocale=anything 的效果是一样的,都能访问,这种情况就和漏洞没有关系了,还得看他的api是否鉴权
javascript">https://xxx.xxx.xxx/admin
javascript">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等证书