15.3 密码重置链接存在弱 Token
有些信息系统的密码找回功能会在服务端生成一个随机 Token 并发送到用户邮箱作
为密码找回凭证。但一旦这个 Token 的生成方式被破解,攻击者就可以伪造该 Token 作为
凭证重置其他用户的密码。测试流程如图 15-19 所示。
图 15-19 测试流程图
15.3.1 使用时间戳的 md5 作为密码重置 Token 步骤一:进入某网站先按正常流程取回一次密码,查看邮箱,邮件内容如图 15-20 所
示。
图 15-20 邮件内容
步骤二:从邮件内容中可以看出参数 vc 为一串 md5 值,u 为用户邮箱。将参数 vc 解密
后为 1496732066。于是猜测参数 vc 应该为 id 值,尝试遍历 id 值并修改变量 u,查看是否可以
修改其他用户密码,结果发现不可行。
步骤三:再仔细观察 vc 参数,发现和 UNIX 时间戳格式相符,于是使用 UNIX 时间戳转
换工具验证,转换成功,如图 15-21 所示。
图 15-21 UNIX 时间戳转换
步骤四:大致推测出该系统找回密码的流程。用户取回密码时,先产生一个精确的时
间戳并与账号绑定记录在数据库内,同时将该时间戳作为密码找回凭证发送到用户的注册
邮箱。只要用户能够向系统提供该时间戳即可通过认证,进入密码重置流程。但对攻击者
来说,只要编写一段程序在一定时间段内对时间戳进行暴力猜解,很快就可以获得找回密
码的有效链接,如图 15-22 所示。
图 15-22 测试 exp
步骤五:最终成功重置密码并登录到个人中心,如图 15-23 所示。
图 15-23 重置密码成功
15.3.2 使用服务器时间作为密码重置 Token
步骤一:进入某积分兑换商城,首先用 2 个账号在两个浏览器窗口中同时找回密码来
进行对比,如图 15-24 所示。
步骤二:对比邮箱中收到的找回密码链接,我们可以看出,找回密码使用的随机
Token 只相差 4,那么攻击者通过遍历 Token 的方式即可重置其他用户的密码,如图 15-25 所
示。
图 15-24 开始找回密码
图 15-25 重置密码链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论