渗透测试步骤

(1)检查用户指定的浏览与基本蛮力测试获得的结果。编译枚举出的所有子目录名称、文件词干和文件扩展名列表。

(2)检查这些列表,确定应用程序使用的所有命名方案。例如,如果有些页面的名称为 AddDocument.jsp和ViewDocument.jsp,那么可能还有叫做EditDocument.jsp和RemoveDocument.jsp的页面。通常,只需要查看几个示例,就能推测出开发者的命名习惯。根据其个人风格,开发者可能采用各种命名方法,如冗长式(AddANewUser.asp)、简洁式(AddUser.asp)、使用缩写式(AddUsr.asp)或更加模糊的命名方式(AddU.asp)。了解开发者使用的命名方式有助于猜测出尚未确定的内容的准确名称。

(3)有时候,不同内容的命名方案使用数字和日期作为标识符,通过它们可轻易推测出隐藏的内容。静态内容(而非动态脚本)常常采用这种命名方式。例如,如果一家公司的Web站点含有AnnualReport2009.pdf和AnnualReport2010.pdf这两个文件的链接,应该可以立即确定接下来的报告名称。令人难以置信的是,一些公司在公布金融结果之前,常常会将包含金融信息的文件放在Web服务器上,有些精明的新闻记者往往能够根据其在前些年使用的命名方案,发现这些文件。

(4)检查所有客户端代码,如HTTP和JavaScript,确定任何与隐藏服务器端内容有关的线索。这些代码包括与受保护或没有建立链接功能有关的HTML注释以及包含禁用SUBMIT元素的HTML表单等。通常,注释由生成Web内容的软件自动生成,或者由应用程序运行的平台生成。参考服务器端包含文件之类的内容也特别有用。这些文件可被公众下载,并且可能包含高度敏感的信息(如数据库连接字符串和密码)。另外,开发者的注释中可能包含各种有用的信息,如数据库名称、后端组件引用、SQL查询字符串等。厚客户端组件(如Java applet和ActiveX控件)也可能包含可供利用的敏感数据。请参阅第15章了解应用程序揭示自身信息的其他方式。

(5)把已经枚举出的内容添加到其他根据这些列表项推测出来的名称中,并将文件扩展名列表添加到txt、bak、src、inc和old这些常用扩展名中,它们也许能够披露现有页面备份版本的来源以及与所使用的开发语言有关的扩展名,如.Java和.cs;这些扩展名可能揭示已经被编译到现有页面的来源文件(请参阅本章后面的提示,了解如何确定所使用的技术)。

(6)搜索开发者工具和文件编辑器不经意建立的临时文件。例如.DS_Store文件,其中包含一个OS X目录索引,或者file.php~1,它是编辑file.php时临时创建的文件,或者大量软件工具使用的.tmp文件。

(7)进一步执行自动操作,结合目录、文件词干和文件扩展名列表请求大量潜在的资源。例如,在特定的目录中,请求每个文件词干和每个文件扩展名;或者请求每个目录名作为已知目录的子目录。

(8)如果确定应用程序使用一种统一的命名方案,考虑在此基础上执行更有针对性的蛮力测试。例如,如果已知AddDocument.jsp和ViewDocument.jsp存在,就可以建立一个操作列表(编辑、删除、新建等)并请求XxxDocument.jsp。此外,还可以建立项目类型(用户、账户、文件等)并请求AddXxx.jsp。

(9)以新枚举的内容和模式作为深入用户指定抓取操作的基础,反复执行上述每一个步骤,继续执行自动内容查找。所采取的操作只受到想象力、可用时间以及在所针对的应用程序中发现隐藏内容的重要性的限制。

img001  注解  使用Burp Intruder Pro的“内容查找”(Content Discovery)功能可以自动完成我们迄今为止介绍的大多数任务。在使用浏览器手动解析应用程序的可见内容后,可以选择Burp站点地图的一个或多个分支,并对这些分支启动内容查找会话。在尝试查找新内容时,Burp使用以下技巧:

img002 使用内置的常用文件名和目录名列表实施蛮力攻击;

img002 基于在目标应用程序中观察到的资源名称动态生成单词表;

img002 推断包含数字和日期的资源名称;

img002 基于已确定的资源测试其他文件扩展名;

img002 从查找到的内容中进行抓取;

img002 自动识别有效或无效响应,以减少错误警报。

所有操作均以递归方式执行,在发现新的应用程序内容后,将安排新的查找任务。图4-8显示了一个正在进行的针对EIS应用程序的内容查找会话。

img86

图4-8 一个正在进行的针对EIS应用程序的内容查找会话

img004  提示  在执行自动内容查找任务时,OWASP发起的DirBuster项目也是一个有用的资源,其中包含大量以出现频率排序的、在现实世界的应用程序中发现的目录名列表。

3.利用公共信息

应用程序的一些内容与功能现在可能并没有与主要内容建立链接,但过去曾经存在链接。在这种情况下,各种历史记录中可能仍然保存隐藏内容的引用。我们可以利用两类主要的公共资源查找隐藏的内容。

img002 搜索引擎,如Google。这些搜索引擎中保存有其使用的强大爬虫所发现的所有内容的详细 目录,并且将这些内容保存在缓存中,即使原始内容已被删除,缓存中的内容仍然不变。

img002 Web档案,如www.archive.org上的WayBack Machine。这些档案保存大量Web站点的历史记录。许多时候允许用户浏览某个站点从几年前到现在于不同时期彻底复制的站点快照。