3.1 漏洞评估

服务器端攻击即找出并利用服务器上的服务、端口和应用中的漏洞。举个例子,Web服务器都有多个攻击途径(Attack Vector)。它会运行一个操作系统,并运行各种各样的软件来提供Web功能。它会有很多打开的TCP端口。这些途径中的每一个都有可能找出一个攻击者能利用的漏洞,攻击者可以藉此潜入系统并获取有用的信息。服务器上的许多协议都是以人类可读的未加密文本处理的。

让我们看看Kali中带的那些用来找出服务器端漏洞的工具。

3.1.1 Webshag

Webshag是一个用于对Web服务器进行安全审计的跨平台多线程工具。Webshag会收集那些通常对Web服务器有用的功能,比如端口扫描、URL扫描和文件模糊测试。你可以通过代理和HTTP身份认证(基本认证或摘要认证),用它来以HTTP或HTTPS的方式扫描Web服务器。此外,Webshag可以凭借IDS规避能力,使请求之间的相关性变得更复杂。

Webshag还提供了其他的创新功能,比如获取目标机器上托管的域名列表,以及使用动态生成的文件名进行模糊测试。Webshag可以进行Web页面的指纹收集,从而能够防止内容变化。这个功能是作为移除假阳性的算法而设计的,旨在处理服务器返回的“soft404” 1 响应。

1 参见 http://en.wikipedia.org/wiki/HTTP_404#Soft_404 。——译者注

Webshag可以用GUI方式访问,也可以用命令行控制台的方式访问。它同时支持Linux平台和Windows平台。在Kali Linux中,Webshag可以在Web Applications > Web Vulnerability Scanners 中找到,名为webshag-gui

Webshag使用起来非常简单。每个功能都会在顶部有个标签。选择想要的功能标签,在目标空间中输入目标URL,然后点击OK 执行。你可以同时运行多个标签。它的功能包括端口扫描、爬虫、URL扫描和模糊测试。下面四个截图分别对应Webshag针对www.thesecurityblogger.com 执行端口扫描、Web爬虫、URL扫描和文件模糊测试:

Webshag支持将安全审计中发现的所有数据以XML、HTML和TXT文件格式导出。Webshag的最终报告会以逻辑化的格式输出,这使其可以作为单独的文档,也可以作为渗透测试交付报告中引用的文章。下面两个截图分别显示了导出选项和审计报告的开头部分。

有关Webshag的更多信息可以参考:http://www.scrt.ch/en/attack/downloads/webshag

3.1.2 Skipfish

Skipfish 是一款Web应用安全侦察工具。Skipfish会利用递归爬虫和基于字典的探针生成一幅交互式网站地图。最终生成的地图会在通过安全检查后输出。

Skipfish可以在Web Applications > Web Vulnerability Scanners 中找到,名为skipfish 。首次启动Skipfish时,它会弹出一个终端 窗口来展示Skipfish的命令。Skipfish可以用自带字典或是定制字典来进行漏洞评估。

有些字典可能在Kali中找不到。你可以从https://code.google.com/p/skipfish/ 下载Skipfish的最新版本和默认字典。

所有可用的字典都位于dictionaries目录中。

Skipfish包含各种命令选项。运行Skipfish时,如果要对某个目标网站使用定制字典,可以先输入skipfish ,然后用-W 选项后跟字典文件的位置路径来选定字典,在其后再用-o 后跟位置路径来指定输出目录,最后是目标网站:

skipfish –o (输出位置) –W (字典文件的位置) (目标网站)

下面的例子演示了使用名为complete.wl的字典文件来对securityblogger.com 进行扫描。Skipfish会在桌面创建一个名为Skipfishoutput的目录。关键字skipfish -o /root/Desktop/Skipfishoutput 指定了输出结果的位置,-W /root/Desktop/complete.wl 指定了字典的位置路http://www.thesecurityblogger.com则是扫描的目标。

在用-W 选项时,后跟skipfish 默认的字典不会运行。你可以复制一份默认的单词表并移除单词表的第一行(#ro ),将其当做一个定制的单词表。如下面的截图所示:

如果没出现编译错误,你会看到一个启动屏幕,上面会说60秒后自动启动,或立即按下任意键启动。

可以按下空格键 来查看扫描的细节,或是观察默认的数字。完成目标扫描可能会耗时30秒到几个小时不等。可以输入Ctrl + C来提前结束扫描。

一旦扫描结束,或是你提前终止,Skipfish会在用-o 选项指定的位置生成很多文件。要查看结果,点击index.html 文件,它会打开Web浏览器。你可以点击每个下拉选单来查看结果。在示例报告部分可以了解更多信息。

3.1.3 ProxyStrike

ProxyStrike 是一个Web应用代理,用来在浏览应用时找出漏洞。它的运行机制跟代理类似,默认监听8008端口,也就是说,你要对浏览器进行配置,使其运行时经过ProxyStrike。这样它才能在你浏览目标网站时在后台分析所有参数。代理功能非常适合用来识别、拦截和修改请求的内容。

要配置如Firefox之类的浏览器,使其使用ProxyStrike,你可以选择Firefox > Preferences > Advanced > Network ,然后选择Settings 。再选择Manual Proxy ,输入Kali服务器的IP地址,后跟端口号8008 (除非你打算修改ProxyStrike的默认端口)。

要使用ProxyStrike,浏览Web Applications > Web Vulnerability Scanners ,然后选择ProxyStrike 。假设你的浏览器发送的流量都会经过ProxyStrike,你会在Comms 标签下看到抓取的数据。我们会在第6章 中进一步介绍如何使用代理。

爬虫功能用来扫描目标网站的SQL或SSL以及XSS插件漏洞非常方便。你不需要将ProxyStrike设置为代理就能使用爬虫功能。要在某个网站上和XSS插件一起运行爬虫功能,你可以点击Plugins 标签,滚动到XSS插件,在勾选框中勾选并启用该插件。然后,选择Crawler 标签,输入带http:// 的目标网站URL,使用插件框来检查爬虫,然后点击它上面大大的Stop 按钮,使其状态变为Running 。添加这些插件会增加扫描需要的时间。ProxyStrike会显示一个状态栏,在那里会显示出扫描还要持续的时间。

Plugins 标签会在扫描开始后显示爬虫的结果。这里找到的攻击可以导出为HTML或XML。

Log 标签会显示哪些任务已经针对目标网站在运行了,以及每个攻击的成功等级。这个文件可以复制到一个文本文件中作为最终交付的结果的一部分。Crawler 标签会列出所有跟目标关联的已发现的去重后的Web链接。

ProxyStrike提供了其他一些有用的功能。有关ProxyStrike的更多内容可以参考http://www.edge-security.com/proxystrike.php

3.1.4 Vega

Vega 是一个安全测试工具,用来爬取一个网站,并分析页面内容来找到链接和表单参数。

要运行Vega,你可以浏览Web Applications > Web Vulnerability Scanners ,然后选择Vega 。Vega会先闪过一个包含介绍信息的横条,然后显示一个GUI。

Vega在右上角有ScannerProxy 标签。要将Vega用作扫描器,点击右上角的Scanner 标签,然后点左上角的Scan 开始新的扫描。

你会看到一个文本输入框,要求输入目标URL。下面的例子是指向www.thesecurityblogger.com 。选择目标后,点击Next

下一节是你访问目标需要用到的选项。这里有两个主要的模块(InjectionResponse Processing ),其中有很多的扫描选项。展开每个模块,选择你想使用的扫描选项,点击Next

下面两个截图中提供了添加cookie和排除模式的能力来避免模糊测试,这两个都是可选的。你可以不做任何修改,就使用默认值,在两个屏幕上都点击Next 。点击Finish 来开始扫描。

Vega会显示活跃的扫描,并将找到的漏洞映射到它们对目标的威胁程度上。

左上角名为Website View 的窗口会显示正在扫描的目标以及跟主目标关联的其他目标。左下角名为Scan Alerts 的窗口会显示找到的漏洞类别。你可以点击警报下方的三角符号查看Vega找到了哪些漏洞。点击任何漏洞,Vega都会显示找到的漏洞详情,并详细描述它可能造成的影响。

下面的截图展示了www.thesecurityblogger.com 上可能存在的跨站脚本漏洞:

Vega界面上的代理 部分可以查看跟目标网站之间的请求和响应。代理 部分会在扫描时弹出。

Vega会在中间的窗口显示找到的漏洞的详情和一个汇总页。这些细节可以复制到最终的交付报告中。

3.1.5 Owasp-Zap

Owasp-Zap 也称为Zaproxy ,是一个专门为Web应用的安全测试而设计的拦截代理。

你可以浏览Web Applications > Web Application Fuzzers ,然后选择owasp-zap 来打开Zaproxy。打开后会弹出一个免责声明,必须接受才能启动该程序。

接受授权证书的免责声明之后,Owasp-Zap工具会启动,并显示另外一个弹出窗口,询问你是否要创建一个SSL根CA证书。这样Zaproxy就可以拦截浏览器中通过SSL传送的HTTPS数据。对测试使用HTTPS的应用来说,这非常重要。要生成SSL证书,点击Generate 按钮即可。

然后它会弹出一个窗口询问是要生成还是导入证书。你可以点击Generate 来生成证书。可以点击Save 来保存新生成的证书,然后选择保存的地方。新生成的证书文件我们命名为owasp_cap_root_ca.cer

保存好CA文件后,点击OK ,然后打开浏览器。对于Firefox,你可以点击Edit > Preferences ,然后选择Advanced 标签。点击Encryption 子标签,选择View Certificates 。再点击Import ,选择你在Zaproxy中生成的证书(那个.cer文件)。Firefox会询问在哪些用途可以信任该数字证书认证机构(CA,Certificate Authority)。勾选全部这三个选项:信任网站、电子邮件用户和软件开发人员。点击两次OK 完成配置。

下一步是设置Firefox来将所有数据流都导向Zaproxy。选择Edit > Preferences ,点击Advanced 标签,然后选择Network 标签。点击Configure 按钮,再点击Manual proxy configuration ,输入localhost 和端口8080 (Zaproxy的默认端口)。勾选Use this proxy server for all protocols 旁边的勾选框,点击OK 。下面的截图显示的就是我们刚刚做的配置:

打开Zaproxy,此时应该能在左上角看到一个Sites 窗口。这个窗口会在你用Firefox浏览互联网时出现。你可以在右侧窗口查看每个页面的所有请求和响应。Zaproxy提供了一个便捷的界面,用于查看各个网页用到的所有资源。

你还可以访问快速启动窗口、在URL to attack 字段输入目标网站的URL来对目标网站进行测试。下面的截图就是Zaproxy对.thesecurityblogger.com进行扫描的场景:

Zaproxy会爬取目标网站以找出跟目标关联的所有连接,然后进行漏洞扫描。要查看已发现的漏洞,可以点击Alerts 标签。

Zaproxy默认不会自动进行身份认证。如果使用的是默认设置,在自动扫描中所有的登录请求都会失败。

你可以在Zaproxy中设置自动登录;不过,需要在使用Zaproxy时首先人工登录网站,告诉Zaproxy登录和退出登录的请求是哪个,然后再启动自动登录功能。GET 请求会出现在Sites 窗口中,你必须在Responses 标签中高亮标记登录和退出登录的响应,具体步骤为:右键点击响应结果,点击Flag as Content ,然后选择它是登录还是退出登录行为。

之后工具栏会显示一个棕色的图标来表示自动身份认证。点击该图标来启用自动身份认证,这样在Zaproxy对目标进行自动评估的过程中,当遇到任何身份认证请求时都能自动登录。这个功能在对要求身份认证的网站进行自动检测时很有用。

Zaproxy有一个插件市场,你可以在Help > Check for updates 中找到。它能提供其他一些可以添加到Zaproxy工具中的功能。

Report 标签下,Zaproxy提供了不同的报告选项。

这里有个针对www.thesecurityblogger.com生成的HTML报告的例子。

3.1.6 Websploit

Websploit 是一个用来扫描和分析远程系统以找到漏洞的开源项目。

要打开Websploit ,你可以浏览Web Applications > Web Application Fuzzers ,然后选择websploit 。它会先弹出一个终端窗口,里面显示Websploit 的横条。你可以通过show modules 命令查看所有可用的模块以及运行特定模块需要的条件。

输入USE ,后跟你要添加的模块以及运行时需要的信息。举个例子,要运行webkiller 模块,你要输入use network/webkiller ,然后用set TARGET 命令来设定攻击的目标。输入RUN 来运行该模块。