尝试访问

http://mdsec.net/auth/195/

http://mdsec.net/auth/199/

http://mdsec.net/auth/203/

http://mdsec.net/auth/206/

http://mdsec.net/auth/211/

一些登录机制在其中一个登录阶段提出一个随机变化的问题。例如,提交用户名和密码后,应用程序会向用户提出许多“机密”问题中的一个(关于用户母亲的娘家姓、出生地、小学名称等),或者要求其提交一个机密短语中的两个随机字母。采用这种做法的基本原理在于:即使攻击者截获了用户在某个时候输入的全部信息,他也无法在其他时刻作为该用户登录,因为这时应用程序将提出不同的问题。

在某些执行过程中,这种功能会遭到破坏,因而无法实现其目的。

img002 应用程序可能会提出一个随机选择的问题,把有关问题的细节保存在隐藏的HTML表单字段中,而不是服务器上。随后用户提交该问题及其答案。这样,攻击者就能够选择回答哪个问题,允许他们截获用户在某个时候的输入后,重复使用截获的信息进行登录。

img002 应用程序可能会对每个登录尝试提出一个随机选择的问题,但如果某个用户无法回答该问题,它并不记住向该用户提出了什么问题。如果该用户稍后又提交一次登录尝试,应 用程序又生成另一个随机问题。这允许攻击者遍历所有问题,直到收到他们知道答案的那个问题,从而利用在某个时候截获的用户输入重复进行登录。

img001  注解  上面的第二种情况确实相当微妙,因此,许多现实中的应用程序都易于受到攻击。初看上去,要求用户回答一个值得纪念的词中的两个字母的应用程序似乎能够正常运转,增强登录机制的安全。但是,如果每次在通过前一个验证阶段后随机选择两个字母,那么截获用户在某个时候的登录信息的攻击者只需重复进入这个验证阶段,直到应用程序要求提交他知道的两个字母为止,这样做也不存在任何账户锁定风险。