对web网站、应用等系统进行扫描,从而提早发现更多的安全漏洞,是保护系统不可缺少的手段。一般的web安全扫描大多使用web扫描器,扫描器利用爬虫技术,对目标系统进行资源遍历并检测代码等来发现漏洞,一方面可以减少人工检测的工作量,另一方面误报和漏报也比较多。原因之一是爬虫无法检测一些隐藏较深的系统资源(比如:深层的URL)。这篇文章,笔者主要想和大家探讨减少误报漏报的一个思路。
设计
开始探讨之前,我们先了解一下web漏洞扫描的一般过程和原理,大致分2种:
web扫描器:
利用爬虫获取目标系统的所有URL,再尝试模拟访问这些URL获取更多的URL,如此循环,直到所有已知的URL被获取到,或者利用已知URL列表对目标系统的URL进行穷举,从而获取有效的URL资源。把获取的URL去重后,利用已知漏洞的检测代码对这些URL进行检测,以判断目标系统是否存在漏洞。
人工检测:
通过设置代理(如:burp)来截获所有目标系统的访问请求,然后依据经验对可能存在问题的请求修改参数,或者添加检测代码并重放(如:burp中的repeat功能),从而判断目标系统是否存在漏洞。
web扫描器可以极大的减少人工检测的工作量,但由于爬虫的局限性容易导致误报和漏报;而人工检测可以很好的保证准确性,但依赖于检测人员的经验和精力,尤其是大型系统,很难在有限的时间内完成检测,同样会造成误报和漏报。那么ÿ