导语:我最近向Google报告了一个漏洞,该漏洞允许攻击者确认网页的访问者是否登录到其它利用Google帐户(包括GSuite帐户)登录的网站,并且每25秒可以检查约1000个电子邮件地址。
我最近向Google报告了一个漏洞,该漏洞允许攻击者确认网页的访问者是否登录到其它利用Google帐户(包括GSuite帐户)登录的网站,并且每25秒可以检查约1000个电子邮件地址。
你可以在此演示页面http://www.tomanthony.co.uk/google_leak/上自行测试。
首先,先看一个PoC的视频,告诉你我是如何利用一个帐户(我自己的账户)来识别出20个帐户的:
确认方法
我以前写过一篇关于确定用户是否登录到某个社交网络的文章,而本文所讲述的是这种方法的一个改造和升级。
Google登录页面通常会在用户完成登录后,在用户重定向到目的地的URL中传递一个continue参数。但是,如果你已经登录,那么你将立即重定向到continue参数中指定的URL。
可以利用这个方法制作一个URL,该URL将重定向登录到图像文件的用户,并尝试没有使用登录页面登录的用户。如果现在将此URL用作img标签中的src元素,则可以使用Javascript onload和onerror函数来确定图像是否被正确加载。
如果图像被加载,则代表用户登录;如果加载错误,那么用户没有登录。然而,随着技术的发展,这个方法还衍生出来很多类似的做法,比如,攻击者还可以通过指定电子邮件地址的附加参数来确认用户是否登录。如果电子邮件匹配,则重定向会触发,否则不会。
这样,攻击者就可以动态地创建图像标签的载荷而无需将它们添加到页面,并且等待匹配就可以了。在我的测试中,我可以每23-24秒左右检查大约1000封电子邮件。如果你也想测试,只需要几分钟,那么你可以检查数千封相关的电子邮件了。
攻击者通过结合其他方式就可以识别用户,比如,通过IP确定用户的地理位置或以非常有针对性的社交广告识别用户的公司网络,总之还有许多其他方法来定位用户。你可以动态加载目标列表,然后,根据请求匹配这些人,并记录他们的IP地址,位置,设备和各种其他信息。
如果感兴趣,你可以使用上述方法实施一些动态的鱼叉式网络钓鱼(Spear phishing)攻击。
漏洞披露时间表
7月14日 – 我通过官方渠道的形式向Google安全小组进行了报告。
7月17日 – 我听说它被分类处理。
7月18日 – Google安全小组,询问我处理这个漏洞的建议是什么。
7月18日 – 我提出了通过电子邮件的随机数或加盐哈希的方法,以便重定向时,只能与该哈希和电子邮件的组合一起使用。
7月19日 – 安全小组确认这个问题为漏洞并向总部提交。
7月21日 – 我通过我的博客继续对该漏洞进行了补充说明。
8月9日 – Google团队告诉我,经过讨论,他们不认为这是漏洞,而仅仅是个预期行为(intended behaviour)。所以,他们至今还没有采取什么处理行动。
但是,我认为这就是个漏洞,因为利用它已经能发现具体的攻击目标了。