我们有成百上千个使用asp,.net和java开发的网站,并且我们为外部机构付出了很多钱,以对我们的网站进行渗透测试以检查安全漏洞。是否有任何(好的)软件(收费或免费)可以做到这一点?
或..有什么技术文章可以帮助我开发此工具?
使用针对Web应用程序的自动测试工具,可以有两个不同的方向。
首先,有 商用Web扫描仪 ,其中HP WebInspect和Rational AppScan是最受欢迎的两种。这些是“多合一”,“一劳永逸”工具,您可以在内部Windows桌面上下载并安装这些工具,然后提供URL来对您的网站进行爬网,扫描众所周知的漏洞(例如, (点击Bugtraq),并探究跨站点脚本和SQL注入漏洞。
其次, 有源代码扫描工具 ,其中Coverity和Fortify可能是最著名的两个。这些工具是您安装在开发人员的桌面上的工具,用于处理Java或C#源代码,并寻找众所周知的不安全代码模式,例如不良的输入验证。
最后,还有 渗透测试工具 。到目前为止,安全专家中最受欢迎的Web应用程序渗透测试工具是Burp Suite,您可以在http://www.portswigger.net/proxy上找到它。其他包括Spike Proxy和OWASP WebScarab。同样,您将其安装在内部Windows桌面上。它将作为HTTP代理运行,您将浏览器指向它。在记录您的操作的同时,您将像普通用户一样使用应用程序。然后,您可以返回到每个页面或HTTP操作,并针对安全问题进行探测。
在复杂的环境中,尤其是在考虑自己动手做DIY时, 我强烈建议您使用渗透测试工具 。原因如下:
商用网络扫描仪提供了很多“广度”,同时还提供了出色的报告功能。然而:
他们倾向于错过事情,因为每个应用程序都是不同的。
它们很昂贵(WebInspect开始于千分之十)。
您需要为不需要的东西付费(例如90年代已知的不良CGI数据库)。
它们很难自定义。
它们会产生嘈杂的结果。
源代码扫描程序比Web扫描程序更彻底。然而:
它们比网络扫描仪还要贵。
它们需要源代码才能运行。
为了有效,它们通常需要您注释源代码(例如,选择输入路径)。
他们倾向于产生假阳性。
商业扫描仪和源代码扫描仪都具有成为架子器的坏习惯。更糟糕的是,即使它们有效,其成本也可以与咨询公司审核1或2个完整应用程序相提并论;如果您信任您的顾问,则可以保证他们从工具中获得更好的结果。
渗透测试工具也有缺点:
它们比一劳永逸的商用扫描仪难用得多。
他们承担了一些有关Web应用程序漏洞的专业知识—您必须知道要查找的内容。
他们很少或没有正式报告。
另一方面:
它们便宜很多,便宜得多-Burp Suite仅售99EU,并提供免费版本。
它们很容易自定义并添加到测试工作流程中。
它们更好地帮助您从内部“了解”您的应用程序。
您可以使用针对基本Web应用程序的笔测试工具进行以下操作:
通过代理登录到应用程序
创建应用程序主要功能区域的“命中列表”,并分别执行一次。
在笔测应用程序中使用“蜘蛛”工具查找应用程序中的所有页面,动作和处理程序。
对于蜘蛛发现的每个动态页面和每个HTML表单,请使用“模糊器”工具(Burp称其为“入侵者”)来使用无效输入来执行每个参数。大多数模糊测试工具都附带基本的测试字符串,其中包括:
SQL元字符
HTML / Java转义符和元字符
这些的国际化变体规避输入过滤器
众所周知的默认表单字段名称和值
众所周知的目录名称,文件名和处理程序动词
花几个小时来过滤产生的错误(一种形式的典型模糊测试可能会生成1000个错误),以寻找可疑的响应。
这是一种劳动密集型的“裸机”方法。但是,当您的公司拥有实际的应用程序时,裸机方法便会奏效,因为您可以使用它来构建回归测试套件,该套件将在每个应用程序的每个开发周期中像发条一样运行。这是一个胜利,原因有很多:
每个应用程序的安全测试将花费可预测的时间和资源,这使您可以预算和分类。
因为您的测试将针对您的应用程序进行调整,所以您的团队将获得最大程度的准确和彻底的结果。
它的成本将低于商用扫描仪,也将低于顾问。
当然,如果您走这条路,基本上就是在将自己变成公司的安全顾问。我不认为这是一件坏事。如果您不想要这些专业知识,WebInspect或Fortify不会为您提供任何帮助。