Copyright © 2017 保留所有权利
metter_huang@qq.com
15770739247
赣ICP备号

本站服务端基于创建
2016-10-26 14:07:59 来源: Derek Prior
自助式密码重设是多数网站普遍存在的的一个模块。典型的密码重设链接通过电子邮件发送,此中包含能够确认用户身份的唯一信标。通过点击链接,用户证明他能够访问账户关联的邮箱,由此就通过了次级要素认证。到了这阶段,用户将被要求提供新的密码。
如果黑客能够访问到密码重设链接,他将能够以用户身份通过认证并重设密码,由此便取得了无限制的用户账户访问权限。黑客实现这种攻击通常需要能够访问到用户的电子邮件,然而作者最近发现很多网站会无意中将密码重设链接发给其它第三方网站。要弄明白怎么回事,我们首先要了解网站是怎么收集页面引用信息的。
HTTP 引用头会被您的浏览器发送给站点服务器来标记正在发出请求的网站 URL 。这主要被网站运营者拿来做分析研究用。运营者通过这些页面引用数据来知道人们是通过哪种搜索方式找到的他们站点的,或者是有多少用户访问了他们最近的社交媒体闪推。当用户点击链接或是浏览器获取当前渲染页面所引用的资源如一张图片、一个样式表、一个JavaScript文件、一个视频等时此引用头便会被浏览器发送。
如果渲染页面通过HTTPS协议加载但引用的资源是通过HTTP协议去获取则该引用头不会被浏览器发送。另外,有些浏览器遵循 引用策略规范,此规范允许页面作者控制什么情况下把完整的引用信息赋予引用头。不幸的是,此规范还未成为行规所以从安全方面考虑还不能过于依赖于此规范。
当用户请求密码重设时,他们会通过Email收到一个象这样的链接: https://example.com/passwords/edit?token=1234abcd。当用户点击此链接,站点程序会把密码重设表单放到一个网站通用的页面布局。该布局可能会引用从可信 CDN(内容分发网络)加载而来的资源,或是含有分析包如 Segment,也可能包含指向外部的(例如公司在社交媒体上发布的信息)的链接。
作为处于用户点击邮件中链接和渲染密码重设表单中间衔接定位的浏览器,当它请求引用的资源或分析包时,会把重设链接暴露在发送的引用头当中。而如果用户并未完成密码重设而是中途点击了外部链接,重设链接也会在此类请求的引用头中被泄漏。
此种泄漏的严重程度由以下几个因素而减轻:
以上这些因素使得该漏洞很难被利用。然而虽说很难想像会有邪恶的雇员在您信任的内容分发网络上在引用信息传入后立即行动,但有黑客会把同一 CDN 作为攻击目标且碰巧在服务器日志上发现此类有极大潜在利用价值的信息就不难想像了。鉴于此种原因,修正这个漏洞是很重要的,即使它被利用的机率很小。
您可以执行以下的测试来判定您的网站是否有可能把密码重设链接泄漏给了第三方站点。
如果还能得到可用的密码重设表单页面,则证明了假如其它任何缓解措施,此页面产生的所有引用头都会包含有效的密码重设 URL。
如下图所示:您可以使用浏览器所带的Web检查器中的“网络”选项卡来检视密码重设页面渲染过程中生成的所有请求查看是否存在重设链接泄漏的情况。您还要检查页面文档中的所有HTML链接,看是否有指向外部的HTTPS协议资源,有的话该链接被点击后就会发生泄漏。
从上图可以看到 Upcase 网站将密码重设链接泄漏给 CDN “Cloudfront” 的案例
如果重设页面通过无痕浏览模式加载后并无获取或链接到外部的举动则说明当前状况下是不会发生泄漏的。但您仍然应该采取措施杜绝此种可能性,因为将来的某些在页脚链接或外部资源加载的改动仍可能由此产生隐患。
If the page loaded in your private browser instance, but it does not fetch or link to any external resources then it is not currently leaking the password reset link. However, you should still take steps to eliminate this possibility altogether as any future changes to, for instance, footer links or external resources loaded could cause this to be a problem.
此漏洞可通过确保点击 Email 中的密码重设链接后生成的结果页面URL中不存在有效密的码重设信标来阻止。
Comment this article