业务逻辑测试

优质
小牛编辑
138浏览
2023-12-01

综述

在多功能的动态web应用程序中测试业务逻辑漏洞需要用非常规手段来思考。如果应用认证机制原先以1、2、3的步骤依次执行的验证身份目的来开发,万一用户从步骤1直接跳到步骤3会发生什么?用更加简单的例子来说,在打开失败、权限拒绝或仅仅500的错误的情况下,应用程序是否依然能够提供访问权限?

可以举出许多例子,但是不变的思想是“跳出常规思维”。这种类型的漏洞无法被漏洞扫描工具探测到,依赖于渗透测试人员的技巧和创造性。此外,这种类型的漏洞往往是最难探测的漏洞之一,而且通常是特定应用程序相关的,但是同样的,如果被利用,也是对应用程序最有害的。

尽管在现实生活中,这种业务漏洞的利用常常发生,有许多应用漏洞的研究者调查他们,业务逻辑缺陷的分类还在研究之中。web应用程序是其中的焦点。社区的争论在于这些问题是展示了新概念还是仅仅是已知问题的变种。

测试这些业务逻辑缺陷类似功能测试人员测试逻辑或有限状态测试。这些类型的测试需要安全专家多一些不同的思考,开发误用和滥用测试用例,以及许多功能测试人员使用的技巧。自动化的业务逻辑滥用测试用例几乎不可能,这仍然是需要依赖测试者的技巧和知识来完成业务过程和利用其中的规则的手工艺术。

业务限制

考虑应用程序提过的业务功能的规则。有没有对用户行为的限制?然后思考应用程序是否强制执行了这些规则。如果测试人员非常熟悉业务,那么通常非常容易识别出测试和分析用例来验证应用程序的规则。如果测试人员是第三方的测试者,需要使用自己的常识和询问有关人员关于业务过程,以及应用系统是否允许不同的操作。

有时,在一些非常复杂的应用系统中,测试者可能不会一开始就弄清楚应用程序的每一方面。在这些情况下,最好是在开始测试之前,客户可以陪同测试人员熟悉整个应用,以便于测试人员更好理解应用程序的限制和开发意图。此外,如果可能,在测试过程中,如果发生有关应用程序功能的问题,能够与开发人员直接交流可能会带来极大帮助。

问题描述

自动化工具很难理解上下文,因此只有人工才能实施此类测试。下面两个例子会展示如何理解应用程序功能、开发者意图、以及一些创造性“跳出盒子”的想法来打破应用程序逻辑。第一个例子从最简单的参数操纵开始,第二个例子是真实世界中多步骤处理缺陷导致完全颠覆应用程序。

例1:

假设一个电子金融站点允许用户选择购买的物品,查看金额合计页面以及付款。如果攻击者能够退回到合计页面,维持有效的会话,并将物品价格修改为较低的价格并完成支付过程?

例2:

保持/锁住资源,使其他人无法购买该物品可能导致攻击者通过一个较低的价格获得商品。对抗方法是实现超时和确保只有正确的价格可以支付的机制。

例3:

万一用户可以从他们俱乐部/组织账户发起交易事务,随后将节点指向自己账户并取消交易?是否交易点券/额度会加入他们自己的账户?

业务逻辑测试用例

每一个应用程序存在不同的业务处理流程,应用程序相关的逻辑可以通过无限中方法进行组合。这部分主要提供一些场景的业务逻辑问题的例子,并没有罗列出所有可能的问题。

业务逻辑漏洞利用方法可以分解为如下类别:

在业务逻辑数据验证测试中,我们验证应用程序不允许用户向系统/应用程序插入“未验证”的数据。这是非常重要的,因为如果没有这层防护措施,攻击者可能向应用程序/系统插入“未验证”的数据/信息,而且使系统认为这些数据是“好的”并且已经在“入口”点进行验证,并且让系统相信“入口”点已经实施过了数据验证,因为这是业务逻辑工作流的一环。

在伪造和参数预测测试中,我们验证应用程序不允许用户向系统任何不应该有权限访问的或者需要特定时间特定方法访问的组件中提交或改变数据。这非常重要,因为缺少这层防护措施,攻击者可能通过“愚弄/忽悠”应用系统允许他们进入本不能进入的区域,绕过了应用业务逻辑工作流。

在完整性检查和篡改证据测试中,我们验证应用程序不允许用户破坏系统任何部分或数据的完整性。这非常重要,因为缺少这层防护措施,攻击者能打破业务逻辑工作流,并改变已经被攻破的应用/系统数据或者通过改变日志文件中的信息掩盖某种行为。

在过程时长测试中,我们验证应用程序不允许用户通过输入/输出时长来操作系统或者预测系统行为。这非常重要,因为缺少这层防护,攻击者可能能监视处理时间和确定基于时间的输出内容或通过时间差异不完成某事务或某动作来绕过应用程序业务逻辑。

在功能限制测试中,我们验证应用程序不允许用户使用超出应用程序的份额或业务工作流需要的功能次数。这非常重要,因为缺少这层防护,攻击者可能能超出业务使用次数许可地使用应用程序功能或者份额来获取额外的利益。

在绕过工作流的测试中,我们验证应用系统不允许用户实施在业务处理流程“支持/需要”之外的动作。这非常重要,因为缺少这层防护,攻击者可能能绕过工作流和某些检查,允许他们提前进入或跳过某些必须的区域。应用系统潜在允许动作/事务在不完成完整的业务流程下完成,使整个系统处在不完整的信息追踪回溯的环境中。

在应用程序误用测试中,我们验证系统不允许用户以不预期的方式使用应用程序。

在非预期文件上传测试中,我们验证应用程序不允许用户上传系统期待或业务逻辑允许以外的文件类型的文件。这非常重要因为缺少这层防护,攻击者可能提交非预期的文件如.exe或.php,这些文件可能被保存在系统之中,并被系统或应用程序执行。

在恶意文件上传测试中,我们验证应用系统不允许用户向系统上传能破坏系统安全的恶意或潜在恶意文件。这非常重要因为缺少这层防护措施,攻击者就能够向系统上传恶意文件来传播病毒、恶意软件甚至利用程序如执行shellcode。

测试工具

虽然这里有许多测试工具能够验证业务流程在合法情况下是否工作正常,但是这些工具无法探测逻辑漏洞。举例来说,工具不能探测用户是否能通过编辑参数、预测资源名称或提升权限够绕过业务处理缺陷来访问受限资源,也没有有效机制来帮助测试人员来质疑事务状态。

下面是一下常见的可能有助于发现业务逻辑问题的工具。

HP 业务流程测试软件

数据劫持代理 - 来观察HTTP流量中的请求与响应

Web 浏览器插件 - 来查看和修改HTTP/HTTPS头、post参数和观察浏览器的DOM结构

其他测试工具

参考资料

白皮书

OWASP 相关

常用站点

书籍

  • The Decision Model: A Business Logic Framework Linking Business and Technology, By Barbara Von Halle, Larry Goldberg, Published by CRC Press, ISBN1420082817 (2010)