其实要做个受人景仰的白帽子也没那么难,国外某独立安全研究人员Nathan Malcolm最近就在自己的博客中记录了他与Imgur安全团队斡旋,帮助Imgur发现安全问题的全过程,最终甚至还成功说服了Imgur的CEO,给予自己更多奖励,显得相当有趣。
Imgur是国外颇受欢迎的图片分享平台,类似于Instagram。Nathan Malcolm之所以选择在Imgur挖洞,是因为他平常最常用的图片分享工具就是Imgur。
2015年7月份,按照常规,他最先发掘了Imgur的XSS、点击劫持、CSRF等漏洞。然后将这些漏洞汇总为报告,提交给Imgur的支持团队。大约几小时后,Malcolm就收到了Imgur创始人兼CEO Alan Schaaf的亲自回邮——那个时候Imgur还没有专门的安全问题反馈通道。
Schaaf向Malcolm表示了感谢,还发了一些虚拟金币作为奖励。Malcolm在随后的几天时间里仍在坚持挖洞,而且他还会去检查Imgur是否真的修复了他上报的这些漏洞。结果还是比较令人满意的,Imgur对于这些安全问题都挺慎重,绝大部分问题都在第一时间进行了修复。
不过去年9月份的时候,Imgur遭遇被黑事件——攻击者向Imgur上传带恶意JS的HTML文件,以8chan用户为目标。Imgur方面很快修复了问题,大概是意识到安全问题的重要性,一周之后还发布了“BUG奖励计划”。
从此以后,Imgur就有了正规的安全报告提交通道。Malcolm在得知Imgur有了自己的“BUG奖励计划”之后,再度联系了Imgur的CEO,询问先前他提交的那些报告还做不做数,能不能换到奖金。Imgur的一名开发人员进行了回应,给了Malcolm 50美元奖金。
就拿这么点钱,让Malcolm稍微有那么点不爽,他在博客中谈到自己的劳动不该只值50美元。接下来故事的走向应该是Malcolm拍案而起把Imgur的服务器给黑了——作为一个有职业道德的白帽子,Malcolm肯定是不会这么做的,而是继续观察Imgur存在的问题。他很早之前就发现了下面这串代码:
$(function() { if(!/^([^:]+:)////([^.]+/.)*imgur(-dev)?/.com(//.*)?$/.test(document.referrer)) { Imgur.Util.jafoLog({ event: ‘galleryDisplay’, meta: { gallerySort: ‘viral’, galleryType: ‘hot’ }}); } });
基于此,他开始研究这里的imgur-dev.com域名——事实证明,该域名是Imgur用于内部开发的。Malcolm顺手在谷歌搜索中找了找该域名的痕迹(在搜索引擎中输入site:imgur-dev.com——搜索小常识,可查看搜索引擎收录此网站多少网页),发现谷歌先前就已经开始收录其二级域名alan.imgur-dev.com了,里面是个开发版Imgur。
只不过Malcolm在进行搜索操作的时候,imgur-dev.com已经处于离线状态(虽然缓存信息仍然具备了相当价值)。去年11月份时,他又去看了一眼imgur-dev.com,发现这次alan.imgur-dev.com居然上线了,而且可以访问,里面能看到部分用户和发布的测试消息。整个环境仍然是开发环境,其中可以看到部分Imgur源码、PHP警告信息、环境细节、数据库查询、配置文件完整路径等信息(stacktraces)。
2天以后,Malcolm又用SubBrute查询alan.imgur-dev.com的下级子域名,结果还真发现了一个es.alan.imgur-dev.com。这其实是个Elasticsearch搜索服务器,所用Elasticsearch并未采用最新版,存在CVE-2014-3120漏洞。于是,他从服务器上获取到/etc/passwd文件!!!(调皮的Malcolm表示:到此我本应将问题上报的,不过他们只给我50美元和一些金币,我很不爽,我决定再深入些,看看如果我想的话究竟可以坏到什么程度。)
他在服务器上还发现了名为keys.php的配置文件,里面包含Fastly、MailChimp的API Key,Imgur移动应用API Key,甚至还有reCAPTCHA API Key(谷歌的“我不是机器人”验证就是个reCAPTCHA)。更绝的是,keys.php中还有用于连接本地与远程MySQL服务器的凭证信息(通过SubBrute查询到另一个子域名sql.imgur-dev.com)。用它即可成功登录亚马逊AWS云端的远程服务器,至此就完全获取到了Imgur产品数据库的控制权。
到这一步其实就已经差不多了,如果是恶意攻击的话,自然可以达成难以估量的后果。不过Malcolm将此做成报告,提交给了Imgur,另外也不忘给公司CEO发个邮件,内容当然不是说“你只给老子50美元???”而是提出问题严重性。半小时内,Imgur用于开发的这台服务器就立刻下线了,Imgur的CEO同样亲自回复了邮件。
邮件的大致内容是说,这是我们的安全团队失误,不过我们已经采取了紧急措施,已经令其处于VPN保护下。到12月份时,Malcolm因为上报的高危安全问题,获得了500美元的奖金。不过他认为,这点儿钱实在是太小气了,所以他又给Imgur的CEO发了封邮件,内容如下:
BUG奖励其实就像找雇佣兵一样,比常备军要便宜啊…不过如果他们为了更多佣金站到另一边,也别埋怨。(所以是在威胁吗?…)
果然和CEO直接交流,这效率就高多了。Imgur的CEO Alan Schaaf立即回邮表示:我们内部开个会!你等着!到今年1月份,正式给Malcolm回复邮件,内容如下:
Hey Nathan,
新年快乐!我和团队达成一致认为,基于你发现的问题,我们打算给你更多奖励,我们要再多付你5000美元。这比我们以前给出的奖励都要高得多,但你的发现也比先前的要有价值得多。所以我觉得这是你应得的,我也希望你能满意。
非常感谢你为我们提供保护,并且还向我们进行了问题的上报,希望你在新年里一切顺利。
Alan
据Malcolm所说,这笔钱他还跟其他人进行了分享,其中一半给了有需要的人,包括他的一些无家可归的朋友,还有那些生活困难的黑客们。目前Malcolm还在继续为Imgur保驾护航,最终他们live happily ever after,结局看来,还真是励志而美好的故事。看样子Imgur的态度,的确是让Malcolm非常满意。
* 参考来源: Malcolm的博客 ,欧阳洋葱编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.com)