目录
1.1、历史:
从前的Web服务器是静态信息仓库, 使用实际为文件名的URL获取这类信息。要公布Web内容,只需简单生成一批HTML文件并将其复制到Web服务器上的相应目录即可。
当用户单击超链接时, 浏览由公布者创建的文件, 通过服务器上目录树中的文件名请求每个文件
1.2、现在:
Web应用程序的急速演变从根本上改变了用户与Web交互的体捡,但静态信息仓库仍然适用于绝大多数的Web应用程序内容和功能
各种功能一般通过不同的URL访问, 后者通常是执行该项功能的服务器端脚本的名称。请求参数(位于URL查询字符串或POST请求主体中)只告知应用程序在执行功能时使用哪些信息(未直接指明功能),建立基于URL的解析方法可对应用程序的功能进行有效分类
1.3、示例:
简述:
在使用REST风格的URL的应用程序中, URL文件路径的某些部分包含实际上用做参数值的字符串。通过解析URL, 爬虫能够解析应用程序功能和这些功能的已知参数值列表。
每个请求对应唯一一个URL。请求参数指定Java servlet需要调用的方法, 告诉应用程序执行何种功能。其他参数提供执行该项功能所需的信息。在基于应用程序页面的动机中,应用程序明显只有一种功能,且基于URL的解析不会解释它的功能。可以根据功能路径解析应用程序, 就能更加清楚地了解应用程序的有用功能
基于应用程序页面的常规图,来描述应用程疗的功能,在URL使用的目录结构中,即使不同功能之间的逻辑与依赖关系无法一一对应起来。但是对于了解应用程序的核心功能,制订可能的攻击方案都非常有用。根据逻辑关系,攻击者能够全面了解应用程序开发人员在执行功能时的期待和假设, 并设法找到违背这些假设、在应用程序中造成无法预料的行为的方法
分析:
(1)确定所有通过在参数中提交某一功能的名称(如/admin. jsp?action=editUser),而非通过请求代表那个功能的一个特殊页面(如/admin/editUser. jsp)访问应用程序功能的情况
(2)修改上述用于查找URL相关内容的自动化技巧,利用它处理应用程序使用的内容——访问制。eg:应用程序使用参数指定servlet和方法名称,首先确定它在请求一个无效servlet或方法以及请求一个有效方法与其他无效参数时的行为
设法确定表示“触点” (即有效servlet和方法)的服务器响应的特点。如果可能, 想出办法分两个阶段攻击这个问题, 首先枚举servlet,然后枚举其中的方法。对用于查找URL相关内容的技巧使用相似的方法,列出常见项目, 通过从实际观察到的名称进行推断, 增加这些项目, 并根据项目生成大量请求
(3)根据功能路径绘制一幅应用程序内容图,说明所有被枚举的功能和逻辑路径以及它们之间的依赖关系