向在应用程序解析过程中发现的Web服务器上的每一个目录提出一个请求,确定任何返回目录列表的场合。
注解
除上述可直接获得目录列表的情况外,攻击者还可以利用大量已经在Web服务器中发现的漏洞获取目录列表。本章后面将讨论其中一些漏洞。
WebDAV指用于Web分布式创作与版本控制的HTTP方法集合。自1996年以来,这些方法得到了广泛应用。最近的云存储和协作应用程序也采用了WebDAV方法,因为这些应用程序需要使用现有的防火墙友好的协议(如HTTP)跨系统访问用户数据。如第3章所述,HTTP请求能够使用除标准GET和POST以外的各种方法。WebDAV添加了大量其他可用于操纵Web服务器上的文件的 方法。鉴于其提供的功能的特点,如果这些方法可以由低权限用户访问,这些用户就可以利用它们对应用程序实施有效攻击。以下是一些值得注意的方法:
PUT,向指定位置上传附加文件;
DELETE,删除指定的资源;
COPY,将指定的资源复制到Destination消息头指定的位置;
MOVE,将指定的资源移动到Destination消息头指定的位置;
SEARCH,在目录路径中搜索资源;
PROPFIND,获取与指定资源有关的信息,如作者、大小与内容类型。
可以使用OPTIONS方法列出某个特定目录允许的HTTP方法。例如:
这个响应指出,上面列出的几个强大的方法可以在目录中使用。然而,实际上,使用这些方法需要通过身份验证,或取决于其他限制。
其中,PUT方法特别危险。如果能够上传Web根目录中的任意文件,就可以在服务器上创建将由服务器端模块执行的后门脚本,从而完全控制应用程序,甚至是Web服务器本身。如果PUT方法存在且被激活,就可以通过以下方式证实这一点:
注意,应用程序可能会针对每个目录实施不同的权限,因此,在测试过程中需要进行递归检查。这时,可以使用DAVTest(将在下一节介绍)之类的工具在服务器的所有目录中检查PUT方 法,并确定这些目录允许使用哪些文件扩展名。为克服使用PUT上传后门脚本的限制,该工具还会在MOVE方法后使用PUT方法,例如: