作者:Shubham Shah,澳大利亚安全研究人员,专注于程序开发、渗透测试和黑客技术。2016年初被安全媒体评为10大著名“漏洞赏金猎人”之一。本文原名《高效漏洞挖掘:120天120个漏洞》
2016年初,我就给自己设定了一个目标:在这一年中,平均每天挖掘出一个漏洞。这个决定完全是一种自我挑战。我想回到过去在Atlassian公司时候的状态,当时,我曾经在一个月内每天都发现了一个漏洞,这些漏洞涉及Atlassian公司所有外部程序。
1月初,我就积极准备进行我的高效漏洞挖掘计划,刚开始,我曾在一天之内发现了多个漏洞,然而,随着时间的推进,我觉得在一天之内找到多个漏洞是件非常耗费脑细胞的事,而且在挖洞过程中,我经常感到身心疲惫。
最终,经过120天之后,我结束了这种“日均一洞”的计划。但是,我对自己在漏洞挖掘方面多少有了些体会:
(1)寻找一些新的意想不到的技术方式去拿下目标
(2)把关注重点放在那些自己感兴趣的漏洞上面
(3)通过漏洞奖励平台结交从事安全研究的朋友或同龄群体
以下就是我在120天之内挖掘的121个漏洞列表一览:(全部漏洞请参看博客 Table1 )
以下统计表是对我发现的121个漏洞的大致分类,另外,还有一些杂项漏洞没有包含在内
出于漏洞奖励平台的工作机制,很多提交漏洞可能还处于缓解开发或保密阶段。待所有漏洞被修复公开之后,我会继续更新这些信息。
“资产”实体可以定义为信息系统的所有组成项,包括:应用程序、目录、文件、文件夹、可执行程序或服务器。当然,也包含大多数云平台服务,如VoIP、文件共享、网络会议等。
对“资产”实体的信息收集,是一个非常有趣的过程。例如,当我正对一家公司使用的软件开发组件进行信息收集时,碰巧,该公司的某位开发人员在1 小时之前就不小心把这些组件都上传到网上了,哎呀,对我来说,这是多么美妙的事情啊!
为了保持每天挖掘一个漏洞的节奏,我需要更好的信息系统识别工具,毕竟,想要在一些漏洞奖励项目中发现漏洞已经变得越来越难了,想要获得高额奖励更是难上加难。
为此,我和朋友Nathan Wakelam就信息系统的识别方法进行了一些讨论。最终,我们一起编写了三个相关工具:
Altdns: 通过域名前缀序列变化和排列发现子域名的工具
Assetnote: 通过监视跟踪被动API数据发现子域名
Bugbounty Dash: 显示漏洞奖励项目当前的状态信息
目前,Altdns已经获得了同行的一些认可。
我觉得有效的漏洞挖掘还需要一些外部氛围,如果条件允许,可以与那些值得信任的安全研究人员或漏洞挖掘者一起工作。毕竟,拥有一个同路的伙伴会让你觉得有动力。我非常有幸加入了一群出色的漏洞挖掘者当中,他们有我的同事和好朋友。当我处于挖洞瓶颈期的时候,我身边参与漏洞项目的朋友会和我分享他们的新方法和新思路,这能让我继续充满信心。当其它人发现了一些我所不能发现的漏洞,我都把这当成是一种激发自己学习的动力。还有就是,不要把共同参与漏洞奖励项目的同事和朋友当做竞争对手,否则,你永远都得不到进步。
有时候,应该学着把漏洞发现视角提高到更高、更广的水平。我知道有一些研究人员就是这样做的,如@phwd,他甚至通过参加FACEBOOK的产品发布会,以了解更多关于FACEBOOK的信息。@phwd在参与FACEBOOK漏洞奖励项目中的成功,是我所不能及的,这也决非偶然。
我觉得,应该在信息安全或漏洞挖掘之外,找到一个可以释放压力的方法或爱好。对我自己来说,漏洞挖掘是一个极度深入内心的爱好,每当我忽略了生活中的一些重要部分之后,我就发现自己并不开心。因为热爱过度,陷入太深,有时候我觉得自己已经走火入魔了,如果能有一些东西能让我暂时脱离漏洞挖掘工作,即便是一种简单的爱好或者曾经的美好时光,我也愿意。
我是从2016年1月开始我的“高效挖洞计划”的,在坚持了两个月左右的“一天一洞”节奏后,我遇到了第一个倦怠期。我犯的最大错误是没有完全理解漏洞发现过程的波动性,从黑盒测试的角度来看,未被发现的漏洞是不可量化的,而我自己也不能很好的判断发现漏洞的可能性。在120天的时间里,我曾三次到达了瓶颈期。我每天如果不能按计划发现一个漏洞,情况就会变得更糟;如果在10天之内,我还没有发现一个漏洞,就意味着我必须在一天之内找到10个漏洞。这个计划让我放弃的主要原因在于不断累积的压力。
我支持你尝试这样的高效漏洞挖掘计划,只是不要和我犯同样的错误–“每天发现一个漏洞”。请你放轻松,制订一个切实可行的目标,而不是陷入恶性循环。
当你在提交了漏洞之后,你就没有了真正的漏洞处置权。因为,对于漏洞奖励平台来说,这就是一个买方市场。如果一个项目没有达到你所期望的漏洞奖励,就不要参与这个项目。另外,请记住,没有什么神人愿意出高价来收买你的漏洞,或者让你成为黑客新闻头条,也没有什么所谓的“漏洞赏金猎人”联盟或黑市愿意为你的漏洞买单。基本原则是,我们只是付出有效脑力劳动去获取该得报酬的合同工而已,我们的委托公司客户可能是伟大牛逼的,也可能是极不友好的,这就是漏洞奖励平台和商业市场的本质。
如果在参与漏洞奖励项目中,你认为没有得到你该得的报酬,并且和你提交漏洞的公司有一些内部分歧。我建议你看看这两篇关于漏洞奖励的博文《我是如何成为一个成功的漏洞赏金猎手》、《5年漏洞奖励平台记录和感想》,或许你可以从中得到一些新的观点和想法。
找到并加入那些对待漏洞研究者非常友好的项目,这些项目把漏洞研究人员当成他们自己安全团队的一部份。他们给你的回复很及时,报酬很慷慨,并且互相之间很尊重。
以上就是我对自己“高效漏洞挖掘”计划的一些观点,很乐意和大家分享,也希望大家提出一些意见或建议。
根据漏洞奖励平台上的一部分漏洞为样本,我发现子域名接管或劫持漏洞的奖励范围比较大,可以从 $100 到 $7,500不等。这虽然不可思议,但可能是一些公司在漏洞严重程度上有着很大的不同对比。幸运的是,我曾在一个邀请的漏洞众测项目发现过子域名劫持漏洞,并且获得了高达$7,500的奖励。这个项目为大多数有效漏洞支付了高额的奖金,他们努力修复漏洞并给予子域名漏洞提交者慷慨的奖励。因此,在六个月之后,想找出其子域名劫持漏洞已经变得很难。这就是漏洞奖励平台的作用。
然而,作为一名安全研究者,当你不能找到一种方式来对子域名进行劫持时,你会怎么做?这就是二级子域名劫持该发挥作用的时候了。Web应用程序非常复杂,它可以加载10多个主机发起的应用和不计其数的请求内容。例如,我们可以在wufoo.com类型中嵌入框架或者在Amazon S3 中嵌入JavaScript。有更多关于动态内容通过网页嵌入第三方源的例子,我的大多数子域名劫持漏洞的成功发现都是与wufoo和S3形式相关。
(Wufoo是一个网站应用程序。Wufoo主要帮助人们创建独特的在线表格。 在使用这个Wufoo应用程序设计表格的时候,它会自动生成数据库,后端和脚本,以便用户收集和轻松地理解数据。)
假想一下导致二级域名被劫持的情况:假如你在X公司工作,这家公司已经成立了10多年,并且最近开始了一项漏洞奖励项目。随着X公司各方面不断的发展壮大,在过去的10多年间,其相关网站的CMS系统也创建了大量网页。如果这家公司的网站曾经通过第三方URL的