http://mdsec.net/auth/142/
http://mdsec.net/auth/145/
http://mdsec.net/auth/151/
为方便用户,避免他们每次在一台特定的计算机上使用应用程序时需要重复输入用户名和密码,应用程序通常执行“记住我”功能。这些功能在设计上并不安全,致使用户易于遭受本地和其他计算机用户的攻击。
一些“记住我”功能通过一个简单的cookie执行,如RememberUser=pet erwiener(见图6-6)。向初始应用程序页面提交这个cookie时,应用程序信任该cookie,认为其属于通过验证的用户,并为该用户建立一个应用程序会话,从而避开登录过程。攻击者可以使用一组常见或已枚举出的用户名,不需要任何验证即可完全访问应用程序。
图6-6 一个易受攻击的“记住我”功能
一些“记住我”功能设置一个cookie,其中并不包含用户名,而是使用一个持久会话标识符,例如RememberUser=1328。向登录页面提交这个标识符时,应用程序查询与其相关的用户,并为该用户建立一个应用程序会话。和普通会话令牌一样,如果可预测或推断出其他用户的会话标识符,攻击者就可以遍历大量可能的标识符,找到与应用程序用户相关
联的标识符,不经验证即可访问他们的账户。请参阅第7章了解实施这种攻击的有关技巧。
即使cookie中保存的用于重新识别用户的信息得到适当保护(如被加密),以防止其他用户对此进行推断或猜测,但攻击者通过跨站点脚本之类的漏洞或本地访问用户的计算机依然可以轻易获得这些信息(请参阅第12章了解相关内容)。