OWASP Juice Shop 完整教程:3 步搭好你的 Web 安全漏洞靶场
【免费下载链接】juice-shopOWASP Juice Shop: Probably the most modern and sophisticated insecure web application项目地址: https://gitcode.com/gh_mirrors/ju/juice-shop
想学 Web 安全,最怕的不是没有工具,而是没有一个"合法挨打"的实验对象。真实网站不能乱测,自己写的代码又没什么漏洞可挖。OWASP Juice Shop 正是为此而生——它是一款由 OWASP 官方维护、刻意"做坏"的开源 Web 应用,表面是一家卖果汁的网店,内里却塞满了从 OWASP Top 10 到真实业务场景中的上百个安全缺陷。这篇 Juice Shop 快速上手教程会带你从零把它跑起来,并学会用评分榜(Score Board)驱动自己的安全测试入门练习。
一、先搞清楚:这杯"毒果汁"到底能帮你什么
Juice Shop 的官方描述只有一句话:"Probably the most modern and sophisticated insecure web application"——大概是现存最现代、最复杂的"不安全" Web 应用。它的定位很明确:
- 安全培训:给学员一个真实感极强的目标系统,边讲边练;
- 意识演示:让开发、管理、业务人员亲眼看到漏洞长什么样;
- CTF 比赛:内置了完整的竞赛模式,可直接作为赛事题目;
- 工具测试靶场:给扫描器、Burp Suite、渗透测试脚本当"小白鼠"。
它覆盖的漏洞类型包括 SQL 注入、跨站脚本(XSS)、越权访问、失效的认证、敏感数据泄露、文件上传、XXE、不安全的反序列化等等,几乎把 OWASP Top 10 一网打尽。换句话说,真实世界可能遇到的安全问题,这里都有对应的"剧情"。
这套教程适合三类人:刚入门 Web 安全想找靶场练习的你、负责给团队做安全培训的讲师,以及想验证自家安全工具效果的工程师。
二、起步准备:装好这三样,一分钟验证环境
Juice Shop 对新手非常友好,不需要数据库、不需要单独装前端构建链,最低要求只有两件事:
| 依赖 | 说明 |
|---|---|
| Node.js | 官方支持 22.x、24.x、26.x 等当前 LTS 版本,建议装最新 LTS |
| npm | 随 Node.js 一起安装,无需额外配置 |
| 浏览器 | 打开http://localhost:3000用的,Chrome / Edge / Firefox 均可 |
小提示:Node.js 版本低于 22.x 会无法运行,装好之后用
node -v确认版本号,别用太老的版本踩坑。
除了源码方式,官方还提供三种更省事的运行途径:打包好的可执行发行包(解压即跑)、Docker 镜像(一条命令启动)、以及 Vagrant 虚拟机(适合想完全隔离环境的你)。其中 Docker 方式对 Windows/macOS 用户最省心:
docker pull bkimminich/juice-shop docker run --rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop看到终端没有任何报错,浏览器能打开页面,环境就算准备好了。下面我们重点讲最主流的源码安装方式。
三、让"毒果汁"跑起来:从拉取代码到打开首页
源码方式安装只需要五条命令。先把仓库克隆到本地(仓库地址为https://gitcode.com/gh_mirrors/ju/juice-shop):
git clone https://gitcode.com/gh_mirrors/ju/juice-shop.git --depth 1 cd juice-shop npm install npm start然后打开浏览器访问http://localhost:3000,看到果汁商城首页就说明启动成功了。首次运行npm install会同时构建前端和后端,耐心等一两分钟属正常现象。
如果好奇它内部是怎么"转起来"的,可以顺着入口文件看:项目根目录的app.ts是整个应用的启动开关,它先做依赖校验,再调用server.ts里的start()完成服务拉起:
async function app () { const { default: validateDependencies } = await import('./lib/startup/validateDependenciesBasic') await validateDependencies() // 第一步:检查 Node 版本等前置条件 const server = await import('./server') await server.start() // 第二步:启动 Express 服务并加载所有路由 } app().catch(err => { throw err })而server.ts相当于这座商城的"总电闸":它初始化 Sequelize 数据模型、注入全部业务路由(登录、购物车、商品搜索、评论……每一项都对应routes/目录下的一个文件),并注册启动前的准备任务——例如lib/startup/customizeApplication.ts负责把配置里的商品、文案灌进数据库。理解了这个链路,之后你想分析某个漏洞在哪段代码里,就有了明确的地图。
四、核心玩法:评分榜是你最好的"任务清单"
Juice Shop 和普通靶场最大的不同,是它内置了一套游戏化任务系统——评分榜(Score Board)。它把所有漏洞设计成一个个可验证的"挑战",破解一个就点亮一个。
打开页面后,直接访问/#/score-board(或通过导航菜单进入),你会看到按"注入、认证、敏感数据泄露、输入校验"等类别分组的挑战清单,每个挑战都有名字、描述和难度星级。你不需要漫无目的地瞎试,跟着挑战走就行,例如:
- 查看评分榜本身:部分安装教程的第一个挑战就是"找到评分榜入口",它训练你留意隐藏路由。
- 登录一个管理员账号:挑战会提示你从注册、找回密码等入口寻找漏洞,而不是硬猜密码。
- 完成 SQL 注入:在搜索框里输入特殊字符,观察报错信息,尝试用 UNION 查询把数据库里的表"拖"出来。
每完成一个挑战,页面右上角会弹出绿色提示,并把你的破解进度实时写入评分榜。这种"提示—尝试—验证"的闭环,是 Juice Shop 学习路径教程里最核心的练习方式,比单纯看漏洞讲解有效得多。
另一个值得玩的功能是内置聊天机器人。在 Support Chat 里和机器人对话,本身就是一处精心设计的漏洞场景——它既能当普通客服,也藏着"提示注入"(Prompt Injection)挑战,适合想顺带体验 AI 安全问题的你。
五、按需定制:改配置文件,把靶场变成你的训练场
Juice Shop 的"设置面板"集中在config/目录,默认读取default.yml。它是典型的 YAML 文件,层级清晰、注释齐全,改完重启服务即可生效。最常用的几个开关如下:
| 配置项 | 位置 | 作用 |
|---|---|---|
| 服务端口 | server.port | 默认 3000,冲突时改成其他端口 |
| 挑战提示 | challenges.showHints | 设为false可关闭提示,增加难度 |
| 安全模式 | challenges.safetyMode | auto/enabled/disabled,控制危险挑战默认是否启用 |
| 编码挑战 | challenges.codingChallengesEnabled | 是否显示代码修复类挑战(never/solved/always) |
| 商城改名 | application.name | 改成你自己的品牌名,适合培训定制 |
比如你想把商城改名为"XX 安全训练营"并关掉提示,只需在config/default.yml里做两处小改动:
application: name: 'XX 安全训练营' challenges: showHints: false更省事的做法是直接复制一份配置:config/下已经预置了ctf.yml、quiet.yml、tutorial.yml等现成模板,分别对应 CTF 比赛、安静模式(关闭通知)、教程引导模式。把需要的模板改名为default.yml覆盖,或用NODE_CONFIG环境变量指定,就能快速切换运行形态。项目也提供了config.schema.ts来校验配置合法性,写错了会在启动时报出明确提示,不用担心改坏。
六、收尾与延伸:三个常见问题与下一步方向
Q1:启动时报 Node 版本不兼容怎么办?升级到 22.x 及以上 LTS 版本,node -v确认后重跑npm install && npm start。
Q2:某个挑战卡住了,能直接看答案吗?能。官方配套的《Pwning OWASP Juice Shop》指南书对每个挑战都给出了逐步解法,先在评分榜里开启提示(Hints),实在不行再查解法,效果最好。
Q3:想拿它办一次内部 CTF 怎么弄?把config/ctf.yml作为基础配置,配合项目的 CTF 功能(积分、旗帜、通知)即可快速搭起比赛,rsn/目录下还有配套的题目生成脚本。
跑通安装只是第一步。接下来建议按"评分榜从易到难→补看官方漏洞分类文档→把每个漏洞在源码里定位一遍"的顺序推进,你会发现每破解一个挑战,对 Web 安全的理解就深一层。想深入的话,data/static/challenges.yml记录了全部挑战定义,routes/目录则藏着每个漏洞的"案发现场",翻代码和打靶场配合着来,效果翻倍。
【免费下载链接】juice-shopOWASP Juice Shop: Probably the most modern and sophisticated insecure web application项目地址: https://gitcode.com/gh_mirrors/ju/juice-shop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考