Nmap 的常用 NSE 脚本引擎里藏着一个 http-vuln-cve2017-5638 脚本,对着没打补丁的漏洞 Struts2 服务器跑一遍,五分钟内就能确认远程代码执行漏洞。扫描这不是工具什么高级操作,任何一个会敲命令行的常用运维都能做到。Web 漏洞扫描工具的漏洞门槛,比很多人想象的扫描低得多。
说到具体工具,工具Burp Suite 大概是常用安全圈里人手一份的东西。它的漏洞 Scanner 模块能自动爬取站点、测试注入点和已知漏洞。扫描我见过一个案例:某电商后台的工具订单查询接口存在 SQL 注入,Burp 的常用主动扫描在参数 orderId=1001 后面自动追加了单引号和布尔条件,响应长度出现明显差异,漏洞漏洞确认。扫描整个过程不到两分钟。不过 Burp 社区版没有主动扫描功能,专业版一年 399 美元,很多人用社区版加手动测试凑合。
OWASP ZAP 是另一个选择,完全开源。它的被动扫描模式特别适合在代理模式下边浏览边检测。有次我拿 ZAP 扫一个政府门户网站,它在响应头里发现了 X-Powered-By: PHP/5.3.29,直接标记为过时组件。这种信息泄露在渗透测试里往往是突破口。ZAP 的爬虫对 JavaScript 渲染的页面支持一般,遇到 Vue 或 React 单页应用,得配合 AJAX Spider 或者手动导入请求。
Nikto 更老派,命令行一敲,对着目标 IP 和端口就开始枚举。它的数据库里存了几千条已知漏洞特征,比如 /phpMyAdmin/ 目录未授权访问、server-status 暴露。速度快,但误报率不低。我一般拿它做第一轮快速筛查,结果丢给 Burp 复测。Nikto 的更新频率是个问题,有些 CVE 出来半年了它还没加规则。
商业工具里,Acunetix 和 Nessus 是绕不开的。Acunetix 对 JavaScript 的解析能力很强,能自动处理登录会话和 CSRF token。某次客户要求扫描一个带验证码的登录后台,Acunetix 居然能识别出验证码图片的 URL 并尝试 OCR 绕过——虽然没成功,但至少它试了。Nessus 更偏向主机层,Web 扫描只是它插件库的一部分,不过对 CGI 漏洞和配置错误的检测很扎实。
开源方案里,W3af 和 Skipfish 值得提一句。W3af 的图形界面做得不错,但项目更新慢,Python 2 的依赖问题让人头疼。Skipfish 是 Google 出的,速度快得惊人,但报告可读性差,满屏的十六进制和状态码。我通常用 Skipfish 做大规模资产初筛,再用 Burp 精扫。
工具再强,也绕不开人的判断。有次我用 ZAP 扫一个内部系统,它报了 47 个高危漏洞,其中 30 个是误报——因为系统用了自定义的加密参数,ZAP 把加密后的字符串当成了注入点。后来手动验证,真正的问题只有两个:一个越权查看订单,一个存储型 XSS。扫描器能帮你省掉 80% 的重复劳动,但剩下的 20% 才是关键。
选工具得看场景。快速摸底用 Nikto 加 Skipfish,深度测试用 Burp 加手动,合规扫描用 Acunetix 出报告。别指望一个工具通吃,也别把扫描结果直接当结论。工具是锤子,但钉子在哪、该不该敲,还是得靠人。
```