对于正在评估web漏洞扫描器的人应该读读这篇访谈文章。在这篇访谈中,我们谈论了选择web漏洞扫描器的过程以及在选择的过程中应该注意的因素。
最好的web漏洞扫描器应该是什么样的?
这个问题总是在web应用安全领域被提出,也总是没有人能给出一个确切的答案。对一个人有用的扫描器,别人那里就不好用了。这是因为每个站点——现在称为web应用——是不同的。一些扫描器在PHP开发的站点上表现的比较好,另一些扫描器在.NET搭建的站点上表现的比较好,等等情况。而且,每个人的需求也不一样。一些人只是需要扫描器做出一份PCI DSS执行报告。一些人只是需要能提供咨询服务,在做渗透测试时能够给予帮助,因此他们需要一个扫描器提供给他们关于测试目标的尽可能多的信息以及利用扫描器更顺利的进行手动渗透测试。
如何获知哪一款web漏洞扫描器适合需要?
最好的找到一款适合你的web漏洞扫描器软件套装的方法是,当你的站点出现问题的时候它能帮助你把站点变的安全。很多软件公司开发出web漏洞扫描器,然后给你试用版的许可证。互联网上有很多的安全测试站点,你可以使用web漏洞扫描器测试这些站点以此来评估这些扫描器,当然这些测试站点是不会危害到有价值的东西的,比如你自己的站点。
你也能在互联网上找到很多关于web漏洞扫描器的信息和他们的性能指标。经常会有一些web安全研究机构和高校会在试验环境中测试这些扫描器,也会把他们的研究成果写入白皮书发布到网上或web安全杂志上。这些白皮书和技术文章能够帮助你了解业界顶尖的产品,只是不要把这些当做你购买的唯一决定因素。不幸的是,这些东西总是误导人。我绝不是说他们的做法是错误的,也不是说他们做的不好。这些人的工作非常有意义,他们能够帮助软件公司提高web漏洞扫描器的质量水平,但是就像前面提到的,你应该挑选出适合自己站点的web漏洞扫描器。你会惊奇的发现在不同的站点上每款扫描器的性能是多么的不同。
当使用者在测试/评估web漏洞扫描器时,还有哪些建议需要他们注意?
你通常要做的是首先对要测试的站点进行web应用安全测试扫描。尤其是当你还对扫描器的功用和目标站点所存在的缺陷一无所知的情况下,这非常重要。一个外部扫描可能会对你试着去扫描的web应用注入恶意代码扰乱它的操作执行。
首先,你需要理解的是扫描器是如何工作的。Web漏斗扫描器抓取站点信息,找出所有站点中的相关文件和可输入点,并对这些发现的对象目标发起大量的安全检查。这个抓取的过程在扫描过程中是至关重要的一步,因此你要确定web漏洞扫描器能够抓取关于站点的所有对象和输入点。如果它不能发现这些,安全扫描就不会得出正确的结果,因为即使它能发现绝大部分的漏洞,但是只要漏掉一个,而那个又恰巧是输入点或有用的参数,黑客就会利用这个漏洞破坏你的站点。
其次,你应该检查web漏洞扫描器发现了多少实际存在的漏洞。一个常见的错误行为是用户基于web漏洞扫描器发现的错误作出决定,而不去检查它们是不是误报漏洞。你一定不希望一个扫描器误报给你一大堆错误漏洞,然后让你一个一个的去检查。在这种情况下,你就要手动进行渗透测试了——web漏洞扫描器的目的在于减轻你的工作,使你更有效率——而不是浪费你的时间。
如果一款扫描器报告大量的错误信息,很有可能问题出在配置上。Web漏洞扫描器是一种复杂的软件系统,而且由于它们用在各种各样的网络应用中,它们有大量的选择/配置项。一个外部测试可能不会返回一个理想的结果,也许仅仅稍微花点时间重新调整一下扫描器的设置,它就会返回100%正确的结果。因此,在测试阶段就要仔细检查配置信息,熟悉它们,来更好的使用它们。
最后,很重要的一点,你也应该了解软件公司客服部门的工作效率。Web漏洞扫描器是功能复杂的软件,用它去发现站点中的漏洞的过程是漫长而艰辛的。一旦遇到问题,你需要一个高效的技术服务工程师来协助。如果这个客服部门话费太长的时间去回应你的要求,或者它只是简单的和你交流几句,那就太晚了。攻击者找到漏洞的速度比你想想的快多了。
这个问题也引出了另一个问题——我们是否应该使用开源软件?很多“炫技”的人——尤其是在安全领域——在工作中总是使用开源程序。也许它能解决你工作中遇到的问题,可是当你遇到不知如何解决的问题的时候,你就要去它的开源社区或者邮件列表组中寻求答案了。这经常是没有答复,或者是你在忙着收发邮件的过程中花费了大量的时间才得到正确的解决方案,这期间你的站点一直处在易被攻击的状态。
有没有一款自动化的web漏洞扫描器来完全的保护我们的站点或是web应用?
我经常强调的是,自动化的漏洞扫描常常要与人工渗透测试相结合。一款优秀的扫描器会使你的工作变轻松,并且帮助提醒你关键的对象或输入项。但是一些漏洞,自动化软件是发现不了的。一些漏洞被称为逻辑性漏洞。例如,当你测试一个在线购物车功能时,手动设置“价格”参数为“免费”,消费者就会免费得到这款商品。
一款自动化web漏洞扫描器会很好的帮助你发现这个参数,并理解web应用是如何运用参数的,但是它永远不能发现应用中的缺陷。这也是我建议选择一款商业扫描器而不是开源产品的另一个原因。在开源产品中,你能够找到大量的不同工具来帮助你进行人工渗透测试,而在商业性web漏洞扫描器则会配套给你一系列的渗透测试工具,比如fuzz工具,HTTP编辑器,sniffer等等,能够帮助你减轻在手动渗透测试过程中面临的压力。优点就是在一个单独的站点上制定的安全解决方案的数据可以在不同的工具之间通用。当使用那些分散的工具的时候,工具之间的数据共享就变的很麻烦。
Web漏洞扫描器能帮助我们修补漏洞吗?
当web漏洞扫描器发现漏洞后,它会提供大量的技术细节帮助用户理解和修复出现的问题。这些技术信息会包含以下几项:
◆漏洞的详细描述
◆HTTP请求和响应消息头
◆漏洞参数和对象名称
◆注入值
◆修补建议
很多时候,修补建议对一类漏洞都有效——例如,通过过滤用户对于漏洞对象的输入来修补一个跨站脚本漏洞。我的建议是不要仅仅依赖于扫描器的安全建议信息。你应该更多的了解这个漏洞类别,知道它的属性和修补方法。这样也会帮助使用者和开发者下次能够据此问题写出更安全的代码。一些商业web漏洞扫描器也会根据安全建议提供一些关于这个漏洞的参考链接,帮助你发现你需要的信息。
这篇访谈最初在2010年11月22日发表于HelpNet Security。
原文链接:
http://article.yeeyan.org/view/195179/164863
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。