利用Firefox审计Web2.0应用程序安全

我们知道,与传统的Web应用程序不同,Web 2.0应用程序一般都是建立在Ajax和交互式的Web服务之上的,这种技术转变给安全专业人员带来了新的安全挑战。

一、简介

本文为安全专业人员详细介绍了利用Firefox及其插件来剖析Web2.0应用程序的一些方法、工具和技巧。通过阅读本文,您可以了解:

◆Web 2.0 应用程序体系结构及其安全事项。 

◆黑客所面临的挑战,如发现隐藏的调用、爬行问题以及Ajax逻辑的发现等。 

◆利用Firebug工具寻找XHR调用。 

◆利用Chickenfoot插件自动模拟浏览器事件。 

◆利用Firebug调试器从安全角度对应用程序进行调试。 

◆安全漏洞的系统性检测方法。

二、Web 2.0 应用程序概述

近来流行的Web 2.0指的是采用了SOAP、XML-RPC和REST等XML驱动的新一代的Web应用程序。通过使用Ajax和富 Internet 应用程序(Flash)组件,这些新型的Web应用程序能够为终端用户提供更强大和灵活的用户界面。

这种技术的更替对Web应用程序的总体结构以及客户和服务器之间通信机制产生了很大的影响,同时也带来了许多新的安全挑战。比如,一些新型的蠕虫就是利用客户端AJAX框架来窃取机密信息的。

浏览器进程可以分成下列层次:

◆表示层–HTML/CSS提供了应用程序在浏览器窗口中的总体外观。 

◆逻辑处理层–运行在浏览器中的JavaScript使得应用程序可以执行业务逻辑和通信逻辑。AJAX驱动的组件位于最底层。 

◆传输层–XMLHttpRequest(XHR)。这个对象使得客户和服务器之间可以通过HTTP(S)进行异步通信并交换XML。

服务器端组件通常位于防火墙之后的企业基本设施之中,这些组件包括已部署的Web服务以及传统的Web应用程序资源。运行在浏览器上的Ajax资源可以直接跟基于XML的Web 服务进行通信,并且无需刷新页面就能与其交换信息。所有这些通信,对最终用户来说都是透明的,换言之最终用户不会感觉到发生了任何重定向。实际上,"刷新"和"重定向"是第一代Web应用程序逻辑不可分割的一部分。在Web 2.0框架中,通过Ajax极大地减少了对于刷新和重定向的使用。

三、Web 2.0安全审计所面临的挑战

在这种异步的框架中,应用程序没有太多的"刷新"和"重定向"。其结果是,许多可以被攻击者利用的服务器端资源都隐藏起来了。安全专业人员在了解Web2.0应用程序时,需要注意下列三个重要方面:

1. 发现隐藏的调用–这里要强调的是浏览器中已加载的页面生成的XHR驱动的调用。它们使用JavaScript通过HTTP(S)对后端服务器进行调用。

2. 爬行问题–传统的网络爬虫应用程序会在两个方面遇到问题,一是重复浏览器的动作方面,二是在此过程中识别服务器端关键资源方面。如果资源是通过JavaScript利用一个XHR对象进行访问的,那么网络爬虫很可能根本就爬不到它。

3. 逻辑发现–现在,Web应用程序是通过JavaScript进行加载的,所以逻辑和一个特定的事件是密不可分的。每个HTML页面都可能从服务器装载三个或者四个JavaScript资源。 这些文件中的每一个都有许多函数,但是一个事件可能仅仅用到了其中的很小一部分来执行其逻辑。

在审计Web应用程序时,我们需要探索并找到克服这些障碍的方法。对于本文来说,我们将使用Firefox作为我们的浏览器,并设法利用它的插件来应对上述挑战。