攻击应用程序的第一步是收集和分析与其有关的一些关键信息,以清楚了解攻击目标。解析过程首先是枚举应用程序的内容与功能,从而了解应用程序的实际功能与运行机制。我们可轻松确定应用程序的大部分功能,但其中一些功能并不明显,需要进行猜测和凭借一定的运气才能查明。
列出应用程序的功能后,接下来的首要任务就是仔细分析应用程序运行机制的每一个方面、核心安全机制及其(在客户端和服务器上)使用的技术。这样就可以确定应用程序暴露的主要受攻击面并因此确定随后探查过程的主要目标,进而发现可供利用的漏洞。我们在本章后面部分将讲到,通常在分析过程中就可以发现相关漏洞。随着应用程序变得越来越复杂,功能越来越强大,有效的解析将成为一种重要技能。经验丰富的专家能够迅速对所有功能区域进行分类,参照各种实例查找不同类型的漏洞,同时花费大量时间测试其他特定区域,以确定高风险的问题。本章将描述应用程序解析过程的主要步骤、各种可用来提高效率的技巧与窍门,以及一些帮助进行解析的工具。
4.1 枚举内容与功能
通常,手动浏览即可确定应用程序的绝大部分内容与功能。浏览应用程序的基本方法是从主初始页面开始,然后是每一个链接和所有多阶段功能(如用户注册或密码重设置)。如果应用程序有一个“站点地图”,可以从它开始枚举内容。但是,为了仔细检查枚举的内容,全面记录每一项确定的功能,我们有必要使用一些更加先进的技术,而不仅仅是简单浏览。
4.1.1 WEB抓取
我们可使用各种工具自动抓取Web站点的内容。这些工具首先请求一个Web页面,对其进行分析,查找连接到其他内容的链接,然后请求这些内容,再继续进行这个循环,直到找不到新的内容为止。基于这一基本功能,Web应用程序爬虫(spider)以同样的方式分析HTML表单,并使用各种预先设定值或随机值将这些表单返回给应用程序,以扩大搜索范围、浏览多阶段功能、进行基于表单的导航(如什么地方使用下拉列表作为内容菜单)。一些工具还对客户端JavaScript进行某种形式的分析,以提取指向其他内容的URL。有各种免费工具可以详细枚举应用程序的内容与功能,它们包括BurpSuite、WebScarab、Zed Attack Proxy和CAT.
提示
许多Web服务器的Web根目录下有一个名为robots.txt的文件,其中列出了站点不希望Web爬
虫访问或搜索引擎列入索引的URL。有时,这个文件中还包含敏感功能的参考信息,渗透测试员肯定
会对抓取这些信息感兴趣。一些攻击Web应用程序的抓取工具会搜索robots.txt文件,并根据其中列
出的URL开始抓取过程。在这种情况下,robots.txt文件可能会危及Web应用程序的安全。