|
灰盒测试经常被塞进渗透测试的灰盒筐里,这让我很不舒服。测试上周跟一个甲方安全负责人聊,不属他拍着胸脯说他们季度渗透测试做了灰盒,于渗我问他给了什么材料,灰盒他说给了登录账号和部分API文档。测试这哪是不属渗透,这是于渗拿着地图找宝藏。 真正的灰盒渗透测试,前提是测试模拟攻击者。攻击者手里有什么?不属要么什么都没有,这叫黑盒;要么通过公开渠道搞到点零碎信息,于渗比如GitHub泄露的灰盒代码、LinkedIn上员工职位、测试Shodan扫出来的不属开放端口。灰盒呢?直接给你内部网络拓扑、源码、甚至数据库结构。这等于考试前老师把答案塞你手里,你还管这叫“模拟实战”? 有人会辩解说灰盒效率高,能挖到更深的逻辑漏洞。这话没错,但方向错了。灰盒测试的核心目的是验证系统内部逻辑的正确性和健壮性,它更接近代码审计或者开发自测的加强版。你在灰盒模式下发现一个越权漏洞,这确实有价值,但价值在于你知道了业务逻辑的缺陷,而不是因为你像黑客一样突破了防线。黑客可不会拿着你给的API文档慢慢琢磨参数怎么拼。 我自己做过一次灰盒测试,客户给了完整的用户角色权限矩阵,连管理员后台的隐藏入口都标出来了。我花了两天时间把每个角色的越权点过了一遍,找到十几个问题。但说实话,这活儿干完我心里发虚——我根本没测试过他们外网暴露面有多大,也没尝试绕过WAF,更没试过从钓鱼邮件打进内网。那些东西才是渗透的本职。 业界有个老梗:黑盒测试是“从门外撬锁”,白盒是“把锁拆了研究内部结构”,灰盒介于两者之间,但本质上还是在“研究锁”,而不是“撬锁”。渗透测试的定义里明确包含“模拟恶意攻击者的行为”,而恶意攻击者永远拿不到你的源码和账号。你见过哪个黑客入侵前先管你要份系统设计文档的? 把灰盒包装成渗透,很多时候是乙方为了省事。黑盒测试要花大量时间做信息收集、漏洞扫描、手工验证,灰盒可以直接跳到业务逻辑层,出报告快,漏洞数量还好看。但这种偷懒直接拉低了整个行业的专业性。甲方花了渗透测试的钱,得到的却是内部质量保障报告,真正的攻击面反而没人碰。 我承认灰盒测试有它的位置,尤其在开发阶段或者重大版本上线前,它比黑盒更能发现深层次逻辑问题。但你要叫它“灰盒安全评估”或者“灰盒代码审计”,别蹭渗透的热度。渗透就是渗透,哪怕你只测一个登录接口,只要是从攻击者视角出发,不知道内部实现,那才叫渗透。灰盒测试和渗透测试的边界,不该被商业宣传抹掉。 |