|
某甲方半夜三点打电话给我,漏扫说新上线的和渗系统被人拖了库。我远程连上去一看,透测漏洞就是漏扫他们采购扫描器时送的那次“全漏洞扫描”里报过的——SQL注入,高危,和渗修复建议写得明明白白。透测但他们只做了“验证”,漏扫没做“利用”,和渗觉得“应该没人会这么打”。透测结果攻击者用的漏扫就是那条路径,连payload都没怎么改。和渗 这就是透测漏扫和渗透测试最直观的区别。漏扫是漏扫体检报告,告诉你哪里可能有病;渗透测试是和渗活体解剖,直接证明这个病能不能要命。透测但现实里,太多人把体检报告当病历用,或者反过来,把解剖结果当体检报告看——两个工具被混为一谈,最后吃亏的都是自己。 漏扫的本质是“已知漏洞的匹配游戏”。它拿你系统里的版本号、指纹特征,去跟CVE库、CNVD库比对,命中就报。这活儿自动化程度高,跑一遍全站可能只要几小时,成本低,覆盖面广。但它有个致命盲区:它只认“特征”,不认“逻辑”。比如一个登录接口,漏扫能测出它有没有用弱加密,但测不出“验证码可以重放”这种业务逻辑漏洞。更别提多步操作里的越权、支付金额篡改、权限绕过——这些根本不在扫描器的字典里。 渗透测试则完全是另一套玩法。它模拟的是真人攻击者的思路,不是拿工具扫一圈就完事。举个例子,之前测一个政务系统,漏扫报了个中危的XSS,开发说“我们过滤了尖括号”。但渗透测试员试了试Unicode编码,绕过了过滤,然后结合另一个接口的CORS配置错误,直接拿到了管理员cookie。整个过程没有用任何0day,全是已知技术的组合拳——但漏扫永远不可能帮你把这些点串成一条线。 这里有个很反直觉的事实:漏扫报的漏洞数量越多,不代表系统越危险;漏扫报“干净”,也不代表真干净。我见过一个内网系统,漏扫跑出来零高危,但渗透测试花了三天,通过一个低危的目录遍历,找到了备份文件,从备份里翻出了数据库密码,最后直接登进了生产库。你说那个低危漏洞算“低危”吗?在漏扫的评分体系里算,但在真实攻击链里,它是撬开整个城堡的第一根撬棍。 所以我的判断很直接:漏扫适合做常态化巡检,比如每周跑一次,看有没有新爆出来的公开漏洞没补;渗透测试适合做关键节点验证,比如新系统上线、重大活动保障、或者你觉得“最近总被定向攻击”的时候。两者不是替代关系,是接力关系——漏扫帮你把面铺开,渗透帮你把点打透。 但别指望渗透测试能测出所有问题。它受限于测试时间、授权范围、测试人员的个人经验。同一个系统,让两个不同的人测,结果可能差出一倍。这行当没什么银弹,漏扫是“广撒网”,渗透是“深挖洞”,你非要用一种方式解决所有问题,那跟拿扳手拧螺丝刀没什么两样。 最后说个真实感受:每次看到甲方拿着漏扫报告来质问“为什么你们渗透没测出这个漏洞”时,我都想反问一句——你给渗透测试的时间是三天,攻击者却有一整年。漏扫是帮你缩小攻击面的,渗透是帮你验证防御深度的,但真正的安全,得靠你平时补洞的习惯,而不是某一次“测完就完事”的仪式感。 |