· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [访谈] 网银安全系列访谈之:惊心动魄网银故事
· [热点专题] 网银安全系列 3G上网卡巡礼
· [订阅IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 跨站脚本十二问 四步防范Conficker
· [热点] Windows 7 RC版公开下载 憾缺中文版

连载:使用 Firefox攻击Web2.0应用(二)

发布时间:2007.07.20 06:45     来源:赛迪网    作者:Kevin

【原创翻译,版权所有,合作网站如欲转载,请注明原创翻译作者,及文章出处(赛迪网)。谢绝非合作网站转载,违者,赛迪网将保留追究其法律责任的权利!】

三、Web2.0安全评估面临的挑战

在Web2.0这个异步的框架中,Web应用不再需要以前那么频繁的页面刷新和重定向,这样,一些原本能够被利用的服务器资源被隐藏了起来。以下是安全研究人员在理解Web2.0应用时面临的三个重要的挑战:

(1)发现隐藏的调用:当浏览器载入的页面的XHR调用发生时,如何能够及时准确地发现它,是很大的挑战。

(2)网络爬虫问题:传统的网络爬虫应用无法应付浏览器中页面的所有行为,当页面通过JavaScript调用XHR对象从服务器获得资源时,传统的网络爬虫无法抓取到这些资源。

(3)调用逻辑发现:Web2.0的应用通过JavaScript加载,对一个特定的事件,很难分离出它的调用逻辑,因为每个html页面都会从服务器加载三到四个JavaScript脚本文件,每个JavaScript文件里又有很多函数,而当一个事件发生的时候,很难去判断是哪些JavaScript文件中的哪些函数被调用。

我们需要研究出一套方法和工具,在Web应用安全评估中克服以上障碍。这篇文章的目的,正是介绍如何使用Firefox浏览器及其一些插件,来应对上述挑战。

3.1发现隐藏的调用

Web2.0的应用可能只从服务器下载一个页面,但通过几次XHR对象调用,来构建最终的页面。这些XHR调用异步的从服务器下载资源或者JavaScript脚本。这样,我们面临的挑战就是如何判断发生的XHR调用和识别从服务器下载的资源。这些资源可以帮助安全研究人员发现安全漏洞。让我们从一个简单的例子开始。

假设我们可以通过访问站点hxxp://example.com/news.aspx ,来了解当天的商业新闻。页面的截图如图2所示。

图2 一个简单的新闻显示页面

作为一个Web2.0的应用,Ajax调用通过XHR对象被发往服务器。我们可以通过一个工具Firebug来识别所有的XHR对象调用。Firebug是Firefox浏览器的一个插件,在用户浏览一个页面之前,先把“Show XMLHttpRequests”选项选中,如图3所示。

图3 配置Firebug记录XMLHttpRequests调用

启用截获XMLHttpRequest调用的选项后,我们再次浏览这个页面,这时页面向服务器发送的所有XHR对象调用都会被Firebug发现并记录下来,具体如图4所示。

图4 记录Ajax调用

我们观察图4中的“Ajax Calls”,可以看到浏览器通过XHR发送的一些请求,从服务器下载dojo Ajax框架,与此同时,向服务器发送一个调用,获取新闻文章的内容。

如果我们仔细查看代码,可以发现如下JavaScript代码:

function getNews()
{
	var http;
	http = new XMLHttpRequest();
	http.open("GET", " getnews.aspx?date=09262006", true);
	http.onreadystatechange = function()
	{
		if (http.readyState == 4) {
    		var response = http.responseText; 
    		document.getElementById('result').innerHTML = response;
    	    	}	 
	}
	http.send(null);
}

上述代码发送一个异步的调用访问Web服务器,企图获取的资源是:

getnews.aspx?date=09262006

这个aspx页面经过编译后传给客户端浏览器。其代码放在ID为result的标签所在处。这是一个典型的使用XHR对象进行的Ajax调用的例子。

通过借助Firebug进行分析,我们可以记录一个页面所有XHR对象调用,从而发现有安全漏洞的内部URL、查询字符串和POST请求。仍然以上面的代码为例,参数date的值如果处理不当,就可能存在SQL注入漏洞。

3.2网络爬虫问题及浏览器仿真

在评估一个Web应用安全性时,一个重要的工具是网络爬虫。网络爬虫功能是爬下该Web应用中的每个网页,搜集其中的链接。但是在Web2.0的应用中,这些链接往往都指向JavaScript函数,再由JavaScript函数通过XHR对象调用新的页面内容,这时,网络爬虫会丢失这些信息。例如,下面是一个简单链接的集合。

<a href="#" onclick="getMe(); return false;">go1</a><br>
<a href="/hi.html">go2</a><br>
<a href="#" onclick="getMe(); return false;">go3</a><br>

“go1”链接被点击时,getMe()函数被执行,getMe()函数的代码如下所示。这个函数可能在一个单独的JavaScript文件中实现。

function getMe()
{
	var http;
	http = new XMLHttpRequest();
	http.open("GET", "hi.html", true);
	http.onreadystatechange = function()
	{
	    if (http.readyState == 4) {
    		var response = http.responseText; 
    		document.getElementById('result').innerHTML = response;
	    }	 
  	}
	http.send(null);
}

上面的代码执行后,发送一个HTTP Get请求,访问服务器上的资源hi.html。

可否使用自动化机制仿真这个点击链接的操作呢?Firefox插件Chickenfoot为我们实现了这个功能,它提供了基于JavaScript的API,扩展了浏览器的可编程接口。

使用Chickenfoot这款插件,可以自己编写简单的JavaScript代码来使得浏览器的行为自动化。使用这种方法,像爬虫抓取网页这样简单的任务就可以自动完成了。例如下面的示例代码,可以模拟点击事件把网页上所有连接都点击一遍。这款插件与传统的网络爬虫相比,优势显而易见:所有这些onClick事件都会产生一个XHR调用,而这些响应会被传统的网络爬虫忽略,传统的爬虫只能试图去分析JavaScript代码,搜集可能的链接,但这并不能取代实际onClick事件的响应。

l=find('link')
for(i=0;i<l.count;i++){	
a = document.links[i];
test = a.onclick;
if(!(test== null)){
	var e = document.createEvent('MouseEvents');
	e.initMouseEvent('click',true,true,document.defaultView,1,0,0,0,
				0,false,false,false,false,0,null);
	a.dispatchEvent(e);	
	}
}

读者可以把这段脚本加载到Chickenfoot控制台,然后运行。结果如图5所示。

图5 使用Chickenfoot仿真onclick事件

这种方法,可以创建JavaScript脚本,在Firefox浏览器内部评估基于Ajax的Web应用的安全性。(责任编辑:李磊)

【相关文章】

《连载:使用Firefox攻击Web2.0应用(一)》


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 用Windows Server 2003搭建安全服务器 (07-19) · 看似平常的上网行为 竟隐藏危险 (07-19)
· 只要网络开启 就有危险 (07-19) · 使用Firefox向Web2.0应用发起攻击 (07-18)
· Firefox 安全性 (07-18) · Web2.0客户端组件漏洞 (07-18)
· 赛门铁克为Windows智能手机提供安全保护 (07-18) · 业务智能风生水起 与安全融合防范欺诈 (07-18)
· 连载:使用 Firefox攻击Web2.0应用(一) (07-18) · 保障 IIS Web 服务器安全堵住一切漏洞 (07-18)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
2009第七届中国电脑商年会直播
·创业投资系列访谈:产业..
·特别策划:视频网站系列..
·专题:网游虚拟货币新规..
专题:6月上市手机新品回顾及7月新机展望
·2009年中国电信业信息化..
·专题:把iPhone 3GS“解..
·WAPI重启国际标准进程 ..
专题:09年中盘点-联想春季打印机新品回顾
·InfoComm 2009 视听与集..
·网游背后的故事 网游服..
·[专题]联想ThinkPad T40..
BizSpark:微软为技术创业企业点燃火花
·社区活动:我的IT求知生..
·访谈:内网安全2009系列..
·安全访谈:网银安全之Sa..