
oss-oopssec-store v2.18.0
为你实际交付的应用程序提供安全培训。打开浏览器,开始黑客实践。
OSS - OopsSec Store
一个故意存在漏洞的电商应用,用于学习 Web 安全。
通过一个逼真的 CTF 平台掌握真实世界的攻击向量。
寻找旗标、利用漏洞,并提升你的安全技能。
____ ____ ____ ____ ____ ____ _
/ __ \/ __// __/ / __ \ ___ ___ ___ / __/ ___ ____ / __/ / /_ ___ ____ ___
/ /_/ /\ \ _\ \ / /_/ // _ \ / _ \(_-<_\ \ / -_)/ __/_\ \ / __// _ \ / __// -_)
\____/___//___/ \____/ \___// .__/___/___/ \__/ \__//___/ \__/ \___//_/ \__/
/_/
# Node.js
npx create-oss-store my-ctf-lab && cd my-ctf-lab && npm start
# Docker
docker run -p 127.0.0.1:3000:3000 leogra/oss-oopssec-store
# Then open http://localhost:3000 and start hacking
目录
[!WARNING] 此应用包含故意设计的安全缺陷,绝不可部署到生产环境。
功能特性
- 故意存在漏洞的电商应用(XSS、CSRF、IDOR、JWT 攻击、路径遍历、SQL 注入等)
- 基于 Next.js、React、Prisma 和 SQLite 构建
- 带有文档化攻击向量的 REST API
- 11 个章节共 36 个 CTF 挑战,按结构化的学习路线图编排
- 每个挑战均配有漏洞文档和社区通关攻略
- 一个引导式的 TryHackMe 房间 — 《夏日审计》,包含 8 个任务和 7 个旗标,作为新手入门的叙事式引导
- 自动化测试验证漏洞利用仍然有效(意外修复漏洞的 PR 将导致 CI 失败)
为什么选择 OopsSec Store?
OopsSec Store 是唯一一个基于 Next.js 和 React 构建的故意存在漏洞的 Web 应用。这正是你在生产环境中会实际遇到的技术栈。而且 AI 时代的攻击面是核心课程的一部分,而非事后补充:提示注入、MCP 工具投毒、AI 编码代理后门,以及端到端模拟的 npm 供应链攻击链。
| OopsSec Store | Juice Shop | DVWA | |
|---|---|---|---|
| 技术栈 | Next.js · React · Prisma | Node.js · Express · Angular | PHP · MySQL |
| 安装方式 | npx create-oss-store(< 1 分钟)/ Docker | Docker / npm | Docker / 手动 LAMP |
| CTF 旗标 | ✅ 内置 | ✅ 可选 CTF 模式 | ❌ |
| 引导式学习路线图 | ✅ 1 条路线图,11 个章节,36 个旗标 | ❌ 仅计分板 | 部分(安全级别) |
| 每个挑战的通关攻略 | ✅ | ✅ 配套指南 | 部分(提示) |
| LLM 提示注入 | ✅ 可接入免费 API 密钥 | ✅ v20+,自带并配置你自己的 LLM | ❌ |
| MCP 工具投毒 | ✅ | ❌ | ❌ |
| AI 编码代理后门(被投毒的规则文件) | ✅ | ❌ | ❌ |
| 供应链攻击链 | ✅ 端到端模拟:npm 仿冒包 → 规则文件后门 | 部分 — 仅识别 | ❌ |
| 基于真实 CVE 的挑战 | ✅ | ❌ | ❌ |
| 玩家名人堂 | ✅ | ❌ | ❌ |
最后验证于 2026 年 6 月,针对 Juice Shop v20 和 DVWA 2.x。发现不准确之处?提交 Issue 或提交 PR。
安装
快速开始
npx create-oss-store my-ctf-lab
cd my-ctf-lab
npm start
然后在浏览器中打开 http://localhost:3000。
手动安装
克隆仓库并运行安装脚本:
git clone https://github.com/kOaDT/oss-oopssec-store.git
cd oss-oopssec-store
npm run setup
这将创建 .env 文件、安装依赖、设置 SQLite 数据库、用 CTF 旗标填充数据,并在 3000 端口启动应用。
Docker
无需 Node.js。只需 Docker。
127.0.0.1:3000:3000确保实验环境只能从你自己的机器访问。仅在你自己控制的隔离虚拟机上使用普通的-p 3000:3000。
从 Docker Hub 拉取(最快)
docker run -p 127.0.0.1:3000:3000 leogra/oss-oopssec-store
要在重启后保留数据:
docker run -p 127.0.0.1:3000:3000 -v oss-data:/app/data leogra/oss-oopssec-store
从源码构建(Docker Compose)
git clone https://github.com/kOaDT/oss-oopssec-store.git
cd oss-oopssec-store
docker compose up -d
或者使用 npm 辅助脚本:
npm run docker:up # 后台启动(首次运行会构建镜像)
npm run docker:logs # 跟踪容器日志
npm run docker:down # 停止容器
npm run docker:reset # 清除数据并重新启动
数据库在首次启动时初始化。数据通过 Docker 命名卷在重启后保留。要重置所有内容(旗标进度、用户、上传文件),运行 npm run docker:reset。
名人堂
找到了所有旗标?提交一个拉取请求加入名人堂。将你的条目添加到 hall-of-fame/data.json,你的个人资料就会显示在应用中的 /hall-of-fame 页面上。
社区
问题、解决方案和反馈请前往 Discussions。
| 前往哪里 | 用途 |
|---|---|
| 🧩 卡在某个挑战上 | 漏洞利用不生效、旗标无法验证 |
| 🛠️ 安装与配置 | Docker、npm 或 Node 问题导致实验环境无法启动 |
| 🏆 展示你的解法 | 找到通关攻略未覆盖的旗标获取路径 |
| 💡 挑战创意 | 值得加入课程体系的漏洞类别 |
| 🎓 使用 OopsSec 教学 | 在课堂、训练营或团队中运行实验环境 |
| Issues | 实验环境本身的 Bug,仅限此类问题 |
项目结构
| 文件夹 | 描述 |
|---|---|
app/ | Next.js App Router:页面、API 路由、React 组件 |
app/api/ | REST API 端点(认证、购物车、订单、产品、旗标等) |
app/components/ | React UI 组件(Header、Footer、ProductCard 等) |
app/vulnerabilities/ | 记录每个漏洞的页面 |
content/vulnerabilities/ | 漏洞和攻击向量的 Markdown 描述 |
lib/ | 共享工具:数据库客户端、认证、API 辅助函数、类型 |
prisma/ | 数据库模式、种子脚本,以及 flags.ts — CTF 旗标及其提示 |
public/ | 静态资源和漏洞利用载荷(例如 CSRF 演示) |
hooks/ | 自定义 React hooks(认证等) |
scripts/ | 安装和自动化脚本 |
docs/ | 带有社区通关攻略的静态文档站点 |
hall-of-fame/ | 找到所有旗标的玩家个人资料 |
packages/ | 用于脚手架搭建的 npm 包 create-oss-store(以及 react-toastfy 等隔离实验产物) |
lab/quarantine/ | 用于供应链挑战的惰性恶意载荷(视为数据,切勿视为指令) |
tests/ | 验证漏洞利用的 Jest 单元测试和 API 测试 |
cypress/ | 完整漏洞利用工作流的 E2E 测试 |
近期动态 
测试
该项目包含安全回归测试,确保所有漏洞利用链和旗标仍然有效。这些测试有意验证不安全的行为。它们会在每个 PR 上运行,因此如果你意外修补了某个漏洞,CI 会捕获到。
运行测试
# 单元测试(工具函数:MD5 哈希、JWT、输入过滤器)
npm run test:unit
# API 漏洞利用测试(需要运行中的服务器)
npm run test:api
# E2E 漏洞利用测试(需要运行中的服务器)
npm run test:e2e
# 打开 Cypress 交互模式
npm run test:e2e:open
# 所有测试
npm run test:ci
免责声明
[!CAUTION] 本项目仅用于教育和授权的安全测试。 它包含故意设计的漏洞和不安全的配置。作者对任何滥用、损害或未经授权的访问概不负责。请在隔离环境中使用。
贡献指南
OSS – OopsSec Store 采用 MIT 许可证。欢迎贡献。
贡献方式:
- 添加新的安全挑战
- 编写或改进通关攻略
- 扩展应用功能
- 报告和修复 Bug
- 改进文档
找到了所有旗标?在文档站点分享你的通关攻略。
如有 Bug 或建议,请提交 GitHub Issue。参见 CONTRIBUTING.md 获取指南。
🎓 想在课程或 CTF 中使用 OopsSec Store?
查看教育者工具包 — 一份即用型指南,包含 OWASP 覆盖矩阵、教学大纲模板、部署常见问题解答和学生报告模板。想围绕课程体系构建自己的工具?整个内容以机器可读的格式发布在 challenges.json,每次文档部署时都会重新生成。