许多时候,在应用程序采用加密令牌时,具体的攻击方法可能要取决于各种因素,包括分组边界相对于攻击的数据的偏移值,以及应用程序是否允许修改明文的结构。完全盲目地开始攻击将很难实施有效的攻击,但在许多情况下,这种攻击也可能会奏效。
(1)除非会话令牌明显有意义或本身是连续的,否则应始终考虑令牌被加密的可能性。通常,通过注册几个不同的用户名,并在用户名中每次添加一个字符,就可以确定应用程序是否采用分组密码。如果添加一个字符会导致会话令牌的长度增加8或16个字节,这说明应用程序可能使用的是分组密码。要确认这一点,可以继续在用户名中添加字节,看随后会话令牌是否会同样增加8或16个字节。
(2)通常,在盲目的情况下,很难确定并利用ECB密码操纵漏洞。但是,可以尝试盲目地复制并移动令牌中的密文分组,并查看能否能够以自己的用户账户或其他用户账户登录应用程序,或根本无法登录应用程序。
(3)你可以通过使用“位翻转”有效载荷源对整个令牌实施Burp Intruder攻击,测试应用程序是否存在CBC密码操纵漏洞。如果位翻转确定了令牌中的某个部分,并且修改该部分后仍然能够以其他用户或不存在的用户身份访问有效会话,那么,攻击者可以扩大攻击范围,对这个部分中的每个值进行测试,以实施更有针对性的攻击。
(4)在上述两种攻击过程中,监视应用程序的响应,确定与提交的每个请求生成的会话有关的用户,并尝试利用任何机会来提升自己的权限。
(5)如果攻击并未奏效,但通过步骤1得知,攻击者提交的长度可变的输入已被合并到令牌中,这时,应尝试每次增加一个字符,直到达到所使用的分组的大小,以生成一系列令牌。然后,对于每个生成的令牌,应执行步骤(2)和步骤(3)。这将增加需要修改的数据恰好与分组边界对齐的机率,帮助你实施成功的攻击。