业务逻辑错误
介绍
业务逻辑错误是一种利用应用程序的合法处理流程以导致对组织产生负面后果的方式。
发现位置
这种漏洞可能出现在应用程序的所有功能中。
如何利用
查看功能
一些应用程序具有一个选项,其中经过验证的评论会用某种标记标记或有说明。尝试查看是否可以以已验证的评论者身份发布评论,而不必购买该产品。
一些应用程序提供了一个选项,可以在1到5的评分范围内提供评分,尝试超出或低于这个范围,如提供0、6或负数。
尝试查看同一用户是否可以为产品发布多个评分。这是一个检查竞态条件的有趣端点。
尝试查看文件上传字段是否允许任何扩展名,通常会观察到开发人员未在此类端点上实施保护。
尝试以其他用户的名义发布评论。
尝试对此功能执行 CSRF 攻击,通常不受令牌保护。
优惠券代码功能
尝试多次使用相同的代码,查看优惠券代码是否可重复使用。
如果优惠券代码是唯一可用的,请尝试在两个帐户上并行使用相同的代码来测试竞态条件。
尝试使用缺少输入消毒的攻击,如 XSS、SQL 注入等,来查看此字段是否存在攻击。
尝试在服务器端对请求进行篡改,以在应用程序仅接受来自客户端的一个代码的情况下添加多个优惠券代码。
尝试在未享受折扣的商品上添加折扣代码,通过篡改服务器端的请求来实现。
运费滥用
尝试篡改运费费率,将其变为负值,以查看是否可以减少最终金额。
尝试通过篡改参数来查看是否有免费运费的选项。
货币套利
使用一种货币(例如美元)支付,然后尝试以另一种货币(例如欧元)退款。由于汇率的差异,可能会获得更多的金额。
高级功能滥用
尝试强制浏览高级帐户下的区域或某些特定端点。
购买高级功能,然后取消订阅。如果您获得退款但仍然可以使用该功能,这是一个对财务的影响问题。
一些应用程序使用真假请求/响应值来验证用户是否具有高级功能的访问权限。
尝试使用 Burp 的匹配和替换功能来查看是否可以在浏览应用程序并访问高级功能时替换这些值。
始终检查 Cookie 或本地存储,查看是否有任何变量用于检查用户是否应该具有高级功能的访问权限。
退款功能滥用
购买产品(通常是某种订阅)并要求退款,以查看该功能是否仍然可访问。
尝试昨天解释的货币套利。
尝试多次请求订阅取消(竞态条件),以查看是否可以获得多次退款。
购物车/愿望清单滥用
将一个产品添加为负数量,同时将其他产品添加为正数量,以平衡金额。
尝试将产品添加为超过可用数量。
尝试查看当您将产品添加到愿望清单并将其移到购物车时,是否可以将其移到其他用户的购物车或从其他用户的购物车中删除。
线程评论功能
在线程上无限制评论。
假设用户只能评论一次,在这里尝试竞态条件,看是否可能进行多次评论。
假设有一个选项:由经过验证的用户(或某些特权用户)评论,尝试篡改各种参数,以查看是否可以执行此操作。
尝试发布评论,冒充其他用户。
参数篡改
篡改支付或关键字段以操纵它们的值。
通过滥用 HTTP 参数污染和大规模分配来添加多个字段或意外字段。
通过响应篡改来绕过某些限制,如 2FA 绕过。
参考
github and other medium writeup
Last updated