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

业务逻辑漏洞

在本节中,我们将介绍业务逻辑漏洞的概念,并解释由于对用户行为的假设有缺陷,它们如何出现。我们将讨论逻辑缺陷的潜在影响,并教您如何利用它们。您还可以练习使用我们的交互式实验室所学到的知识,这些实验室基于我们在野外遇到的真正错误。最后,我们将提供一些一般最佳实践,以帮助您防止自己的应用中出现的这些逻辑缺陷。

业务逻辑漏洞

什么是业务逻辑漏洞?

业务逻辑漏洞是设计和实施应用程序的缺陷,该应用程序允许攻击者引起意想不到的行为。这可能使攻击者能够操纵合法的功能以实现恶意目标。这些缺陷通常是未能预期可能发生的异常应用状态并且因此无法安全处理它们的结果。

笔记

在这种情况下,“业务逻辑”一词只是指定义应用程序运作方式的一组规则。由于这些规则并不总是与企业直接相关,因此相关的漏洞也称为“应用程序逻辑漏洞”或仅仅是“逻辑缺陷”。

逻辑缺陷通常是不明确寻找它们的人看不见的,因为它们通常不会因应用程序的正常使用而暴露出来。但是,攻击者可能能够以开发人员从未打算与应用程序进行交互来利用行为怪癖。

业务逻辑的主要目的之一是执行设计应用程序或功能时定义的规则和约束。从广义上讲,业务规则决定了当给定情况发生时应用程序应如何反应。这包括防止用户做对业务产生负面影响或根本没有意义的事情。

逻辑中的缺陷可以允许攻击者规避这些规则。例如,他们可能能够完成一项交易而无需浏览预期的购买工作流程。在其他情况下,对用户提供的数据的损坏或不存在验证可能会使用户可以任意更改关键交易 - 关键价值或提交非敏感输入。通过将意外值传递到服务器端逻辑中,攻击者可以潜在地诱导应用程序做不应该做的事情。

基于逻辑的漏洞可能非常多样化,并且通常是应用程序及其特定功能所独有的。识别它们通常需要一定程度的人类知识,例如对业务领域的理解或攻击者在给定情况下可能实现的目标。这使他们难以使用自动漏洞扫描仪检测到。结果,逻辑缺陷是漏洞赏金猎人和手动测试人员的理想目标。

业务逻辑漏洞如何出现?

业务逻辑漏洞经常出现,因为设计和开发团队对用户如何与应用程序进行交互存在缺陷的假设。这些不良假设可能导致用户输入的验证不足。例如,如果开发人员假设用户将通过Web浏览器专门传递数据,则该应用程序可能完全依靠弱客户端控件来验证输入。beplay体育能用吗使用拦截代理很容易被攻击者绕过。

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

逻辑缺陷在过于复杂的系统中尤其常见,即使开发团队本身也无法完全理解。为了避免逻辑缺陷,开发人员需要了解整个应用程序。这包括了解如何以意外的方式组合不同的功能。从事大型代码库的开发人员可能对应用程序的所有领域的工作方式都没有深入的了解。在一个组件上工作的人可能会对另一个组件的工作方式有缺陷的假设,因此无意间引入了严重的逻辑缺陷。如果开发人员没有明确记录所做的任何假设,那么这些类型的漏洞很容易渗入应用程序。

业务逻辑漏洞有什么影响?

业务逻辑漏洞的影响有时可能是相当微不足道的。这是一个广泛的类别,影响很大。但是,如果攻击者能够以正确的方式操纵应用程序,则任何意外行为都可能导致高度攻击。因此,即使您无法弄清楚如何利用它,也应该修复古怪的逻辑。总是有其他人可以这样做的风险。

从根本上讲,任何逻辑缺陷的影响都取决于它与哪种功能相关。例如,如果漏洞是身份验证机制,则可能会对您的整体安全产生严重影响。攻击者可能会利用这一点以升级特权,或者完全绕过身份验证,从而获得敏感的数据和功能。这也暴露了其他漏洞的攻击表面。

金融交易中有缺陷的逻辑显然可以通过被盗的资金,欺诈等,从而造成企业的巨大损失。

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

业务逻辑漏洞的一些例子是什么?

了解业务逻辑漏洞的最佳方法是查看现实世界的案例并从犯下的错误中学习。我们提供了各种常见逻辑缺陷的具体示例,以及一些故意脆弱的网站,以便您可以自己利用这些漏洞。beplay体育能用吗

如何防止业务逻辑漏洞

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

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

您应该确定您对服务器端状态的假设,并实施必要的逻辑以验证这些假设已得到满足。这包括确保在继续操作之前确保任何输入的值是明智的。

同样重要的是要确保开发人员和测试人员能够充分理解这些假设以及应用程序在不同情况下的反应。这可以帮助团队尽早发现逻辑缺陷。为了促进这一点,开发团队应尽可能遵守以下最佳实践:

  • 为所有交易和工作流程保持清晰的设计文档和数据流,并注意每个阶段做出的任何假设。
  • 尽可能清楚地编写代码。如果很难理解应该发生的事情,那么很难发现任何逻辑缺陷。理想情况下,写得很好的代码不需要文档来理解它。在不可避免的复杂案例中,生成清晰的文档对于确保其他开发人员和测试人员知道正在做出什么假设以及预期行为是什么。
  • 注意对使用每个组件的其他代码的任何引用。考虑一下这些依赖性的任何副作用,如果恶意政党要以不寻常的方式操纵它们。

由于许多逻辑缺陷的性质相对独特,因此由于人为错误并继续前进,很容易将它们作为一次性错误。但是,正如我们已经证明的那样,这些缺陷通常是构建应用程序初始阶段不良实践的结果。分析为什么首先存在逻辑缺陷,以及团队如何错过的逻辑缺陷,可以帮助您发现流程中的弱点。通过进行较小的调整,您可以增加在源头上切断类似缺陷或在开发过程中捕获的可能性。

免费注册以跟踪您的学习进度

通过Portswigger的网络安全学院工作的好处beplay官网可以赌beplay体育能用吗
  • 练习在现实目标上利用漏洞。

  • 记录您从学徒到专家的发展。

  • 看看您在我们的名人堂中排名。

已经有一个帐户?在此登录