来源:自学PHP网 时间:2015-04-15 15:00 作者: 阅读:次
[导读] 地址: http: kdweibo com home依次点击: 登陆--忘记登陆密码然后登陆邮箱查看重置链接是否存在缺陷上图中可看到,请求链接存在u和t的参数:尝试数次后可观察到,u是固定不变的,大概是...
地址: http://kdweibo.com/home
依次点击: 登陆-->忘记登陆密码
然后登陆邮箱查看重置链接是否存在缺陷
上图中可看到,请求链接存在u和t的参数:
尝试数次后可观察到,u是固定不变的,大概是userName相关的串,而t是有规律的递增。
紧接着尝试重置密码的操作,发现u这个参数是无用的,post请求只发送一个t参数和表单中的新密码,如下图:
好了,现在我们开始研究这个t参数。在找回密码的第一个页面,连续数次提交我的邮箱地址,获取到5个重置密码的链接,把他们列在下面观察一下:
可以看出,t参数只有5-8位 和最后4位是会变化的,均是自增,变化幅度跟时间有关,初步判定这个t参数仅是根据服务器的时间戳生成的。
由此,就可以轻易地猜出这个t参数,做个示范:
假设我想重置这个人的密码,他邮箱是target@163.com
而我自己的邮箱是me@163.com,我便可以如此操作:
1.在找回密码的第一个页面,提交我自己的邮箱 me@163.com
2.然后连续提交数次目标者的邮箱 target@163.com
3. 再提交一次 我自己的邮箱 me@163.com
这时我的邮箱变收到一前一后两个t参数:
52df 773f 24ac5b651d28 8d42
52df 774d 24ac5b651d28 8d54
那目标者收到的token 5-8位一定是 7740-774c 后四位范围一定是 8d44-8d52之间的偶数
此时,小试数次便可试出目标者的重置密码链接:
重置完密码,自动跳转到目标者的微博主页:
修复方案:
1. 随机码应该做成不容易发掘,或者加密窜采用动态密钥加密(这样就是别人知道这个随机码的规则也计算不出验证码的值就无法构造 )
2. 重置链接的失效机制可进一步改进。目前收到新重置链接时,旧链接还是有效的
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com