渗透测试步骤

(1)从第一个应用程序页面到任何登录功能,遍历应用程序,确定其何时以及如何发布会话令牌。以下两种行为较为常见:

img002 只要收到未提交令牌的请求,应用程序就会创建新会话;

img002 应用程序在成功登录后创建新会话。

要想自动收集大量令牌,最好的办法是确定一个导致应用程序发布新令牌的请求(通常为GET/或登录请求)。

(2)在Burp Suite中,向Burp Sequencer发送创建新会话的请求,并配置令牌的位置。然后启动实时捕获,收集尽可能多的令牌。如果应用程序采用了定制会话管理机制,则只能远程访问该应用程序,你可以尽可能迅速地收集令牌,以尽量防止丢失发布给其他用户的令牌,并降低时间依赖造成的影响。

(3)如果应用程序采用商业会话管理机制并且/或者你可以本地访问该应用程序,则可以在受控条件下获得无数会话令牌。

(4)在Burp Sequencer收集令牌的同时,启动“自动分析”(auto analyse)设置,使Burp定期自动执行统计分析。至少收集500个令牌,然后详细审查分析结果。如果令牌中有足够的数据位通过了测试,继续尽可能长时间地收集令牌,并在收集其他令牌时审查分析结果。

(5)如果令牌未通过随机性测试,并且似乎包含可用于预测将来令牌的模式,则可以从另一个IP地址、使用不同的用户名(如果相关)重新开始收集令牌的操作。这有助于确定是否能够发现相同的模式,以及是否能够根据前一次操作获得的令牌进行推断,确定后一次操作得到的令牌。有时候,一个用户收集的令牌序列表现出某种模式,但因为来源IP地址之类的信息被 用作熵源(如随机数字发生器的种子),通过这种模式并不能推断出向其他用户发布的令牌。

(6)如果攻击者认为已经充分了解令牌生成算法,能够向其他用户的会话发动自动攻击,通过一段定制脚本实施攻击可能是最好的方法,因为它能够使用观测到的特定模式生成令牌,并应用任何必需的编码。请参阅第14章了解在这种情况下应用某些常规技巧的信息。

(7)如果可以查看源代码,则应仔细检查负责生成会话令牌的代码,了解它使用的机制,并确定是否可以轻易预测该令牌。如果确定能够对从应用程序数据中提取的熵实施蛮力攻击,这时需要考虑对应用程序令牌实施蛮力攻击所需的具体请求数。