专为CVE-2025-55182安全研究与CTF挑战设计的故意存在漏洞的Next.js应用
⚠️ 仅用于教育目的:这是一个故意存在漏洞的应用程序,设计用于授权的安全研究和CTF挑战。请勿在未经授权的系统上使用这些技术。
一个故意存在漏洞的 Next.js 15.1.6 应用程序,演示了 CVE-2025-55182(React2Shell)——React Server Components 中的一个严重远程代码执行漏洞。专为安全研究员、渗透测试人员和学生在安全、隔离的环境中练习利用技术而构建。
CVE-2025-55182,也称为 React2Shell,是一个影响 Next.js 中 React Server Components 的严重远程代码执行 (RCE) 漏洞。
该漏洞源于 React Server Actions 中对序列化数据的不当处理。攻击者可以构造恶意负载,绕过验证并在服务器上执行任意代码,通过:
开始之前,请确保已安装以下内容:
docker --version
docker-compose --version
git --version
# 1. 克隆仓库
git clone https://github.com/Machine-farmer/PunchingBag-for-React2Shell.git
cd PunchingBag-for-React2Shell
# 2. 使用 Docker 构建并运行
docker-compose up --build
# 3. 访问应用程序
# 在浏览器中打开:http://localhost:3000
# 1. 克隆仓库
git clone https://github.com/Machine-farmer/punchingbag-cve-2025-55182.git
cd punchingbag-cve-2025-55182
# 2. 安装依赖
npm install
# 3. 运行开发服务器
npm run dev
# 4. 访问 http://localhost:3000
⚠️ 警告:不建议安全研究使用手动设置(无 Docker)。始终使用 Docker 进行隔离。
# 启动存在漏洞的应用程序
docker-compose up
# 以分离模式启动(后台)
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止容器
docker-compose down
# 停止并移除卷
docker-compose down -v
# 完全清理(移除镜像)
docker-compose down -v --rmi all
运行后,导航到:
PunchingBag 包含 5 个隐藏旗帜,测试不同的利用技术:
所有旗帜遵循格式:CTF{description_here}
# 探索应用程序
curl http://localhost:3000
# 检查可用端点
curl http://localhost:3000/dashboard
curl http://localhost:3000/admin
拦截表单提交并修改负载:
// 示例恶意负载
{
"name": "attacker",
"email": "[email protected]",
"message": "__proto__: { isAdmin: true }"
}
# 注入恶意头部
curl -X POST http://localhost:3000/api/data \
-H "Content-Type: application/json" \
-H "x-user-data: {\"role\":\"admin\"}" \
-d '{"exploit": true}'
检查 .env.local 获取凭证或利用认证:
# 默认管理员令牌(故意弱)
用户名:admin
令牌:super_secret_admin_key_12345
在存在漏洞的组件上使用命令执行功能:
# 模拟 RCE
命令:cat /flag.txt
__proto__ 属性punchingbag-cve-2025-55182/
├── app/
│ ├── actions.js # 存在漏洞的 Server Actions
│ ├── layout.js # 应用程序布局
│ ├── page.js # 带有 CTF 信息的首页
│ ├── globals.css # 全局样式
│ ├── admin/
│ │ └── page.js # 管理面板(旗帜 3、4)
│ ├── dashboard/
│ │ └── page.js # 用户仪表板(旗帜 1、2)
│ └── api/
│ ├── data/
│ │ └── route.js # API 端点
│ └── submit/
│ └── route.js # 表单提交端点
├── components/
│ ├── Logo.js # 应用程序标志
│ ├── VulnerableForm.js # 可利用的表单组件
│ └── UserDisplay.js # 用户资料展示
├── lib/
│ └── flags.js # 旗帜管理
├── public/
│ └── boxing-bag.png # 应用程序图标
├── .env.local # 环境变量(旗帜 5)
├── docker-compose.yml # Docker 配置
├── Dockerfile # 容器定义
├── next.config.js # Next.js 配置
├── package.json # 依赖项
└── README.md # 本文档
该应用程序是故意存在漏洞的,设计用于:
✅ 授权用途:
❌ 禁止用途:
# 使用后正确清理
docker-compose down -v --rmi all
欢迎贡献!请遵循以下指南:
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)该项目根据 MIT 许可证 授权 - 详见 LICENSE 文件。
如果该项目帮助您学习了 Web 安全,请考虑给它一个星标!⭐
| 旗帜 | 挑战 | 难度 | 积分 |
|---|
| 🚩 旗帜 1 | 基础侦察 | 简单 | 100 |
| 🚩 旗帜 2 | Server Action 利用 | 中等 | 200 |
| 🚩 旗帜 3 | 管理员访问绕过 | 中等 | 300 |
| 🚩 旗帜 4 | 远程代码执行 | 困难 | 400 |
| 🚩 旗帜 5 | 环境秘密 | 中等 | 250 |