本文知识点:邮箱轰炸 信息泄露
当Facebook只是一家只有几个成员的小公司时,它需要一种方法来获得更多的成员,使用Facebook的邀请系统来邀请你的朋友。
最早的广告发布是在流行的网站上手动发布广告(例如,使用Google),或让您的成员使用其电子邮件帐户邀请其朋友。
现在Facebook成长起来,当您想要更多的网站访问者时,你会在Facebook上做广告,因为每个人都在那里。
Facebook的邀请系统:
当用户在初期加入Facebook时,几乎看不到任何东西。因此,Facebook要求其成员使用由注册用户创建的电子邮件邀请来邀请其朋友。
用户提供了他的朋友的电子邮件地址,他们从Facebook收到了一封电子邮件,说“ 你好啊,你的朋友现在在Facebook上,欢迎您也加入Facebook!”。
有趣的部分:
当我遇到Facebook的这一功能时,我立即开始对其进行分析。我想,如果以用户Y的身份邀请他们加入,并试图愚弄他们,那就太好了,尽管这样做的人是用户X。
当我不断地邀请人们时,我注意到了一些有趣的事情:每个到特定电子邮件地址的邀请中都包含一个邀请ID:ent_cp_id。
单击“邀请到Facebook”时,会弹出一个小窗口,并显示被邀请者的完整电子邮件地址。恶作剧的同时发现了邀请的时候会显示完整的电子邮件地址。
我写了一封邀请信,并且邀请了我的一位好友。
这时我在思考:ent_cp_id是控制邀请邮件的,我已经邀请了这个用户,他的ent_cp_id应该不能再访问了。但我错了。它的ent_cp_id还在那里。事实上,只要重新传输HTTP请求,我就可以再次邀请相同的用户(类似与邮箱轰炸)。
但是这个漏洞最有趣的部分是,任何用户都可能看到ent_cp_id后面的电子邮件地址。
这意味着,任何通过电子邮件被邀请到Facebook的人都很容易受到电子邮件地址泄露的影响,因为该邀请从未被删除,而且任何用户都可以访问它。攻击者接下来要做的就是随机猜测ent_cp_id。正如我所说,老的ent_cp_id没有被删除,所以成功率很高。
结论:
当您处理敏感信息(例如电子邮件地址)时,应始终限制可以执行某项操作的次数。另外,建议擦除可能链接到该敏感信息的任何ID,或者至少对其进行哈希保护。