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 重定向到登录界面

输入默认默认账号密码admin和password,可以成功登录并访问仪表盘,仪表盘在根路径,即 虚拟机ip:3000

没有合法用户名密码的话,直接访问根路径会被重定向到登录页面
至此,环境搭建完成
2.漏洞复现
我这里使用的构造请求的工具是谷歌浏览器的hackbar插件,在谷歌应用商店就能找到,不过要科学
在物理机浏览器访问 虚拟机ip:3000 被重定向到登录界面。F12打开开发者工具,打开hackbar,在URL那里输入 虚拟机ip:3000,点击MODIFY HEADER添加请求头x-middleware-subrequest,值为middleware:middleware:middleware:middleware:middleware

点击EXECUTE,进入仪表盘,看右上角,和正常登录不一样,没有用户名称,因为不是用合法用户登录进来的

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

浙公网安备 33010602011771号