20.4 其他工具

除前面讨论的工具外,在特殊情况下或执行特殊任务时渗透测试员还可以使用许多其他工具。在本章的剩余部分,我们将介绍其他几种攻击应用程序时可能遇到或需要使用的工具。需要注意的是,以下内容仅仅简要介绍了笔者曾使用的一些工具。建议渗透测试员调查各种可用的工具,并选择最适合自己需求和测试风格的那些工具。

20.4.1 Wikto/Nikto

Nikto可确定Web服务器上默认或常见的第三方内容。它包含一个大型文件和目录数据库,其中含有Web服务器上的默认页面与脚本以及购物篮之类的第三方软件。基本上,这个工具轮流请求上述每一种项目,然后探查它们是否存在。

数据库会频繁更新,这意味着Nikto能够比其他任何自动或手动技巧更有效地确定这种类型的内容。

Nikto包含大量可通过命令行或基于文本的配置文件指定的配置选项。如果应用程序使用定制化“未发现”页面,渗透测试员可以通过使用–404设置避免错误警报,该设置允许指定一个出现在定制错误页面中的字符串。

Wikto是Nikto的Windows版本,该版本新增了一些功能,如增强了对“未发现”响应的检测和Google辅助的目录挖掘。

20.4.2 Firebug

Firebug是一种浏览器调试工具,使用它可以在当前显示的页面上调试和编辑HTML及 JavaScript脚本,还可以通过它浏览和编辑DOM。

Firebug具有非常强大的功能,可用于分析和利用一系列客户端攻击,包括各种跨站点脚本、请求伪造、UI伪装和跨域数据捕获攻击(如第13章所述)。

20.4.3 Hydra

Hydra是一种用途广泛的密码猜测工具,可用于攻击Web应用程序常用的基于表单的验证。当然,也可以使用Burp Intruder之类的工具以完全定制的方式实施这种攻击;但是,在许多情况下,Hydra也一样有用。

可以使用Hydra指定目标URL、相关请求参数、攻击用户名和密码字段的单词列表,以及登录失败后返回的错误消息细节。–t设置可用于指定在攻击中使用的并行线程的数量。例如:

img601

20.4.4 定制脚本

根据我们的经验,现有的各种非定制工具足以帮助渗透测试员完成在攻击Web应用程序时所需执行的绝大多数任务。但是,在各种反常情况下,需要自行建立完全定制的工具和脚本来解决特定的问题,如下所示。

img002 应用程序使用一种不常见的会话处理机制,例如,需要使用必须按正确顺序重新提交的每页面令牌。

img002 希望利用一个需要重复执行几个特殊步骤的漏洞,将在一个响应中获取的数据合并到随后的请求中。

img002 如果确定一个潜在恶意的请求,应用程序会立即终止会话;同时,获得一个新的通过验证的会话需要采取几个非标准的步骤。

img002 需要向应用程序所有者提供“指向并单击”利用过程,以演示该漏洞及其风险。

如果会编程,那么解决这个问题的最简单方法,就是创建一个完全定制的小型程序,使用它发布相关请求并处理应用程序的响应。可以把这个程序作为一个独立的工具,或者作为前面描述的集成测试套件的扩展,例如,通过使用Burp Extender接口扩展Burp Suite或Bean Shell接口扩展WebScarab。

Perl等脚本语言包含许多可用于迅速建立HTTP通信的库;通常,仅使用几行代码就可以执行定制任务。即使编程经验有限,也可以在因特网上找到一段脚本,然后对其进行调整,以满足需求。下面以一段简单的Perl脚本为例,它利用一个登录表单中的SQL注入漏洞进行递归查询,获取数据表中指定列中的所有值,并将获得的值从大到小排列(请参阅第9章了解这种攻击的更多详情):

img602