选择漏洞扫描器时需要注意的几点(翻译)

这是翻译系列的第一篇,如有不足希望大家指出。 原文:http://www.acunetix.com/blog/articles/choosing-a-web-vulnerability-scanner/


评估一个网站漏洞扫描器的好坏并不容易,随着大量的开源或商业的扫描器不断涌出,它们都声称自己提供了最好的扫描功能,所以选择一个好的扫描器是一个重要而又艰难的决定。在这篇文章中,我们提供了几个当您选择扫描器时可以考虑的关键之处。

易用

漏洞扫描早就不再是一件容易的事情,虽然(希望)很多人都了解如SQL注入、XSS一类的基础知识,但并不是所有操作扫描器的人都是相关专家。理想情况下,你的大部分时间应该用于修复扫描器发现的漏洞而不是学习如何使用扫描器。

有广泛的安全测试

漏洞扫描器应该能识别出更多的漏洞。尽管现在大多数的扫描器都能识别出一些基本、常见的漏洞,但你选择的扫描器最好也能识别出那些不太常见的漏洞。

能识别漏洞变种

一个好的扫描器除了能识别出大量的漏洞外,应该也能识别检测出这些漏洞的相关变种。用XSS举例来说,开发者可能修复了基本的XSS漏洞,但却不能防止经过编码后XSS漏洞攻击。

覆盖更多的网络技术

(PS:应该是指更加新一些的扫描器) 漏洞扫描的第一步是抓取网站页面,爬虫将识别所有组成页面的表单以及元素。但随着网站动态技术的发展,这个目标并不像想象中那么简单了。特别是越来越多的网站使用如:javascrept、HTML5、类似Google Web Toolkit 一类的网络框架、单一页面程序或其他前沿的技术。 记住,漏洞扫描器只能识别出在爬虫阶段被确定的页面或元素,所以你应该选择那些能够识别目标网站使用什么技术的漏洞扫描器,并且开发者能够频繁的更新以便于跟上最新的技术。

智能扫描

我们可以把每项扫描看成是一个孤岛,这也就意味着每项扫描结果和其他的扫描是不相关的。在某些理想情况下,一项扫描的结果应该可以当作另一扫描的输入。 举个例子来说,在扫描过程中识别出了一个邮箱地址,在理想过程中这个邮箱地址应该在扫描过程中被使用,就像用于网站中的登录表单中。再举个例子,扫描过程中发现了某些开发工具,比如版本控制工具(GIT或者SVN),网站也会尝试解析这些控制工具的内容,而这些内容中常常包含一些敏感信息。

覆盖内容管理系统

很多的组织使用内容管理系统(CMS)去频繁的发布文章等内容,常见的CMS包括WordPress, Joomla, Drupal等。它们每一个都包含相应的漏洞,目标网站也许就使用其中的一个,因此漏洞扫描器应该能够检查它们的配置错误以及漏洞。

支持移动终端

(PS:检测那些支持移动端的网站而不是这个扫描器有手机版) 现在很多网站对移动终端提供了相应的版本,它们将在智能手机或平板上自动加载,并且提供了和PC版一样的功能。这些移动版本或许存在漏洞,确保你的扫描器也能扫描这些移动版本的网站程序。

灰盒测试

很多漏洞扫描器提供了黑盒测试以便于在没有源码的情况下进行漏洞扫描,而灰盒测试则在扫描时在扫描器和网站之间安装了一层代理。灰盒测试通过更加完全的覆盖以及准许扫描者自定义更多的漏洞验证、特征码等信息来增加扫描的成功率。比如一段存在漏洞的后端源码或者包含SQL注入的SQL语句。

手工测试工具

扫描器在完成一个扫描前是不能停止的,在某些情况下你可能需要修改扫描出的某些东西。理想情况下扫描器在产品中集成了某些工具,准许你在手工测试时候简单的重新利用自动测试产生的结果。

警惕零误报

尽管现在多数的漏洞扫描器都很诚实并且工作的很好,但你仍然需要注意扫描器没扫描出任何漏洞的情况。一种常见的想法是认为扫描器应该达到零误报的情况,然而零误报的扫描器是没有多大用处的,事实是任何漏洞扫描器都达不到100%的准确率。如果一个扫描器声称自己零误报,要么是它们没作出全面的检测,要么是没全部展示。 2015年是Acunetix Web Vulnerability Scanner10周岁生日,10年来我们不断的对其开发并优化,使其成为了扫描器市场中的领跑者。 (PS:这广告是原文中的…)