CVE-2025-29927复现

1.环境搭建

我是在ubuntu24.0.4.2虚拟机搭建的环境,网络模式为桥接模式
使用vulhub已有环境

git clone https://github.com/vulhub/vulhub.git

进入漏洞目录下

#/path/to/vulhub换成vulhub项目所在目录
cd /path/to/vulhub/next.js/CVE-2025-29927

执行命令启动一个基于 Next.js 15.2.2 的存在漏洞的应用

docker compose up -d

国内环境大概率会报错

Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded

这是被墙了,配个代理,我是让它直接使用物理机上的代理
创建systemd配置文件

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

写入以下内容

[Service]
Environment="HTTP_PROXY=http://192.168.3.3:7890"
Environment="HTTPS_PROXY=http://192.168.3.3:7890"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

192.168.3.3换成物理机的ip,7890换成你的代理端口,物理机上打开代理,重新执行docker compose up -d
拉取完成后就可以关闭代理了
访问3000端口,打开浏览器,地址栏输入 虚拟机ip:3000 重定向到登录界面
image
输入默认默认账号密码admin和password,可以成功登录并访问仪表盘,仪表盘在根路径,即 虚拟机ip:3000
image
没有合法用户名密码的话,直接访问根路径会被重定向到登录页面
至此,环境搭建完成

2.漏洞复现

我这里使用的构造请求的工具是谷歌浏览器的hackbar插件,在谷歌应用商店就能找到,不过要科学
在物理机浏览器访问 虚拟机ip:3000 被重定向到登录界面。F12打开开发者工具,打开hackbar,在URL那里输入 虚拟机ip:3000,点击MODIFY HEADER添加请求头x-middleware-subrequest,值为middleware:middleware:middleware:middleware:middleware
image
点击EXECUTE,进入仪表盘,看右上角,和正常登录不一样,没有用户名称,因为不是用合法用户登录进来的
image

3.漏洞修复

15.2.3版本的next.js已经修复了这个问题,可以把容器的next.js升级到15.2.3
在容器启动的情况下执行下列命令

#进入容器
docker exec -it <容器ID或名称> /bin/bash

#在容器内部升级
npm install next@15.2.3 --save-exact

#同步更新依赖
npm install react@latest react-dom@latest --save-exact

#清除缓存并重建
rm -rf .next && npm run build

#确认升级完成,输出应为15.2.3
npm list next

#ctrl+D退出容器,强制重建
docker-compose up -d --force-recreate
posted @ 2025-05-05 18:30  HAITINGCHEN  阅读(253)  评论(0)    收藏  举报