我们在本章已经两次讨论过了差异分析的概念(它与授权审计相关)。本质上,它包括在目标网站上爬行,同时使用不同账户验证(或者不验证),注意参数如cookie和/或授权/状态跟踪数据的差异。
我们最近的一次咨询经历凸显了这种技术的使用。我们签约进行一次验证评估,客户提供了两组有效的凭据:一个“标准”应用用户和一个管理用户。我们首先爬行该网站,同时以标准用户验证,登录所有页面,提交所有表单。然后使用管理凭据进行了同样的工作。我们分类两个数据集并且计算每种类型提交数据的总和,结果如表5-8所示。
表5-8 浏览Web应用同时以标准和管理用户登录的差异分析结果
根据这一数据,最明显的攻击是尝试用标准用户账户访问管理表单和页面。这里没有捷径;我们所遇到的页面似乎都受到很好的保护。
接下来我们仔细地从会话管理中观察标准和管理角色的差异。如表5-8所示,标准和管理用户都从应用接受相同数量的cookie。这意味着会话/角色授权可能与一个cookie相关。使用前面描述的水平权限提升案例研究中的cookie排除过程,我们能够识别一个cookie似乎执行授权功能。表5-9显示了标准和管理用户的相应cookie值。
表5-9 标准和管理用户类型的Cookie值
下一步,我们分析标准和管理cookie之间的差异。花费几分钟查看表5-9中的cookie,看看你是否能领会我们列出的观察结果:
·cookie值使用句号分段。
·第1、3、4段长度相同,全是数字。
·第2段可能是MD5 hash(32个字节长;参见前面的5.1.3节“分析会话令牌”)。
·每个用户的每一段有同样的长度。
·每个用户第1段的头3个数字相同。
尽管我们可能已经收集了用于生成第2段的算法,但是这种粗略的分析还没有真正揭示出有用的内容,所以我们进一步探查。我们系统性地修改cookie中的值并将其重新提交到应用中。我们从改变cookie最后一段的值开始,然后按照自己的方法继续。表5-10显示了测试的一些结果。我们对表5-10中数据的解读是,最后一段对授权没起什么作用。
我们对cookie中的每一段重复这个过程,完成时,我们惊讶地发现,似乎只有cookie的前5个字符似乎与授权状态相关。回顾表5-9,在cookie的前5个字符中,标准和管理用户账户之间的唯一差异是第5个字符的位置:管理用户为0,标准用户为1。
利用更多的输入操纵,我们随后发现了第5个位置包含了连续递增的账户号,通过修改这个号码,我们能够轻松地劫持其他用户的会话。
表5-10 对jonafid cookie输入校验检查的结果