APP下载

基于Fuzzing技术提升XSS漏洞防御水平的研究

2017-03-23许莹莹梁华庆王雪凤

电子设计工程 2017年5期
关键词:样例测试用例漏洞

许莹莹,梁华庆,刘 伟,王雪凤

(1.中国石油大学(北京)地球物理与信息工程学院,北京102249;2.塔里木油田公司开发事业部,新疆 库尔勒841000)

基于Fuzzing技术提升XSS漏洞防御水平的研究

许莹莹1,梁华庆1,刘 伟2,王雪凤2

(1.中国石油大学(北京)地球物理与信息工程学院,北京102249;2.塔里木油田公司开发事业部,新疆 库尔勒841000)

面对高交互性、高复杂性的网络操作过程,有效提升对XSS漏洞的检测、防御能力有利于提高Web安全。本文提出了一种主动提升对XSS漏洞的检测与防御能力的方法,该方法通过网络爬虫爬取Web交互页面,结合XSS漏洞的特征,基于Fuzzing技术主动挖掘潜在漏洞,利用渗透工具模拟攻击并捕获网络攻击流量,提取攻击特征,最终结合Snort防御告警主动提升Web安全。实验测试表明,该方法可有效检测XSS漏洞,结合对Snort规则库的补充升级,能够有效提升对XSS漏洞的防御能力。

Fuzzing技术;XSS漏洞;渗透攻击;特征提取

随着Web2.0应用的大规模普及化,其体现出高交互性高复杂性的特征[1],这其中伴随的Web安全问题也尤为突出,XSS漏洞在近年来的权威统计中持续占据较大份额。如何对其进行快速防御在业界始终是焦点。目前各大厂商通用的方法多是基于已公布的实际漏洞,在分析恶意流量的基础上进行规则库补充,实现对检测防御产品的补充升级。但该方法防御时效性差,牺牲真实业务系统,并且真实攻击流量转换成可用规则的效率也无法保证,适用于安全检测防御的初期阶段。基于以上考虑,文中采用网络爬虫技术,结合Fuzzing技术,针对XSS漏洞设计测试样例生成模板,通过在靶机Web应用上执行恶意测试样例来主动挖掘潜在的XSS漏洞,通过对Snort规则库的补充升级来实现更加积极、更为有效的防御。最终结合Metasploit渗透工具对文中方法的有效性进行验证。

1 相关技术简介

文中提出的方法主要用到了如下技术:网络爬虫,Fuzzing技术,Snort技术。网络爬虫是一种自动提取网页的程序,通常被用于定向抓取相关网页资源[2]。文中选用通用网络爬虫。针对一定的Web应用,抓取其所有的交互页面进行存储[3],以供进一步处理。

Fuzzing技术是一种基于缺陷注入的自动化软件测试技术。能够非常有效地找出网页浏览器的漏洞[4]。其核心思想是生成合适的测试用例并使用恰当的工具检测。本文采用网络型Fuzzer,根据XSS漏洞的特点,针对性地设计测试样例,综合考虑可执行性和执行效率。

Snort是一种轻量级网络入侵检测系统[5]。可提供对内部攻击、外部攻击和误操作的实时保护。文中Snort工作在网络入侵检测模式下,通过配置使Snort加载规则库,并允许加载本地规则,通过报文与规则匹配进行告警,并记录日志,将告警情况实时显示。

2 基于Fuzzing技术的XSS漏洞检测

2.1 测试样例生成

文中针对XSS漏洞的Fuzzing测试,其核心在于突破安全边界[6]。由于目前绝大多数的Web产品针对XSS漏洞已经采取了相应的过滤措施,多是结合输入过滤脚本对用户提供的非法输入进行过滤[7]。与此同时又有相当部分攻击者在探索新的绕过过滤机制的方式。文中结合技术现状,选取Htmlawed作为绕过对象。为了提升Fuzzing测试用例的有效性,文中以expression为例着重分析并编程生成相关的设计用例。首先,设计具有针对性的样例模板,例如,常见的DIV CSS表达中:<div style="width:expression(alert(xxx));

这其中的expression(alert(xxx)就是需要重点关注的安全区域,这其中可能被插入注释内容/**/和expression等内容,需要进行重点过滤。过滤过程先从过滤器对安全域的定位方式入手,过滤器会在div标签内找到style属性,之后在双引号之间依据冒号来确定名称和内容,按照其定位方式,我们选择=":;做为安全域限定关键字。该Fuzzer的主要思想就是在一个模板有可能导致边界混乱的地方添加元素实现一定的绕过。基于以上分析设计出如下模板:<div id="xxx"style="width:expre/*xxx*/ssion(alert(9));">

考虑到效率以及可识别性等问题,我们的模板选择只进行了两处元素的填充。

其次,选择模板的填充元素。由于填充边界元素或者filter过滤删除一些东西之后导致边界改变都有可能导致漏洞。我们选择如下所示填充用例:<、>、</div>//、=":;空格及onXXX (),不可视特殊字符&#XX、%XX、XX、 、 、 、等。

2.2 测试样例执行

通过针对HtmLawed对象在灰盒测试的思想指导下,编写代码实现自动生成恶意输入样例,并在浏览器上执行生成的测试用例,进一步观测应用程序中是否存在漏洞。具体实现步骤:依照上面的填充模板生成测试用例,并经过Htmlawed进行过滤,最终在Web服务器上运行结果文件。一旦弹出alert窗口就表示测试用例绕过了过滤机制,并且该应用程序中存在XSS安全漏洞。

2.3 漏洞渗透攻击

网络渗透攻击是对大型的网络主机服务器群组采用迂回渐进的攻击方式,逐步渗透攻击,最终进入网络实现一定的恶意目的动作[8]。文中我们使用渗透工具,搭建适宜的环境,对存在漏洞的应用程序进行真实攻击;在此基础上抓取攻击流量进行分析;最终提取规则结合Snort实现对漏洞的告警防御,提升系统安全性能。进行渗透测试往往依赖一些专业的工具,文中使用的是Metasploit和Wireshark。Wireshark是一种网络封包分析软件,借取流经本地网卡的有效数据流量进行分析。在渗透测试中Wireshark被用来嗅探局域网内的数据传输格式。Metasploit是一款开源的安全检测工具,是目前使用最为广泛的,适用于多种操作系统,并且其模块处于持续更新中[9]。它为我们提供了一个通用的漏洞攻击框架,将负载控制、编码器、误操作生成器和漏洞整合在一起。渗透过程中,我们选取适合的漏洞模块,针对已检测到存在XSS漏洞的Web应用进行攻击验证。

3 基于Snort的XSS漏洞防御

3.1 基于Snort的入侵检测防御系统部署

基于Snort的可扩展性、灵活性及易于部署等特征,文中搭建了基于Snort的入侵防御检测系统。具体平台软件环境为[10]:Windows Server 2003+My SQL +Apache+PHP5,使用MySQL数据库进行监听报文,日志及告警信息的记录。通过PHP编写的ACID显示界面[11]进行结果显示。

3.2 基于恶意流量的Snort检测

Snort的检测就是二维规则链表和网络数据匹配的过程[12],一旦匹配成功则把检测结果输出到输出插件。为了提高检测速度,通常把最常用的源/目的IP地址和端口信息放在规则头链表中,而把一些独特的检测标志放在规则选项链表中。规则匹配查找采用递归的方法进行,检测机制只针对当前己经建立的链表选项进行检测,当数据包满足一个规则时,就会触发相应的操作。Snort的检测机制非常灵活,可以根据自己的需要很方便地在规则链表中添加所需要的规则模块[13]。数据包匹配算法采用经典匹配算法—多模式匹配算法(AC-BM),采用二维链表和经典匹配算法都是为了提高与网络数据包的匹配速度[14],从而提高入侵检测速度。针对恶意流量分析,可准确提取规则实现覆盖。

4 实验设计与测试

4.1 实验设计

设计实验实现基于Fuzzing技术和Snort来提升对XSS漏洞的检测、防御能力。实验中,首先基于特定的模板,编程生成使用Fuzzing技术并可绕过特定filter的测试用例,通过执行该用例来判定Web应用中是否存在XSS安全漏洞。其次,使用渗透工具对存在漏洞的Web应用进行攻击,同时抓取攻击流量。最后,在已部署好的Snort入侵检测系统中进行告警响应或规则库扩充以实现对XSS漏洞检测与防御能力的提升。

4.2 实验环境部署

部署的实验环境如图1所示:3台虚拟机,IP如图所示,在A机器安装Metasploit渗透工具及抓包工具,B机器上安装了Htmlawed,C机器上部署了Snort入侵检测系统。

图1 实验环境

实验中C机器环境依托于部署了Snort的入侵检测系统。配置snort.conf文件,使其调用MySQL数据库,并在数据库中创建显示界面ACID所必需的库。

切换到bin文件夹下,启动Snort,使其静默工作在局域网中。运行界面如图2所示。

图2 Snort运行界面

完成以上准备工作后,分别从漏洞检测与防御两部分进行实验验证。首先,在B机器上编写Fuzzer生成测试用例。生成的大量测试用例保存在Sample文件夹中,以HTML形式供后续使用。

4.3 测试结果及分析

4.3.1 测试样例执行

使用上述生成测试样例进行测试,在本地IE浏览器中执行生成用例并观测结果如图3所示。

图3 测试样例生执行结果

该执行结果表明Web应用中存在XSS漏洞,通过详细分析,我们发现测试用例绕过了Htmlawed的过滤,主要原因在于对<div标签处理不当,当同时存在两个<div的时候,会保留第二个而舍弃第一个,这样导致了原有的安全域边界发生改变。

4.3.2 渗透测试

实验进行到这里实现了对IE浏览器中存在XSS漏洞的初步检测。但实际过程中的攻击往往是伴随极大的危害并且攻击过程是无法察觉的。接下来我们使用A机器中的渗透工具Metasploit进行渗透攻击,选取windows/browser/ms10_042_helpctr_xss _cmd_exec模块,对模块进行相关配置之后,执行exploit命令,启动服务器。接着,我们在有漏洞的Web应用上执行生成的恶意链接,服务器端及客户端执行结果分别如图4和5所示。

如图4所示服务器端的攻击结果,打开了一条session,为进一步与其他漏洞集合做好了准备。

如图5所示客户端的攻击结果,已可以查看安装了有漏洞Web应用的机器的系统信息,获取硬件详情,机器上安装的软件及其运行状态。该漏洞实际上已经是一个基于XSS的进一步命令执行漏洞了。此过程中我们抓取了攻击流量。通过分析漏洞原理得知该漏洞是hcp://的恶意输入结合本地XSS漏洞,通过触发XSS实现任意命令执行。本次攻击中,利用IE8的iframe实施攻击,最终通过加载并拷贝恶意负载创建了WebDAV服务。

图4 服务器端执行结果

图5 客户端执行结果

4.3.3 规则匹配

抓取上述攻击过程中的报文内容并进行分析,由于报文经过了编码处理,报文解码后,内容如下所示,调用了可执行文件:

接下来使用Snort入侵检测系统对攻击流量进行匹配。原规则库未命中,针对存在攻击动作的这条流进行规则匹配。书写规则如下(由于报文特征,提取POC进行覆盖):

添加规则之后,报文进行告警,如图6所示。

图6 更新规则库后Snort分析结果

至此,实验验证了由Fuzzing挖掘漏洞,使用渗透工具进行渗透攻击,抓取并分析攻击流量,提取攻击特征并添加Snort规则,进而实现告警并最终提升XSS漏洞防御能力的设计是可行的。好的Fuzzer可以高效、迅速的检测未知漏洞,将捕获特征转换为Snort规则进而提前补充Snort规则库。若通过部署分布式Snort入侵检测系统,结合Snort不影响设备正常运行的优点,可以有针对性地提升漏洞防御能力,实现防患于未然的效果。

5 结 论

文中通过分析XSS漏洞攻击原理,基于特定的模板,使用Fuzzing技术检测应用程序中存在的XSS漏洞,通过分析攻击流量,提取 Snort规则,并在防御告警模式下实现攻击流量告警。实验证明该方法可有效提升XSS漏洞检测防御水平,对防御未知网络攻击,提升Web安全具有较好的参考价值。

[1]张哲.Web应用中安全漏洞检测技术的研究[D].西安:西安电子科技大学,2011.

[2]吴子敬,张宪忠,管磊,等.基于反过滤规则集和自动爬虫的XSS漏洞深度挖掘技术[J].北京理工大学学报,2012,32(4):395-401.

[3]李冰,赵逢禹.Stored-XSS漏洞检测的研究与设计[J].计算机应用与软件,2013,30(3):17-21.

[4]陈景峰.基于Fuzzing技术的WEB应用程序漏洞挖掘技术研究[D].北京:北方工业大学,2012.

[5]陈伟,周继军,许德武.Snort轻量级入侵检测系统全攻略[M].北京:北京邮电大学出版社,2009.

[6]Jack K.Intrusion Detection with Snort[M].USA:Sams Publishing,2003.

[7]Bekrar S,Bekrar C,Groz R,et al.Finding software vulnerabilities by smart fuzzing[C]//Software Testing, Verification and Validation(ICST),2011 IEEE Fourth International Conference on.IEEE,2011:427-430.

[8]诸葛建伟,王珩,孙松柏.Metasploit渗透测试指南[M].北京:电子工业出版社,2012.

[9]田俊峰,张喆,赵卫东.MAIDS-多检测技术的IDS模型[J].电子与信息学报,2006,42(5):138-141,145.

[10]张旭珍,郭海文,郭俊英.Windows下基于Snort入侵检测系统的构建[J].计算机与数字工程,2010,38(7):108-110.

[11]Snort轻量级入侵检测系统全攻略[M].北京:北京邮电大学出版社,2009.

[12]Rehman R U.Intrusion detection systems with Snort:advanced IDS techniquesusing Snort,Apache,MySQL,PHP,and ACID[M].Prentice Hall Professional,2003.

[13]邵林,张小松,苏恩标.一种基于技术的漏洞发掘新思路[J].计算机应用研究,2009,26(3):1086-1088.

[14]Roesch M.Snort:Lightweight Intrusion Detection for Networks[C]//LISA.1999,99(1):229-238.

Design on enhancement of XSS vulnerability detection capabilities based on fuzzing technology

XU Ying-ying1,LIANG Hua-qing1,LIU Wei2,WANG Xue-feng2
(1.College of Geophysics and Information Engineering,China University of Petroleum,Beijing 102249,China;2.Development Institute,Tarim Oilfield Company,Korla 841000,China)

Surrounding with all kinds of network operation processes of high interaction and high complexity, the effective prevention and detection of Cross-site scripting(XSS)vulnerability favour the improvement in Web security.The paper describes a method of using Crawler's technology to download the content of Interactive page,dig vulnerability with Fuzzing technology,and then to capture network attacks,extract features from the attacks,and at last enhancing the ability of Snort to prevention and detection of XSS vulnerability.We also verify the method with actual experienment,finally the result of the experiment verifies that the method using certain fuzzing test inputs can upgrade the rules of snort and it's effective to improve the detection capabilities.

Fuzzing technology;Crawler's technology;penetration attacks;feature extraction

TN91

:A

:1674-6236(2017)05-0033-04

2016-01-27稿件编号:201601251

许莹莹(1991—),女,陕西铜川人,硕士研究生。研究方向:计算机工程与应用。

猜你喜欢

样例测试用例漏洞
漏洞
样例呈现方式对概念训练类别表征的影响
基于SmartUnit的安全通信系统单元测试用例自动生成
“样例教学”在小学高年级数学中的应用
基于混合遗传算法的回归测试用例集最小化研究
三明:“两票制”堵住加价漏洞
漏洞在哪儿
高铁急救应补齐三漏洞
基于依赖结构的测试用例优先级技术
基于样例学习研究的几点展望