今年三月我参与了谷歌软件工程师的面试,没想到完全出于意外,我却发现了谷歌(Google)某个应用服务的漏洞,其也成为了我的第一个赏金漏洞。一切请听我细细道来。
Google在决定聘用某人之前,必须有两三关面试过程,最后一关是,他们会付费让入围应聘者到公司现场面试,我很荣幸,获得了最终现场面试资格。前期电话沟通中,招聘人员简单地向我提到,他们正在使用一种名为Concur的第三方差补费用系统来让应聘者进行机票预订,而我在喜爱的播客节目Freakonomics中,也能经常听到一些Concur的广告。为了应用该系统进行航班预订,需使用Google提供的用户名和密码,同时须申报如护照号码、性别、地址、紧急联系人等个人信息。
Google发给我登录到Concur的用户名是这样形式的:[numbers]@gcandidate.com,比较奇怪。Gcandidate.com - 这是什么? 网站浏览后我发现它就是个空白页,我估计帐户名中的@ gcandidate.com完全是个用来装饰的幌子吧,它没有什么实际意义,只是其帐户信息与我的电子邮件地址相关联而已,另外,域名gcandidate.com还是个未注册域名。
Hmmm….,我认为这种方式稍显奇怪,其本身应该不会构成任何安全风险。还有,每天都有很多聪明人参加Google的面试,如果真会有安全问题,估计也不是我能想到的。
可惜的是,在最终面试过程中我却失利了。接下来在整个无聊的8月我无所事事,突发奇想的想来捣鼓域名gcandidate.com玩玩,我想要是没人注册它,那就我来注册吧,或许当有人查看它时,我会在其中设置一个恶作剧网页,但注册完成后我一直没时间建站。
但两个月前的9月底,我却突然收到了一封发给其他人([numbers]@gcandidate.com)的错误邮件:
哦….,原来Google还一直在用Concur这套差旅费用系统,某人忘记了密码,并认为登录ID是他Concur密码重置请求表中的电子邮件地址,因此, Concur系统向他解释说不是这样的,而该Concur系统回复邮件却误发到了我的邮箱中来,我想这种混淆肯定会发生,也不能完全责怪那个人。
而就在上周,我又收到了一封来自Google的Concur系统邮件,有点烦人,所以我又重新对之前Google在3月份发给我的Concur邮件进行了一番审阅:
在查阅了我之前收到的电子邮件后,我怀疑Google招聘人员使用了“某个固定前缀(fixed_prefix)+数字”的默认密码方式来创建帐户。默认密码本质上算是无用的,在应聘者未更改默认密码的前提下,登录应聘者Concur页面所需的唯一信息,就是他们的帐号。就连我自己在预订面试航班的前一天,也没修改过其默认密码。我只偶尔记得帐号信息,然而大多数时候,好多人会忘记Google分配给自己的密码,而且会把其密码重置方式和注册登录Concur的普通账户方式混淆。对此,我想这种情况下,Google的这种Concur系统应用方式存在默认密码漏洞,可被暴力攻击(虽然利用难度较大)。
进一步分析,我发现Concur系统未部署验证码机制来阻止一些暴力猜解登录,而且也不能监控到gcandidate.com域名发送来的邮件。只要知道确定的默认密码后,就可以使用VB语言编写一个GUI界面,用随机固定长度的ID数字组合账户来尝试进行页面暴力破解,由于我想Google分配的ID账户应该是按顺序来的,我也就没进行暴力登录了,而且这种测试可能会对Concur系统官网本身造成影响。当时我也不知道Concur系统的道德安全测试策略,因此最终我还是放弃了暴力破解的测试,只是去试图联系了Concur安全团队,提醒他们需要添加验证码机制。从技术上说,这本身不是一个安全问题,但对于使用第三方系统Concur的Google来说,这会对其应用服务产生影响。
最终,在向Google报告了这个漏洞之后,Google的安全响应速度非常及时,他们马上和Concur方面合作修复了这个漏洞。现在,Google方面已经把域名gcandidate.com注册在其名下,所以我的恶作剧幻想也泡汤了,但我有了这个人生中的第一个赏金漏洞。
披露:在上述暴力破解漏洞测试中,为了证明漏洞存在性,我仅获取了一位应聘者的Concur记录,而且最终也销毁删除了这些数据。
在本文发布后,我与Concur安全团队进行了一次交流,得知Concur在Bugcrowd有一个官方的漏洞赏金项目。
07/31/2017: 注册了gcandidate.com域名
09/29/2017: 通过我的邮箱进行首次Concur登录密码重置请求
11/25/2017: 通过我的邮箱进行第二次Concur登录密码重置请求
11/27/2017 at 5 PM: 发送漏洞报告
11/27/2017 at 6 PM: Google接收漏洞
11/28/2017: Google回复声称“这应该好像是Concur的错误吧“
11/28/2017: 向Google提供更多漏洞验证性证据
11/28/2017: Google承认了漏洞
11/28/2017: 我通过Twitter与Concur取得联系并进行了沟通
12/05/2017: Google修复了漏洞,向我奖励了$500美金,而且以友好的方式向我索求gcandidate.com域名管理权
12/06/2017: 针对我要公开该漏洞的情况,Google回复称需要对我的发文进行一些审阅
12/06/2017: 我把域名gcandidate.com转给Google注册管理
12/20/2017: Concur公司安全团队联系我并声称会在系统端实施安全改进
*参考来源:amproject,freebuf小编clouds编译,转载请注明来自FreeBuf.COM