APP下载

跨站脚本漏洞的白盒测试框架的设计和实现

2018-11-26闫飞

电脑知识与技术 2018年22期
关键词:实现设计

闫飞

摘要:目前,B/S架构与Web2.0时代实现了快速发展,因为缺乏对不可信用户数据的校验机制,导致跨站脚本漏洞屡见不鲜,活跃在各种网站,对用户安全造成了直接性威胁。这主要是由于服务端代码和客户端脚本之间出现融合,导致既有技术难以精确有效地生成攻击向量,以进行跨站脚本漏洞的探索工作。据此,本文主要對跨站脚本漏洞的白盒测试框架设计与实现进行了深入探究。

关键词:跨站脚本漏洞;白盒测试框架;设计;实现

中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2018)22-0242-02

1 跨站脚本漏洞机理

跨站脚本属于一种应用层次的攻击,一旦Web应用程序难以验证用户输入,就会直接导致其被解析成为HTML代码,并通过网页显示具体内容,以此引进漏洞。在用户无意间对恶意HTML代码页面进行访问的时候,攻击代码就会启动,进而直接对用户安全造成威胁,主要表现为cookie病毒、屏蔽和伪造页面信息、辅助攻击等。

2 跨站脚本漏洞的白盒测试框架设计

通过利用静态化技术,详细分析服务端数据信息,以便于进一步检测并发现XSS漏洞与SQL注入漏洞。对不可信的数据源进行标识,并跟踪数据流,对所对应的攻击陷入点进行识别,即Web应用程序中和漏洞密切相关的代码,最典型的就是echo,其中其函数就是输出服务端数据到页面上,在变量程序执行时,一旦受到污染,此语句就会被识别成攻击陷入点。动态页面的文档属于一种内部包含服务端代码的混合标签结构,文档的注入点大不相同,随之攻击向量也会发生巨大变化,而在静态分析中,对文档内部跨站脚本漏洞的注入位置进一步识别,需要详细分析从不可信数据源到攻击陷入点部分的指令流,并对其中代码片段进行提取,通过利用上下文无关文法叙述此代码片段。而且其中可以独立运行的代码片段主要包括对不可信用户数据的操作语句与条件路径,在大大降低源程序的基础上,将与漏洞不相关的用户输入变量及时排除。

想要判断漏洞的具体存在程度,应对程序过滤威胁性脚本的准确性进行详细评判。因此,利用以字符串为基础的约束分析器,具有非常重要的现实意义。在此过程中,把代码片段看作是约束求解器的初始输入,生成符合相关法律法规的字符串匹配模式,其会对模糊器生成的攻击向量进行校验。而为了提高模糊器效率,应以HTML和Java Script语义为基础,以XSS攻击向量注入位置与模式为依据,设计新型模糊器。其中图1所示,白盒测试框架整体结构。从功能上进行分析,主要包括静态数据流、字符串约束求解、攻击向量模糊器等部分。在这一框架上,验证原型系统XSS Explore。

2.1 数据流分析

在数据流分析时,利用Pixy作为开源工具,其是静态探测脚本漏洞的主要工具,可以对PHP源程序进行数据流敏感、内部流程、内容敏感数据流全面分析,并配置支持别名等。就性能而言,Pixy主要利用的是静态分析策略,但是其对源程序的具体执行路径的嗅觉并不十分敏锐,所以,很有可能会造成误报,但是,以白盒测试框架的Web校验器,可以及时消除误报,进而满足框架需求。将不可信的数据流的具体操作过程提取出来,需要进行Pixy静态分析拓展。其中从不可信数据流直到攻击陷入点位置,对数据信息的影响十分明显,想要把所包括的循环数据流进行建模,需要一项相对复杂的转化流程,但是,其势必会影响不可信数据操作程序的提取工作。所以,把循环体中的数据流,以赋值语句的形式展示出来,其并不会改变非循环体内的数据流,在忽视一定数据处理流程的同时,会更进一步保障数据校验的语义。

2.2 字符串约束求解

把CFG代码应用到求解中去,利用Kaluza字符串求解器,其包含正则表达式与有界上下文无关文法。给定约束集合,此求解器会对集合中的约束满足程度进行判断,并在满足基础上,返回匹配字符串。切实根据Pixy生成的数据依赖,对PHP语言的变量、赋值、字符串函数进行语义抽象,促使其可以把代码转换成CFG上下文无关文法,以此进行字符串约束求解。由于PHP语言内包括一定的复杂函数与定义,构建健全的转化过程,根本不会产生良好的求解效果,还会导致系统可操作性明显下降。所以,在实现时,尚未全面实现对全部函数的支持,只能够抽象常用字符串处理函数,并对核心操作语义进行全面解析。

2.3 模糊器设计

构建模糊器,以生成XSS攻击向量,对于白盒测试而言非常关键。把攻击向量通过HTML文档的注入位置进行划分,详细分析既定模式。跨站脚本漏洞攻击向量融合了HTML与Java Script代码。科学有效的供给向量,需要通过输入校验机制,并确保浏览器可以准确解析页面文件的脚本。通过对Rsnake所搜集的跨站脚本漏洞攻击向量进行详细分析,有效的模式则会由于注入点不同而不断产生变化。想要产生更加有效的攻击向量,根据初始向量的组成模式,随机生成并变异。对初始攻击向量类型进行详细分析,识别子模式,并对其进行随机生成与变异,最后把子模式根据语法结构进行重新组合,以不同形式编码,生成候选向量。模糊器根据各种子模式产生的效果,主要包括字母大小写转换、分隔符号随机插入、特定形式编码等等。根据各种类型注入攻击模式,对既定模式的影响与区别进行详细分析。

1)节点分离

通过插入HTML标签,匹配文档的固有节点,确保DOM树结构的整体性。以此作为基础,插入新标签,注入脚本,其关键就在于绕开服务端输入校验机制,注入脚本代码。这种攻击向量的特性为前缀分别代表开始与结束,而子模式脚本代码注入Web页面,则是由标签决定浏览器解析的正确性,所以,针对子模式模糊化操作,是生成向量的关键所在。

2)属性注入

在此攻击向量中,不可信变量通过包括恶意脚本,打破标签的身份属性,再插入另外属性。攻击向量通过单引号,表示属性字符串的分割符,促使攻击者可以插入脚本命令。其中,模糊化操作的主要目的是浏览器可以正确解析HTML文本,但是,其关键是绕开服务端屏蔽的敏感关键字词,并且保证浏览器可以正确解析。

3)动态外部链接

实际上就是节点分离,通过引进外部脚本文件,修改客户端DOM树,所以,很容易演变成脚本木马,对用户安全造成严重威胁。

4)动态代码注入

动态代码注入的危险性非常高,主要是通过Java Script的eval函数的整体性。虽然服务端会对关键字词进行过滤,但是以此函数,能够动态生成HTML代码、Java Script代码,所以防范难度相对较大,很容易实现脚本注入目标。但是,脚本注入的漏洞并不是很多,通过对攻击向量进行详细分析,其构造和语法之间有着非常密切的关系,而且具备较强的灵活性,所以,模糊器根本不能进一步准确生成攻击向量。

2.4 攻击向量验证

Web校验器其本质是在真实的环境中,以Web作为平台,拦截HTTP,以请求头部,根据候选攻击向量,修改对应参数,再做进一步测试。在进行攻击向量检测时,以字符串匹配的方式,验证返回页面中的恶意脚本,如果能够成功匹配,就可以作为科学有效的攻击向量,进一步加入向量集合中去。

3 跨站腳本漏洞的白盒测试框架的实现

为了验证跨站脚本漏洞的白盒测试框架的可靠性与有效性,实现了XSS Explore原型工具,在实验过程中,从Source Forge选择开源论坛和OA系统,进行白盒测试,具体实验结果见表1所示。

在原型框架中,集成了字符串约束求解器、攻击向量模糊量,所以,就漏洞探测时间而言,呈明显的增长趋势。然而,比较来讲,XSS Explore可以进一步准确探测跨站脚本漏洞,所以,精确度在很大程度上得以提高。

4 结语

总之,从服务端出发,在既有静态数据流分析的同时,结合字符串约束求解技术,设计跨站脚本漏洞的百合测试框架。而为了保障漏洞探测的准确率,对攻击向量模式做了明确划分,并在此基础上,对模糊器做了进一步设计,以此提高了测试的准确性。不仅如此,经过实践分析,白盒测试框架的原型系统可以更加精确地探测出跨站脚本漏洞,其直接影响着保证网络安全的攻防技术与实际应用。

参考文献:

[1] 雷佳伟. 基于爬虫技术的Web应用程序漏洞检测方法[D]. 北京工业大学, 2016.

[2] 宋琦. Web脚本攻击与防范检测研究[D]. 上海交通大学, 2010.

[3] 王博扬. 基于Fuzzing技术的漏洞发现方法的研究与设计[D]. 北京邮电大学, 2017.

【通联编辑:张薇】

猜你喜欢

实现设计
何为设计的守护之道?
瞒天过海——仿生设计萌到家
设计秀
有种设计叫而专
信息系统安全评价系统设计及实现
高校声像档案数字化管理的实现路径
办公室人员尚需制定个人发展规划
浅析铁路通信传输的构成及实现方法
设计之味