news 2026/8/21 15:44:24

OWASP Juice Shop 完整教程:3 步搭好你的 Web 安全漏洞靶场

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OWASP Juice Shop 完整教程:3 步搭好你的 Web 安全漏洞靶场

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(或通过导航菜单进入),你会看到按"注入、认证、敏感数据泄露、输入校验"等类别分组的挑战清单,每个挑战都有名字、描述和难度星级。你不需要漫无目的地瞎试,跟着挑战走就行,例如:

  1. 查看评分榜本身:部分安装教程的第一个挑战就是"找到评分榜入口",它训练你留意隐藏路由。
  2. 登录一个管理员账号:挑战会提示你从注册、找回密码等入口寻找漏洞,而不是硬猜密码。
  3. 完成 SQL 注入:在搜索框里输入特殊字符,观察报错信息,尝试用 UNION 查询把数据库里的表"拖"出来。

每完成一个挑战,页面右上角会弹出绿色提示,并把你的破解进度实时写入评分榜。这种"提示—尝试—验证"的闭环,是 Juice Shop 学习路径教程里最核心的练习方式,比单纯看漏洞讲解有效得多。

另一个值得玩的功能是内置聊天机器人。在 Support Chat 里和机器人对话,本身就是一处精心设计的漏洞场景——它既能当普通客服,也藏着"提示注入"(Prompt Injection)挑战,适合想顺带体验 AI 安全问题的你。

五、按需定制:改配置文件,把靶场变成你的训练场

Juice Shop 的"设置面板"集中在config/目录,默认读取default.yml。它是典型的 YAML 文件,层级清晰、注释齐全,改完重启服务即可生效。最常用的几个开关如下:

配置项位置作用
服务端口server.port默认 3000,冲突时改成其他端口
挑战提示challenges.showHints设为false可关闭提示,增加难度
安全模式challenges.safetyModeauto/enabled/disabled,控制危险挑战默认是否启用
编码挑战challenges.codingChallengesEnabled是否显示代码修复类挑战(never/solved/always
商城改名application.name改成你自己的品牌名,适合培训定制

比如你想把商城改名为"XX 安全训练营"并关掉提示,只需在config/default.yml里做两处小改动:

application: name: 'XX 安全训练营' challenges: showHints: false

更省事的做法是直接复制一份配置:config/下已经预置了ctf.ymlquiet.ymltutorial.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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 15:43:55

高校教材编写不用愁!AI教材生成工具助力,一周搞定30万字书稿!

写论文与AI写教材工具介绍 写论文,如何精准满足多样化需求?不同专业背景的学生对资料理解有明显差异,内容太难或太简单都会影响写作效果;课内任务与课外自主研究的要求也大不相同,论文结构和表达方式必须灵活调整&…

作者头像 李华
网站建设 2026/8/21 15:43:40

基于Hadoop平台的岗位招聘推荐系统(源码+文档+部署讲解等)

联系博主 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 …

作者头像 李华
网站建设 2026/8/21 15:42:40

spiders实战:抖音无水印视频下载教程,告别水印烦恼

spiders实战:抖音无水印视频下载教程,告别水印烦恼 【免费下载链接】spiders Python爬虫,返回一定格式的信息,下载,使用flask提供简易api。抖音无水印、皮皮虾、快手、网易云音乐、qq音乐、咪咕音乐、荔枝FM音频、知乎…

作者头像 李华