基本介绍
在找回密码功能中很多网站会向用户邮箱发送找回密码页面链接,用户只需要进入邮箱,打开找回密码邮件中的链接就可以进入密码重置页面了,找回密码的链接通常会加入校验参数来确认链接的有效性,通过校验参数的值与数据库生成的值是否一致来判断当前找回密码的链接是否有效,例如:网站给出的找回密码的URL如下,单击这个链接将跳转到重置密码页面,通过观察这个链接的参数可以发现uid参数可能是对应修改密码的账户,Token就是之前提到的校验参数,这个参数的值看起来像一个时间戳,猜测系统生成这个token的机制就是使用 的时间戳,把这个值通过时间格式化后发现确实变成了日期,那么这个Token就是可预测的一个时间范围的时间戳,只需要通过这个时间段就可以推测或者暴力枚举出系统生成的时间戳值了,类似这样的弱Token现象有很多,比如将用户的uid加密成MD5或者base64编码或者直接用uid+4位随机数等这种可预测性的内容作为Token,测试时只需要多发几个找回密码的请求观察系统每次发送的找回密码链接中的参数值是否有规律即可
http://www.xxx.com/findpwd?uid=xx-uu-xx-sxx&token=1497515314
测试流程
这是一道在线CTF题目: