首页 资讯 招标 项目 展会 更多

位置:首页 > 新闻频道 > 技术动态


基于网络爬虫与页面代码行为的XSS漏洞动态检测方法

2016-05-27 10:49:06 安装信息网

相关链接: 中国安全网 中国质量网 中国论文网 中国资讯网

 柳毅.洪俊斌

 (广东工业大学计算机学院,广东广州510006)

  摘  要:xss漏洞是攻击Web应用程序、获取用户隐私数据的常见漏洞。传统的xss漏洞检测工具并没有对AJAX Web应用程序进行针对性的检测,在检测精度方面与实际情况存在巨大差距。针对这种情况,对AJAX技术下XSS漏洞的特点进行了分析,提出了一种基于网络爬虫与页面代码行为的动态检测方法。实验结果表明,提出的方法在节省人力、时间成本与漏洞检测方面有较好的表现。

  关键词:xss漏洞;网络爬虫;漏洞检测;AJAX Web应用

  中图分类号:TP393.08 doi: 10.11959/j.issn.1000-0801.2016068

1引言

 随着Web 2.0时代的到来,Web程序告别了沉重的请求一返回的模式,采用了更轻便的局部刷新模式,提高了用户体验。其中,AJAX(asynchronous JavaScript and XML,异步JavaScript和XML)…技术在Web 2.0中占据了主导地位。然而AJAX技术将一部分逻辑处理从服务器端转移到客户端,暴露了更多的接口,增加了许多针对Web应用程序的安全威胁,其中严重程度最高的是跨站脚本(cross-site script,又称XSS)攻击。从国际开源安全组织(Open Web Application Security Project,OWASP)公布的10种最严重的Web应用程序安全漏洞排行榜可知,跨站脚本攻击一直处于前三的位置。Web 2.0时代后,跨站脚本攻击与AJAX技术相结合,出现了新的特点,可在用户毫不知情的情况下进行攻击,威胁性更大。就目前而言,采取较多的行为都是被动的防范措施,比如防火墙等。这样做明显忽略了应用程序级别的安全问题,使之在高层面缺乏有效的防范方式。对于Web应用程序级别的安全,虽然有很多学者进行了研究,但大多数还停留在Web 1.0时代,并没有对异步传输进行安全性检测。虽然对AJAX有所提及,但并没有进行针对性的研究。所以针对大量使用AJAX技术的Web应用程序,设计相关的XSS漏洞检测工具是十分必要的。

 本文提出了一种基于网络爬虫与页面代码行为的动态检测方法对AJAX Web应用程序进行XSS漏洞检测。针对用户提交的URL(uniform resource locator.统一资源定位符)进行爬虫,提取数据输入点,完成错误数据注入,再通过模拟攻击对服务器进行请求,对返回的页面代码行为进行跟踪与分析,得出XSS漏洞威胁。实验证明该方法效率较高,漏报率较低。

2 XSS漏洞特征及检测工具分析

2.1 XSS漏洞特征分析

 现有的XSS漏洞类型可分为3种基本类型:反射型XSS攻击(reflected/non-persistent  XSS)、存储型XSS攻击(stored/persistent XSS)和基于DOM (document objectmodel)的XSS攻击(DOM-based XSS)。反射型XSS攻击方式是通过服务器的错误信息或检索结果等手段将注入代码“反射”回来。攻击者构造包含注入代码的恶意链接,并通过某种方式将此恶意链接发送给受害者,受害者点击访问后,注入脚本便会将服务器返回的数据传输到攻击者的服务器上:存储型XSS与反射型XSS最大的不同在于,恶意脚本将被永久性地存放在目标服务器的数据库中,浏览者在访问时恶意脚本便会执行,使浏览者受到攻击:在基于DOM的XSS这类攻击方式中,攻击者是通过以下过程执行JavaScript的:攻击者设计有注入JavaScript代码的恶意URL,并发送给用户,用户进行点击访问,浏览器会将返回的HTML(hypertext markup language.超文本标记语言)代码解析成DOM树结构,在这过程中,注入代码便会被解析出来,从而导致基于DOM的XSS攻击出现,攻击者就有可能获取受害者电脑的重要权限。

2.2 XSS漏洞的检测方法及工具

 高效率的爬虫算法能够在短时间内找到数据输入点,并且根据数据输入点的类型,从数据库中获取错误注入数据,组成有攻击性的get/post请求注入系统中,如果产生与从数据库中获取的注入数据相对应的预期攻击行为,就可以断定Web应用程序中存在XSS漏洞。在错误数据进行注入的同时,要注意对程序中的合法过滤器进行规避。目前有很多XSS漏洞扫描的工具,比如Paros和X5S,它们并没有对AJAX技术下产生的XSS漏洞进行深入分析。针对这种情况,提出了一种基于网络爬虫与页面代码行为的动态检测方法来实现对AJAX Web应用程序的XSS漏洞进行检测。

3 XSS漏洞定位检测方法

3.1  抓取数据输入点

 抓取数据输入点的步骤如下:

 (1)爬虫对Web页面的HTML代码进行扫描得到静态URL;

 (2)对页面代码中的JavaScript脚本和JavaScript所添加的事件进行提取:

 (3)将提取到的JavaScript代码传递给JavaScript引擎编译执行,获取动态URL;

 (4)存储获取到的URL,采用散列表存储方式高效率地将重复URL去除。

 散列表中使用了双重散列算法来解决冲突,其探测地址的方法如下:

 二度散列的h(URL,i)的值有可能会大于hashcapacity,所以对h(URL,i)进行模运算,最终计算的散列地址为h(URL,i)% hashca pacity。

 爬虫系统分为下载与分析两个模块,使用多线程同时运行两个模块以提高爬虫效率,如果硬件条件高,可分别在各个模块中再次使用多线程进行下载与分析。图1是爬虫系统运行的流程。

3.2错误数据注入

 错误数据注入的步骤如下:

 (1)从爬虫系统的散列表中,依次取出链接地址进行请求,并分析得到页面代码;

 (2)提取代码中所有的表单元素;

 (3)根据表单属性(get/post)、页面代码和输入区域的结构对象计算出散列值;

 (4)根据散列值关联数据库中自定义注入代码进行拼接,对服务器发出请求。

图2是错误数据注入的流程。

 攻击字符串是检测漏洞的关键部分,用数据库中的注入代码来构造有威胁的URL、表单或AJAX XML Http Request对象,向服务器发送请求。结合JavaScript的执行效果和语法,针对表单、URL和XML Http Request对象类型的攻击漏洞,表1列举了部分攻击字符串。

3.3结果分析

3.3.1基于AJAX页面代码行为的XSS漏洞检测算法

 (1)增量地构建AJAX返回的DOM树状态;

 (2)记录返回数据后的页面代码行为;

 (3)检测返回的代码行为是否出现相对应的恶意行为,判断是否存在XSS漏洞。

 伪代码设计如下:

 For each pages tate in State Queue.Dequeue()(存储队列中的状态出列)

 Browser Control.Get State (pages tate)(获取页面的HTML行为)

 Boolean has XSS*-De tec t XSS( pages tate)

 If has XSS then

 Write To DataBase(URL)

 End If

 Browser Control. GetState ( pages tate)

 End For each

 3.3.2基于JavaScript的XML Http Request检测

 在JavaScript代码中,最关键的是XHR(XML Http Request,可扩展超文本传输请求)对象。该对象可以异步地向服务器发出请求,获取新数据,然后通过DOM将数据插入页面中进行局部刷新。这给攻击者留下了一个很大的漏洞,攻击者可使用XHR对象,注入错误代码,因此必须对AJAX XHR的漏洞检测进行特殊处理。

 (1)收集JavaScript的文件信息,比如大小、文件名等,构建JavaScript文件特征库。

 (2)检测时将页面获取的JavaScript文件与文件特征库中的文件进行匹配判断是否存在漏洞。

  伪代码设计如下:

4  实验结果及分析

 为验证本文提出方法的可行性,采用Visual Studio2015对本文提出的方法进行C#编程实现XSS Finder工具,硬件方面主要采用主流的IBM-PC兼容机,数据库为SQLS erver 2008 R2。下面从时间复杂度和检测精度方面来评估XSS Finder工具。

4.1  时间复杂度

 为对比XSS Finder在时间复杂度上的优势,选用了常用的XSS漏洞检测工具Paros和x5s进行对比。采取方法是对每个Web应用程序独立扫描20次,算出平均扫描时间。图3是3个软件进行扫描的时间对比。

 由图3可知,XSS Finder工具所消耗的时间是较低的。

4.2检测精度

 对比XSS Finder与两个软件的检测精度,采取的方法是选择两个网站,一个是某学校的官方网站,另一个是开源系统,名字是Pet Store,此系统是Java编写的基于AJAX的Web应用程序,3个软件分别对网站进行扫描与检测,并对比最后的结果,具体见表2。

 从实验结果来看,XSS Finder检测到的漏洞数和系统存在的漏洞数量是一致的,检测到的数据入口点也符合实际情况,表明XSS Finder检测漏洞的准确性更好。

5  结束语

 通过对AJAX技术下XSS漏洞的出现原因及检测技术的研究,本文提出一种基于网络爬虫与页面代码行为的XSS漏洞检测方法,与两种常用的XSS漏洞检测工具比较,在时间复杂度方面,对Web应用程序独立扫描20次的情况下,扫描时间更短,高效地解决了URL重复性的问题:在检测精度方面,提出了对页面代码行为和XHR对象进行检测的方法,具有更高的漏洞检测准确性。

关键字:

上一篇:基于改进智能优化算法的网络功能虚拟化故障分析处理方法

下一篇:返回列表

行业资讯月点击排行

展会信息月点击排行

招商信息月点击排行

首页 资讯 招标 项目 展会
关于我们 | 广告服务 | 友情连接 | 联系我们
触屏版 电脑版
安装信息网 www.36qyk.cn.