10、业务逻辑测试

业务逻辑介绍

测试多功能动态 Web 应用程序中的业务逻辑缺陷需要采用非常规方法进行思考。如果开发应用程序的身份验证机制的目的是按特定顺序执行步骤 1、2、3 来对用户进行身份验证。如果用户从步骤 1 直接进入步骤 3 会发生什么?在这个简单的示例中,应用程序是否通过打开失败来提供访问?拒绝访问,或者只是出错并显示 500 消息?

可以举出很多例子,但一个不变的教训是“跳出传统智慧思考”。这种类型的漏洞无法被漏洞扫描器检测到,并且依赖于渗透测试人员的技能和创造力。此外,这种类型的漏洞通常是最难检测的漏洞之一,并且通常是特定于应用程序的,但同时,如果被利用,通常也是对应用程序最有害的漏洞之一。

业务逻辑缺陷的分类尚未得到充分研究;尽管利用业务缺陷经常发生在现实世界的系统中,并且许多应用漏洞研究人员对此进行了调查。最受关注的是 Web 应用程序。社区内部存在争论,这些问题是否代表了特别新的概念,或者它们是否是众所周知的原则的变体。

业务逻辑缺陷的测试类似于功能测试人员使用的测试类型,重点关注逻辑或有限状态测试。这些类型的测试要求安全专业人员以不同的方式思考,开发滥用和误用案例,并使用功能测试人员所采用的许多测试技术。业务逻辑滥用案例的自动化是不可能的,并且仍然是依赖于测试人员的技能及其对完整业务流程及其规则的了解的手动艺术。

4.10.1测试业务逻辑数据验证

测试目标 识别数据注入点。 验证所有检查都在后端进行且无法绕过。 尝试打破预期数据的格式并分析应用程序如何处理它。

4.10.2测试伪造请求能力

测试目标 查看项目文档,寻找可猜测、可预测或隐藏的字段功能。 插入逻辑上有效的数据以绕过正常的业务逻辑工作流程。

4.10.3测试完整性检查

测试目标 查看用于移动、存储或处理数据的系统组件的项目文档。 确定组件在逻辑上可以接受什么类型的数据以及系统应该防范什么类型的数据。 确定谁应该被允许修改或读取每个组件中的数据。 尝试插入、更新或删除每个组件使用的数据值,而这些数据值在业务逻辑工作流程中是不允许的。

4.10.4进程时序测试

测试目标 查看项目文档以了解可能受时间影响的系统功能。 开发并执行误用案例。

4.10.5测试函数可使用次数限制

测试目标 确定必须对其调用次数设置限制的函数。 评估功能是否设置了逻辑限制以及是否经过正确验证。

4.10.6工作流程规避测试

测试目标 查看项目文档,了解以与预期业务逻辑流不同的顺序跳过或执行应用程序流程中的步骤的方法。 开发一个误用案例并尝试规避已识别的每个逻辑流程。

4.10.7测试针对应用程序滥用的防御措施

测试目标 从针对系统进行的所有测试中生成注释。 根据积极的输入,检查哪些测试具有不同的功能。 了解现有的防御措施并验证它们是否足以保护系统免受绕过技术的攻击。

4.10.8异常文件类型测试上传

测试目标 查看项目文档以了解系统拒绝的文件类型。 验证是否拒绝并安全处理不受欢迎的文件类型。 验证文件批量上传是否安全,并且不允许任何绕过设置的安全措施。

4.10.9恶意文件上传测试

识别文件上传功能。 查看项目文档以确定哪些文件类型被视为可接受,以及哪些类型被视为危险或恶意。 如果没有可用的文档,则根据应用程序的目的考虑什么是合适的。 确定如何处理上传的文件。 获取或创建一组恶意文件以进行测试。 尝试将恶意文件上传到应用程序并确定是否被接受和处理。

4.10.10测试支付功能

测试目标 确定电子商务功能的业务逻辑是否稳健。 了解支付功能的工作原理。 确定支付功能是否安全。