Web应用程序黑客的方法论(9) --Test for Logic Flaws

Posted by D on February 17, 2020

Web应用程序黑客的方法论来自书本 The Web Application Hacker’s Handbook

Test for Logic Flaws

9.1 测试特定于功能的输入漏洞(Identify the Key Attack Surface)

9.1.1
逻辑漏洞可以采用多种形式,并且存在于应用程序功能的任何方面。 为了确保探测逻辑缺陷是可行的,您应该首先将攻击面缩小到一个合理的区域,以便进行手动测试。

9.1.2
查看应用程序映射练习的结果,并确定以下功能的任何实例:

  • 多阶段流程
  • 关键安全功能,例如登录
  • 跨信任边界的过渡(例如,从匿名过渡到自我注册再登录)跨信任边界的过渡(例如,从匿名过渡到自我注册再登录)
  • 呈现给用户的基于上下文的功能
  • 检查和调整交易价格或数量

9.2 测试多阶段过程(Test Multistage Processes)

9.2.1
当多阶段流程涉及已定义的请求顺序时,请尝试按预期顺序提交这些请求。尝试跳过某些阶段,不止一次访问一个阶段,然后再访问较早的阶段。

9.2.2
可以通过针对不同URL的一系列GET或POST请求来访问阶段序列,或者它们可能涉及向同一URL提交不同的参数集。 您可以通过在请求参数中提交函数名称或索引来指定所请求的阶段。 确保完全了解应用程序用来提供对不同阶段的访问的机制。

9.2.3
除了干扰步骤的顺序之外,请尝试获取在流程的一个阶段提交的参数,然后在不同的阶段提交这些参数。 如果相关数据项在应用程序状态内更新,则应调查是否可以利用 这种行为会干扰应用程序的逻辑。

9.2.4
如果多阶段过程涉及不同用户对同一组数据执行操作,请尝试采用一个用户提交的每个参数,然后将其作为另一个提交。 如果它们被该用户接受并处理,请按照前面所述探索此行为的含义。

9.2.5
从实现的功能的上下文中,尝试了解开发人员可能做出的假设以及关键攻击面所在的位置。 尝试找出违反这些假设以在应用程序中引起不良行为的方式。

9.2.6
当不按顺序访问多级函数时,通常会在应用程序中遇到各种异常情况,例如具有空值或未初始化值,部分定义或状态不一致以及其他不可预测行为的变量。 寻找有趣的错误消息和调试输出,您可以使用这些消息更好地了解应用程序的内部工作原理,从而微调当前或不同的攻击。

9.3 不完整输入的测试处理(Test Handling of Incomplete Input)

9.3.1
对于应用程序中的关键安全功能(涉及处理几项用户输入并根据这些决定做出决定),请测试应用程序对包含不完整输入的请求的弹性。

9.3.2
对于每个参数,依次从请求中删除参数的名称和值。 监视应用程序的响应,以了解其行为是否有差异以及是否有任何错误消息可以说明正在执行的逻辑。

9.3.3
如果您要处理的请求是多阶段流程的一部分,请遵循该流程直至完成,因为应用程序可能会存储会话中较早阶段提交的数据,然后在较晚阶段进行处理。

9.4 测试信任边界(Test Trust Boundaries)

9.4.1
探究应用程序如何处理用户不同类型的信任之间的转换。 寻找具有给定信任状态的用户可以累积与其身份有关的状态量的功能。 例如,匿名用户可以在自我注册过程中提供个人信息,或继续进行旨在建立其身份的帐户恢复过程的一部分。

9.4.2
尝试通过在一个区域中累积相关状态,然后以通常不会发生的方式切换到另一区域,找到跨信任边界进行不正确过渡的方法。 例如,已经完成了帐户恢复过程的一部分,请尝试切换到经过身份验证的用户指定页面。 测试以这种方式转换时,应用程序是否为您分配了不合适的信任级别。

9.4.3
尝试确定您是否可以直接或间接利用任何更高特权的功能来访问或推断信息。

9.5 测试交易逻辑(Test Transaction Logic)

9.5.1
如果应用程序施加了交易限制,请测试提交负值的效果。 如果这些被接受,则有可能通过在相反方向进行大笔交易来突破限制。

9.5.2
检查您是否可以使用一系列连续的事务来产生一种状态,可以将其用于有用的目的。 例如,您可能能够在多个帐户之间执行几次低价值转帐,以积累大量应收帐款逻辑所希望避免的余额。

9.5.3
如果应用程序根据用户可控制的数据或操作确定的标准来调整价格或其他敏感值,请首先了解该应用程序使用的算法以及其逻辑内进行调整的点。 确定这些调整是一次性进行的,还是根据用户执行的进一步操作进行了修订。

9.5.4
尝试找到方法来操纵应用程序的行为,以使其进入一种状态,在该状态下,应用程序进行的调整不符合其设计者预期的原始标准。

Web应用程序黑客的方法论(8)
Web应用程序黑客的方法论(10)

: