1. beplay体育能用吗网络安全学院
  2. 业务逻辑漏洞

业务逻辑漏洞

在本节中,我们将介绍业务逻辑漏洞的概念,并解释它们是如何由于对用户行为的错误假设而产生的。我们将讨论逻辑缺陷的潜在影响,并教你如何利用它们。你也可以用我们的交互式实验室来实践你所学到的东西,这些实验室是基于我们在野外遇到的真实的bug。最后,我们将提供一些通用的最佳实践,以帮助您防止在自己的应用程序中出现这些类型的逻辑缺陷。

业务逻辑漏洞

如果您已经非常熟悉业务逻辑漏洞,那么您可能希望直接进入实验室,并将您的技能用于测试。

什么是业务逻辑漏洞?

业务逻辑漏洞是应用程序的设计和实现中允许攻击者引发意外行为的缺陷。这可能使攻击者能够操纵合法功能来实现恶意目标。这些缺陷通常是由于未能预料到可能发生的不寻常的应用程序状态,从而未能安全地处理它们。

请注意

在这个上下文中,术语“业务逻辑”只是指定义应用程序如何操作的规则集。由于这些规则并不总是与业务直接相关,因此相关的漏洞也称为“应用程序逻辑漏洞”或简单地称为“逻辑缺陷”。

逻辑缺陷对于那些没有明确寻找它们的人来说通常是看不见的,因为它们通常不会在应用程序的正常使用中暴露出来。然而,攻击者可能通过与应用程序以开发人员从未想过的方式交互来利用行为怪癖。

业务逻辑的主要目的之一是实施在设计应用程序或功能时定义的规则和约束。一般来说,业务规则规定了当给定场景发生时应用程序应该如何作出反应。这包括防止用户做那些会对业务产生负面影响或根本没有意义的事情。

逻辑中的缺陷可以让攻击者规避这些规则。例如,他们可以在不经过预期的购买工作流的情况下完成交易。在其他情况下,用户提供的数据的失效或不存在的验证可能允许用户对事务关键值进行任意更改或提交无意义的输入。通过向服务器端逻辑传递意外的值,攻击者可以潜在地诱导应用程序做一些它不应该做的事情。

基于逻辑的漏洞可能非常多样,并且通常是应用程序及其特定功能所特有的。识别它们通常需要一定的人力知识,比如了解业务领域或攻击者在给定上下文中可能具有的目标。这使得使用自动漏洞扫描器很难检测它们。因此,逻辑缺陷通常是bug赏金猎人和手动测试人员的一个很好的目标。

业务逻辑漏洞是如何产生的?

业务逻辑漏洞经常出现,因为设计和开发团队对用户将如何与应用程序交互做出了有缺陷的假设。这些糟糕的假设可能导致用户输入的验证不足。例如,如果开发人员假定用户只通过web浏览器传递数据,那么应用程序可能完全依赖弱客户端控件来验证输入。beplay体育能用吗攻击者可以使用拦截代理很容易地绕过它们。

最终,这意味着当攻击者偏离预期的用户行为时,应用程序无法采取适当的步骤来防止这种情况,进而无法安全地处理这种情况。

在开发团队自己都不能完全理解的过于复杂的系统中,逻辑缺陷尤其常见。为了避免逻辑缺陷,开发人员需要从整体上理解应用程序。这包括了解不同的功能如何以意想不到的方式组合。在大型代码基础上工作的开发人员可能不了解应用程序的所有领域是如何工作的。在一个组件上工作的人可能会对另一个组件的工作方式做出有缺陷的假设,从而无意中引入严重的逻辑缺陷。如果开发人员没有明确地记录正在进行的任何假设,那么这些类型的漏洞很容易潜入应用程序。

业务逻辑漏洞的影响是什么?

业务逻辑漏洞的影响有时可能相当微不足道。这是一个广泛的类别,影响是高度可变的。但是,如果攻击者能够以正确的方式操作应用程序,那么任何意外的行为都可能导致严重的攻击。因此,理想情况下,古怪的逻辑应该是固定的,即使你自己不能想出如何利用它。总有一个风险,别人也有可能。

从根本上说,任何逻辑缺陷的影响取决于它与什么功能相关。例如,如果缺陷是在身份验证机制中,这可能会对您的整体安全性产生严重影响。攻击者可能利用这一点来升级权限,或者完全绕过身份验证,获得对敏感数据和功能的访问权。这也增加了其他漏洞的攻击面。

金融交易中的错误逻辑显然会通过资金被盗、欺诈等方式给企业带来巨大损失。

您还应该注意,即使逻辑缺陷可能不允许攻击者直接受益,它们仍然可能允许恶意方以某种方式损害业务。

业务逻辑漏洞有哪些例子?

理解业务逻辑漏洞的最佳方法是查看真实的案例,并从所犯的错误中学习。我们提供了各种常见逻辑缺陷的具体例子,以及一些故意易受攻击的网站,以便您可以自己练习利用这些漏洞。beplay体育能用吗

如何防止业务逻辑漏洞

简而言之,防止业务逻辑漏洞的关键是:

  • 确保开发人员和测试人员理解应用程序服务的领域
  • 避免对用户行为或应用程序其他部分的行为做出隐式假设

您应该确定您所做的关于服务器端状态的假设,并实现必要的逻辑来验证这些假设是否满足。这包括在继续之前确保任何输入的值都是合理的。

同样重要的是要确保开发人员和测试人员都能够完全理解这些假设,以及应用程序应该如何在不同的场景中做出反应。这可以帮助团队尽早发现逻辑缺陷。为促进这一点,开发团队应尽可能遵循以下最佳实践:

  • 为所有事务和工作流程维护清晰的设计文档和数据流程,注意在每个阶段所做的任何假设。
  • 尽可能清晰地编写代码。如果很难理解应该发生什么,就很难发现任何逻辑缺陷。理想情况下,编写良好的代码不需要文档来理解它。在不可避免的复杂情况下,生成清晰的文档对于确保其他开发人员和测试人员知道所做的假设以及所期望的行为是什么是至关重要的。
  • 注意任何对使用每个组件的其他代码的引用。想想这些依赖关系的任何副作用,如果一个恶意方以一种不寻常的方式操纵它们。

由于许多逻辑缺陷相对独特的性质,很容易将其视为人为错误造成的一次性错误,然后继续前进。然而,正如我们所演示的,这些缺陷通常是构建应用程序初始阶段的不良实践的结果。分析逻辑缺陷首先存在的原因,以及它是如何被团队忽略的,可以帮助您发现流程中的弱点。通过进行微小的调整,您可以增加类似缺陷在源头上被切断或在开发过程的早期被发现的可能性。

使用Burp Suite查找业务逻辑漏洞

通过PortSwigger的网络安全学院工作的好处beplay官网可以赌beplay体育能用吗

从Web安全学院开始,在那里你可以练习利用beplay体育能用吗现实目标的漏洞。和它的自由!

已经有账户了?登录这里