资讯动态

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

发布时间:2026/10/20 11:17:12 来源:尧图企业网站定制
实验环境Kali GNU/Linux 2024.4OWASP Juice ShopBurp Suite Community Editionsqlmap启动 Juice Shopdockerrun--rm-p127.0.0.1:3000:3000 dockerpull.cn/bkimmnich/juice-shop访问http://localhost:3000即可打开靶场。一、信息收集1. 发现管理员评论在商品评论中可以看到adminjuice-sh.op的留言adminjuice-sh.op One of my favorites!2. 搜索参数在搜索框输入appleURL 变为http://localhost:3000/#/search?qapple说明搜索使用的参数是q。3. 用户评论中的电视节目在商品评论中Jim 的评论提到jimjuice-sh.op Fresh out of a replicator.“replicator” 是《星际迷航》中的设备。二、SQL 注入登录绕过1. 登录管理员账户在登录页的 Email 字段输入 or 11 --密码任意点击登录即可绕过验证以管理员身份登录。2. 登录 Bender 账户在 Email 字段输入benderjuice-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:aaajuice-sh.op}将author修改为其他用户邮箱例如{message:good!,author:benderjuice-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?q2. 使用 sqlmap 注入将请求保存为123.txt使用 sqlmap 扫描sqlmap-r123.txt--level2-pq确认存在布尔盲注后端数据库为 SQLite。尝试注⼊数据库名发现结果中提示可以直接注⼊表sqlmap-r123.txt--level2-pq--dbmssqlite--dbs尝试注⼊表名恢复出来 20 张表的表名sqlmap-r123.txt--level2-pq--dbmssqlite--tables--threads53. 获取 Products 表列名sqlmap-r123.txt--level2-pq--dbmssqlite-TProducts--columns--no-cast--threads5得到列名id、name、description、price、deluxePrice、image、createdAt、updatedAt、deletedAt。4. 导出商品 ID 和名称sqlmap-r123.txt--level2-pq--dbmssqlite-TProducts-Cid,name--dump--no-cast--threads10在结果中找到10 Christmas Super-Surprise-Box (2014 Edition)该商品就是隐藏的圣诞礼盒ID 为 10。5. 将隐藏商品加入购物车将商品 ID 修改为10发送加入购物车请求即可成功下单。五、负数量漏洞Payback Time1. 将商品加入购物车抓取请求POST /api/BasketItems/ HTTP/1.1请求体{ProductId:1,BasketId:6,quantity:1}2. 修改数量为负数将quantity修改为负数例如-10发送请求。由于订单总价按数量计算负数量会导致总金额变为负数从而完成 “Payback Time” 挑战。六、防御建议输入验证对搜索、登录、评论、反馈等所有用户输入进行严格校验。参数化查询使用预编译语句避免 SQL 注入。访问控制服务端校验资源归属禁止通过修改 ID 访问他人数据。权限校验评论、反馈等操作应校验当前用户身份禁止篡改 author、userId 等字段。业务逻辑校验数量、金额等字段应限制范围禁止负数、超大值。最小权限数据库账户只授予必要权限避免注入后获取过多信息。总结本文覆盖了 OWASP Juice Shop 中多个典型漏洞信息收集通过评论、搜索参数、URL 等获取敏感信息。SQL 注入绕过登录、导出隐藏商品。Broken Access Control水平越权查看购物篮、冒名评论、冒名反馈、操作他人购物篮。业务逻辑漏洞负数量导致负金额结算。这些漏洞的共同点是服务端过度信任客户端输入缺乏严格的校验和权限控制。防御的核心是“永远不要相信用户输入”并在服务端做好身份、权限和业务逻辑校验。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑