从业者-有缺陷的假设-工作流验证不充分
# 实验室:工作流验证不充分
# 题目
此实验室 对采购工作流程中的事件顺序 做出了有缺陷的假设。要解决实验室问题,请利用此缺陷购买一件 “Lightweight l33t leather jacket” 。
你可以使用以下凭据登录到自己的帐户:wiener
:peter
- name: 实验室-从业者
desc: 工作流验证不充分 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation
bgColor: '#001350'
textColor: '#4cc1ff'
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 该实验室的 采购流程 中存在逻辑缺陷,利用该缺陷购买一件名为 “Lightweight l33t leather jacket” 的商品。
点击 “ACCESS THE LAB” 进入实验室。
(是的你没看错,界面更新了。感觉还是旧版的好看,左边蓝色的部分太大了。)

在首页中可以看到很多商品,其中有我们需要的 “Lightweight l33t leather jacket” 。
点击 “My account” 转到登录页面。

输入题目中提供的用户名和密码,登录相应账户。

登录之后回到首页,点击商品下方的 “View details” 进入详情页。

点击页面下方的 “Add to cart” 添加一个商品到购物车。

这是添加商品的请求数据包,尝试将 quantity 的参数值修改为负数,无效。

正常添加一个商品,来到购物车页面,尝试提交订单。

程序返回错误信息,余额不足。

提交订单时,总共产生了两个请求数据包。
第一个数据包,检查账户余额,并跳转到相应页面。

第二个数据包,跳转到错误页面,提示余额不足。

购买一个低价格的商品,看看购买成功的数据包是长什么样的。

购买成功。

第一个数据包,也是检查余额,但是跳转的页面不同。

第二个数据包,跳转到购买成功的页面,此时购物车中的商品被清空。
https:/cart/order-confirmation?order-confirmed=true

如果将一个买不起的商品,放入购物车,然后直接访问购买成功的页面会发生什么?
将目标商品添加到购物车,总价格为 1337.00 元,远在我们的账户余额之外。

在第二个数据包中 “右键 --> Copy URL” 复制购买成功的 URL 。

新建一个标签页,访问该 URL 。

访问之后,跳过了余额检查这一步骤,直接购买了目标商品。
购买成功,实验完成。

# 修复建议
支付漏洞4 - 跳过余额 检查/支付 步骤
- 在原来的基础上增加 “支付是否成功” 的检查,当程序从账户余额中扣了款,才能算支付成功,接下来再算购买成功(付款记录 --> 购买记录)。
你小子想吃霸王餐是吧?