如何成为一名白帽子?知乎上有千奇百怪的回答,点赞数最高的是昵称长短短的用户回答:
对「语言」、「程序」、「业务」保持本质的好奇。
意识到是「漏洞」选择了你,当你归功于自己的时候,你的创造力会被剥夺。
分享,是一种生命力表达的方式,而不是为了获得他人的认同,不要对分享抱有索取回报的心。
你对你做的事情无比狂热,但毫不在意结果与回报,依赖于结果,一定会被吞噬。
In the moment,你没有任何目的。
你有计划地探索,而不是毫无意义的「越多越好」。
只有目标明确,你才能过滤外界干扰。
你的量和方向必须一致,效率才能最大化,而为了牛逼而牛逼,方向已经错了。
量变到质变是永恒不变的真理。
不要觉得自己在等待什么。
坚定,执拗,在这群人身上似乎看不见放弃,不过最近,雷锋网宅客频道(微信公众号:letshome)就在 FIT2018 互联网安全创新大会上听到了一个“反其道而行”的演讲——《Web安全从入门到放弃》。演讲人为青藤云安全分析师宫华(CplusHua),在他身上有着蚂蚁金服安全应急响应中心(AFSRC)36W 单个漏洞现金奖励最高得主、90后的标签,所以何谓放弃呢?
提到 Web 安全,国内外都会关注的一个话题就是 OWASP Top 10(十大应用软件安全风险)。早在今年 4 月份,OWASP(开放式 Web 应用程序安全项目)就发布了十大候选漏洞,11月底,在更新了两个漏洞类别之后,最终版 OWASP 终于发布。
尽管与 2013 OWASP Top 10 相比,企业安全面临的威胁在不断变化。但在此次更新中,注入类漏洞仍以“王炸”姿态稳居 Top 10 威胁之首,另外也有些“新面孔”开始被越来越多人重视,比如失效的身份认证、安全配置错误、失效的访问控制以及不安全的反序列化问题等。
虽是“萌新”,但这几个问题却不可小觑。
雷锋网了解到,反序列化问题之所以近年被普遍重视,主要是因为每次产生漏洞较为严重。比如针对库的中间件进行反序列化,再利用其获取更高权限。大部分攻击者在运行这些中间件(如 weblogic )时候,可以通过构造恶意输入让反序列化产生非预期的对象,而非预期的对象在产生过程中就有可能带来任意代码执行。
另外身份认证问题也被提升至较高地位,举例说几乎每个网站都有重置密码功能,而在这其中发生过密码任意重置的网站占据 50%。这就意味攻击者可以毫不费力地重置用户密码并进入用户账户,但这一威胁却在今年才被提升至此高度。
一口气是吃不成胖子的,还会噎死,作为一个攻击者或者白帽来说,想要找出网站或者企业漏洞也并非速成,而是小口吃饭。
第一步也是最常规的操作,即信息收集。攻击者需要对企业进行系统的信息整理,包括企业资产,业务系统以及企业使用的服务器类型、版本、中间件等。梳理这些信息有助于白帽通过版本对比或是漏洞探测,观察是否存在常规意义上的漏洞。
第二,发掘漏洞的过程,不仅要分析业务场景,更要分析程序员的代码思维。
纳尼?竟然变成了心理战?
为什么要分析程序员?每一个程序员在进行编程工作时,实际上会有固定思维方式。也就是说可以从某一业务交互过程中展示出来的内容进而分析其开发思维,在知道程序员思维方式后就可以找到其在思维上存在的一些漏洞。
宫华表示,在黑盒漏洞挖掘中,通过这种方式可以模拟程序员思维,再结合对业务输入和输出的模糊探测,从而推测出程序员的代码逻辑,进而分析是否存在漏洞。
让人意想不到的一点是这些业务系统接口上有时候存在一些看起来无关紧要的漏洞,似乎不修复也没有问题。但是实际并非如此,一个成功的漏洞攻击可以使用多个低危漏洞或者中危漏洞将其变成高危漏洞。
举个栗子,比如黑客入侵商城系统,篡改商品订单数据,一分钱买 N 元物品的案例在某些网站早期常常发生,随后众多厂商也发现了这一问题,并开始采取种种校验手段。
但道高一尺魔高一丈,攻击者可以通过控制一个没有做好输入参数控制的签名接口产生其想要的输出。也就是说即使在提交订单的位置无法篡改订单金额,但是可以通过一个其它接口来输入想要签名的数据,得到签名输出结果。在得到这一结果后,就可以伪造一个合法的订单或订单支付成功的回调。
这就相当于一个“黑盒加密机”,利用这个盒子可以进行加密或者签名。但其输入端是攻击者可控的,如果攻击者有这样的签名机器,其可进行多种签名操作,且不需用户的密钥信息。
雷锋网了解到,同样的问题也会出现在密码重置场景,一般来说重置密码时网站会给用户邮箱发送链接,链接即 token(此处可以理解为经过“黑盒加密机”加密或签名的数据或摘要),正常逻辑下 token 由密码重置接口控制生成。
“但是如果你能够在目标发现另一个接口,也能够产生类似的 token,我们可以考虑是否能够利用发现的另一个接口(加密机接口),来产生一个token去重置目标的密码。”
另外,在用户注册过程中,也可以利用服务器返回 cookie 的特点获取用户名密码。
有一些网站在用户注册过程中,会在注册成功后或用户注册成功登录后,将加密的用户名、用户 uid 存放到 cookie 中,然后根据 cookie 中存放的用户 uid 来识别用户。
“但是该网站的注册用户名却允许全数字,因此我们可以通过注册一个全数字的用户名,并在登录后得到一个加密数据,然后将该加密数据填充到 cookie 中 uid 对应的位置。cookie 发送到服务器后,就会使用相同的加解密接口来获取用户的 uid。这样我们就可以登录使用数字用户名注册的用户的 uid 所对应的其他用户的账户了。”宫华说道。
还有一些威胁来自企业使用的云上环境,尽管这可以降低企业基础建设的成本,但这一环境也存在安全问题。宫华提到在他们最近的测试中发现有些企业采取了一些防护措施禁止云上主机被其他网络或用户任意访问,比如增加了 IP 白名单,只允许企业自己的主机 IP 地址段范围进行访问。但由于云上特殊性,同一个 IP 地址段还可能存在其他租户,所以这些基于 IP 地址段的访问策略就极有可能被绕过,从而导致企业内网对外暴露。
实际上很多厂家都可能存在类似问题,企业上云所带来的漏洞以及风险似乎加倍提升,特别是当攻击者能够进入企业内网环境就可以发现更多的内网漏洞,危害极大。
“找洞”只是过程,最终目的还是为了“补洞”,白帽在找出企业漏洞之后是如何帮助企业修复漏洞呢?
一般优先通过企业 SRC 或可信合理的第三方向企业报告该漏洞,在报告该漏洞时会附带对于该漏洞的修复建议,同时企业也会内部对该漏洞进行评估并选择适合自己的修复方案进行修复。
既然废了这么多力气挖洞为什么要讲究放弃?
在宫华看来,挖洞这件事因人而异,一种人即文章最开始所形容的,热爱 Web 安全,希望为了企业安全发现更多漏洞,并且有自己的思考和研究,这些白帽子则应该坚持下去。
而另一种人,消耗着自己的时间,刷一些意义不大的洞,甚至做一些破坏目标业务系统的事情,通过这种方式赚钱,才应该是放弃的。
这里可以算笔账,一个白帽子挖洞最高奖励大概是三十五万美元,但多数挖洞奖金都是几百到两万美金之间。观察比特币涨势图可以知道,通过刷洞来获得的收益并不高,BTC“看起来”更轻松而更有利润空间,既然是为了赚钱,为什么不放弃 Web 安全,而去利润空间更大的其他平台赚钱呢?