(1)Nikto之类的工具可有效确定大多数默认的Web内容。第4章描述的应用程序解析过程应已确定所针对的服务器中的绝大多数默认内容。
(2)使用搜索引擎和其他资源确定与已知应用程序使用的技术有关的默认内容与功能。如果可能,可在本地计算机上安装这些技术,从中查找任何可在渗透测试中利用的默认功能。
当Web应用程序收到一个访问目录而非真实文件的请求时,它会以下面这3种方式进行响应。
它返回目录中的一个默认资源,如index.html。
它返回一个错误,如HTTP状态码403,表示请求被禁止。
它返回一个列表,显示目录的内容,如图18-6所示。
许多时候,目录列表(directory listing)并不会造成安全威胁。例如,泄露一个图像目录的索引根本不会引起任何不良后果。确实,人们常常有意泄露目录列表,因为它们有助于在包含静态内容的站点间导航,如前例所示。但是,基于以下两个主要原因,获得目录列表有利于攻击者对应用程序实施攻击。
许多应用程序并不对它们的功能与资源实施正确的访问控制,而是依赖于攻击者忽略用于访问敏感内容的URL(请参阅第8章了解相关内容)。
日志、备份文件、旧版脚本等文件与目录经常被无意遗漏在服务器的Web根目录中。
在上述两种情况下,真正的漏洞位于其他地方,其原因在于没有对敏感数据实施正确的访问控制。但是,由于这些漏洞极其普遍,不安全的资源的名称可能很难猜测,因此,这时获得目录列表对攻击者而言非常重要,往往可以让他们迅速攻破整个应用程序。