热点

WEB漏洞扫描工具

时间:2010-12-5 17:23:32  作者:知识   来源:知识  查看:  评论:0
内容摘要:去年冬天,一个做电商的朋友半夜给我打电话,说网站首页被挂了一条赌博链接。他用的那套开源商城系统,三个月前就爆出过SQL注入漏洞,补丁一直没打。攻击者用sqlmap跑了不到十分钟,直接拖走了用户表。这事

去年冬天,洞扫一个做电商的描工朋友半夜给我打电话,说网站首页被挂了一条赌博链接。洞扫他用的描工那套开源商城系统,三个月前就爆出过SQL注入漏洞,洞扫补丁一直没打。描工攻击者用sqlmap跑了不到十分钟,洞扫直接拖走了用户表。描工这事让我重新审视手边那些漏洞扫描工具——它们到底能干什么,洞扫不能干什么。描工

市面上的洞扫扫描器大致分两类。一类是描工像Acunetix、Burp Suite Professional这样的洞扫商业工具,另一类是描工OWASP ZAP、Nikto、洞扫sqlmap这类开源方案。我自己的习惯是:日常巡检用ZAP挂着代理慢慢爬,遇到可疑参数再手动丢给sqlmap验证。ZAP的主动扫描规则库更新挺勤,但误报率不低,尤其是对SPA应用。上个月扫一个Vue项目,它把前端路由里的/#/user?id=1当成注入点报了高危,其实后端根本没接收这个参数。

Nikto适合做第一轮资产摸底。它不搞复杂逻辑,就是对着目标端口发一堆已知的恶意请求,看返回头里有没有Server: Apache/2.4.49这种带CVE的版本号。速度快,噪音大。我通常把它和Nmap绑在一起跑,先nmap -sV扫端口,再把开放的HTTP服务喂给Nikto。有次扫一个内部测试机,Nikto直接报出PHPMyAdmin的setup.php可未授权访问,登进去发现root密码是空。这种低级错误在真实环境里比想象中多。

sqlmap是另一个极端。它不主动扫,得你告诉它哪个参数可疑。我一般先用Burp抓包,看到id=1这种数字型参数,右键丢给sqlmap。默认配置下它会跑五种注入技术,时间盲注那部分特别慢。有回扫一个MySQL 5.7的站,--technique=BEU指定只用布尔、报错、联合查询,三分钟出结果。时间盲注留着最后兜底就行。

商业工具里Burp的Scanner模块确实省心。它的爬虫能处理JavaScript渲染,对REST API的路径发现比ZAP强。但价格摆在那,一年四千多美元。小团队用ZAP加自定义脚本也能凑合。我写过一段ZAP的Python脚本,专门检测JWT里的alg:none漏洞——扫描器默认不查这个,但实际渗透中碰到的概率不低。

扫描器最大的问题是它们不懂业务逻辑。一个/api/order/123的接口,扫描器只能测出有没有越权访问,但它不知道123这个订单号是不是属于当前用户。水平越权、垂直越权、支付金额篡改,这些都得靠人看代码或者手工测试。去年某银行App的漏洞就是攻击者把转账金额从100改成-100,扫描器根本不会构造这种请求。

还有个坑是扫描器自身的安全。我见过有人把AWVS装在公网VPS上,默认端口3443开着,结果被人反手扫了。ZAP的代理端口默认8080,不设认证的话,同一局域网里谁都能拿它当跳板。跑扫描之前,先确认工具本身没暴露在不可信网络里。

说到底,漏洞扫描工具就是个筛子。它帮你把明显有问题的请求发一遍,省去手动测SQL注入、XSS、文件包含这些重复劳动。但筛子眼的大小、形状,得你自己根据目标技术栈调。拿ZAP扫Java站和扫PHP站,策略肯定不一样。我现在的做法是:ZAP跑被动扫描收集信息,Burp手动测关键业务点,sqlmap验证疑似注入,最后用自定义脚本补业务逻辑漏洞。四层下来,漏报能压到可接受范围。工具不会替你思考,它只是把你从重复劳动里解放出来,让你有时间去盯那些真正要命的地方。

最近更新
热门排行
copyright © 2026 powered by 烟消火灭网   sitemap