导语:本文将介绍一种比较经典的枚举用户Gmail邮箱地址的新思路,这种思路可以检索成千上万个Gmail邮箱地址。
本文将介绍一种比较经典的枚举用户Gmail邮箱地址的新思路,这种思路可以检索成千上万个Gmail邮箱地址。
我偶然发现一个小故障,允许我大量猜测现有的且可能是未知的Google帐户地址。
免责声明:本文介绍的方法可能只是一个没有进行合理限制的接口,没有什么太花哨的姿势,所以如果你正在寻找一些比较6的0day,请绕道。?
小故障
https://mail.google.com/mail/gxlu这个网址没有对请求次数做任何限制。另外,我注意到,提供不存在的用户或电子邮件会触发来自服务器的不同的HTTP响应标头。例如这里有一个有效的存在的帐户,请求后你会得到如下响应信息:
如果是一个不存在的账户,请求后响应信息是下图这样的:
这两个请求的HTTP响应状态码都是204并且都没有响应体,但是一个已经存在的帐户对应的请求,服务器会在响应信息中添加一个Set-Cookie头。
猜测有效地址
有了上面的发现,显然我可以决定利用一个Python脚本来滥用这个接口。
利用的主要思路是查找可能存在的[email protected]这样的格式的邮箱地址。
第一步:获取已知名字和姓氏的列表。感谢Facebook和2010年的信息泄漏,这些列表都是公开的。另一个想法是使用randomuser.me 生成假的人名,并检查它们是否可以匹配到一个现有的存在的帐户。
这样我就可以猜测一个电子邮箱地址是否有效可用了,每天猜测到的有效电子邮件地址大约有40,000个,而且这还只是一个比较笨拙的未优化过的PoC。
为什么会造成隐私威胁?
本文所述的漏洞的问题在于这些邮箱地址中的很大一部分是公众不知道的。人们可能希望让自己的隐私得到更多的尊重,而不是被漫天的垃圾邮件骚扰,对吧?
这个威胁可以轻易的限制暴力猜解:验证码或请求速率限制等等。您已经在大多数的Google服务中获得了这些保护,以洋葱网络中的Google为例,有无处不在的captchas服务验证!
不公开的电子邮件的知名度有多大?
我使用https://haveibeenpwned.com/ 这个网站的API检查了已经被破解过的邮箱地址。这个想法是为了获得这些随机和有效的电子邮件地址在某个泄漏的数据库中的概率。有趣的是,结果不是很理想!
只有8.41%的测试邮件地址在这些已经被泄露的数据库中找到。还值得注意的是,我所得到的所有的电子邮件现在都不一定是活动的,我的列表中可能包含了一些旧的和未使用的电子邮件地址。以下是电子邮件最有可能发生泄露的网站:
River City Media垃圾邮件列表(4,98%) SC Daily Phone垃圾邮件列表(2,63%) LinkedIn(2,46%) Dropbox( 1.52%) MySpace(1,37%) Adobe(1,33%) 现代商业解决方案(1,14%) Special K Data Feed Feed垃圾邮件列表(1,01%) Tumblr(0,73 %) Last.fm(0,51%)
影响
这个小故障可能被恶意攻击者利用:可能会涉及到这么一些情况——在最好的情况下,可能是游戏营销活动(接收到未经请求的电子邮件),更糟糕的情况是,像平时一样经常发生的网络钓鱼和勒索软件攻击。
Google的答复
02/03/2017 14:54:00(UTC + 1):联系Google报告此问题
02/03/2017 17:13:00(UTC + 1):Google回复“您的报告已被分类,我们正在审核“
02/03/2017 17:27:00(UTC + 1):Google回复”决定将此问题分派到处理类似问题的团队“
22/03/2017 00:56:00(UTC + 1):Google回复“我们没有忘记你的报告; ”
31/03/2017 16:29:00(UTC + 1):Google决定不把此问题归类为一个安全漏洞。