前言
最近一直在看国外众测的文章,偶尔也逛逛hackerone,发现公布的漏洞中存有不少的逻辑漏洞
,毕竟在hackerone上提交漏洞过审之后给的是美元,还是很有诱惑力的。
密码找回功能也是老调常谈的一个功能,前段时间也写过一篇文章是关于
密码找回的
,发现总结的不是很全面。
借这个机会通过展示国外众测例子希望能对这个漏洞有个较为全面的总结
一、 密码重置链接未过期
当用户请求更改密码时,会得到一个密码重置链接来重置密码,该链接应该在一段时间后过期。
如果没有过期可以多次使
用密码重
置链接来重置密码,那密码重置功能应该存在问题。
在hackerone上找了下,大部分的案例都是先请求获得一个密码重置链接,然后更改获得重置链接的邮箱,发现重置链接没有过期还可以使用,这也算一个思路吧。
但是和我所认知的密码重置链接未过期还是有点偏差的,一般理解的密码重置链接未过期基本上是使用了重置密码链接还能再次使用或者再次获取密码重置链接后前面获取的密码重置链接未失效或者密码重置链接过期时间很长等等,大家都懂啥意思,就不具体举例子了
二、 密码重置无速率限制
我们在通过邮件或者短信获取找回密码的链接的时候由于服务器对获取链接的速率限制不严格或者没有限制,攻击者可以通过重放操作来发送大量的密码重置链接,从而产生短信轰炸或者邮箱轰炸漏洞,在日常的工作中其实可以尝
试在email或者电话号码中添加特殊字符比如 空格 +86 ? \等来绕过对email或者电话号码的限制。
常规操作了,原因很多师傅也分析过,这里不在多说。
重放请求包,获取大量的重置密码的邮件:
三 、输入长密码时拒绝服务
密码通常为8-12-24位或最多48位。
如果在设置密码时没有字数限制,当你更改密码或者创建账户检测密码时由于长字符串导致拒绝服务攻击
。
总之这算是一个风险点吧,测试
的时候可以留意下,万一那天碰到一个系统错误导致溢出敏感数据,那就不单单是个风险点了。
四、 通过密码重置页面进行用户枚举
这个显而易见,有的网站会提醒你输入的用户名或者邮箱是否正确,网站可能在登录做了防护,在忘记密
码处可能忘记了。
总之不要错过每一个可以进行信
息搜集的地方。
这是一个已经修复好的网站的返回信息,并不告诉你是否发送了邮件,也算是一个规避手段吧。
这漏洞可大可小,总之要在安全和用户体验之间平衡。
五、 host 头中毒
攻击者
修改目标的host头将密码重置链接的域名修改为自己的域名。
其实这也是很常见的一种漏洞了,邮件还是发送到受害者的邮箱,如果受害者没注意的话点击链接,攻击者控制的网站的记录中可以查看到请求记录,然后在拼接成正确的域名即可实现任意用户密码重置
更改 host头:
在邮件中可以看到密码重置链接的域名已经被修改为攻击者控制的域名
六、 referer泄漏密码重置令牌
referer请求头包含上一个网页的地址,所以有可能我们在打开重置链接页面时,点击重置链接页面的另一个链接会带上referer,从而泄露密码重置链接。
打开密码重置页面,添加电子邮件并单击发送
点击重置链接,获取重置页面, 点击网页上提供的任何应用程序(twitter、facebook、linkedin),使用burp拦截请求
可以看到在Referer中泄露了密码重置链接