一种XSS漏洞检测系统分析与设计

2019-06-06 04:21赵跃华吴东耀
软件导刊 2019年3期

赵跃华 吴东耀

摘 要:近年来跨站脚本(XSS)漏洞占据十大计算机网络安全漏洞第3名位置,对互联网安全形成严重威胁。目前大多数检测方案无法兼顾反射型、存储型和基于文档对象模型的XSS漏洞。为提高检测准确率,设计一种结合黑盒测试与动态污点分析技术的XSS漏洞检测方案并优化XSS攻击向量选择策略。该策略首先筛选XSS攻击向量模版,检测时对应不同注入点实时生成不同XSS攻击向量,并根据过滤规则集测试结果进行反过滤变换。对比实验表明,该方案可以提高XSS漏洞检测能力,同时检测时间开销较小。

关键词:跨站脚本漏洞;漏洞检测;黑盒测试;动态污点分析技术

DOI:10. 11907/rjdk. 181944

中图分类号:TP309文献标识码:A文章编号:1672-7800(2019)003-0162-06

0 引言

目前,互联网已渗透列各行各业,为客户提供快捷服务的同时,也暴露出越来越严重的安全问题,其中Web应用程序安全问题尤为突出。伴随“Web 2.0”概念[1]的提出,动态网页逐渐取代静态网页,改进了用户与Web应用程序的交互体验,动态网页允许用户修改内容后返回客户端浏览器,但是如果服务器对用户提交的内容不进行有效过滤,攻击者可利用该漏洞攻击服务器端和客户端,这是XSS产生攻击的主要原因[2]。社交网站一直是XSS攻击的重灾区,国外大型社交网站如Facebook、Twitter等也不能幸免[3]。XSS攻击破坏力和影响力极强,给企业和普通用户带来重大损失。

传统做法按照“是否把数据存储在服务器端”的标准进行分类,将XSS分为反射型和存储型XSS[4],前者简单地把XSS代码“反射”给浏览器,后者则把XSS代码存储在服务器端,等访客访问该网页时即刻触发XSS攻击,具有更持久的破坏力,但是DOM型XSS不依赖客户端向服务器端发送XSS代码,以文档对象模型为基础,即利用DOM树执行代码,因此对于DOM型XSS漏洞的检测更加复杂和困难[5]。

国内外专家提出各种检测XSS漏洞的方法,黑盒测试和白盒测试是其中最常见的两种,前者是基于运行目标代码对象的漏洞检测技术[6],后者是基于源代码对象的漏洞检测技术[7]。Gupta & Gupta[8]提出一种通过逆向分析数据流的静态分析方法,应用于基于Java的Web应用程序XSS漏洞检测,该方法对于XSS漏洞检测效率较高,缺点是只能应用于基于Java的Web应用程序,且需要Web应用程序源码。Liu & Zhao等[9]提出基于动态分析的最优攻击向量库XSS漏洞检测方法。该方法自动生成一个攻击向量库,并使用优化模式不断优化攻击向量库,然后自动检测Web应用程序中的XSS漏洞,但其中机器学习算法还需进一步优化,才能提高攻击向量库完整性和有效性。李洁、俞研等[10]提出基于动态污点传播模型的检测方法。该方法主要使用函数劫持技术检测污点数据,根据检测情况分析是否产生漏洞,该方法比以往DOM型XSS检测在准确率和效率方面有明显提升,但需继续完善污点数据集、进一步提高自动化程度。李楠[11]提出一种灰盒测试的检测方法,该方法运用编译原理技术构建源代码抽象語法树和程序控制流图,审查所有被调用的敏感函数,然后跟踪和分析以上函数中敏感参数数据流,最后进行动态验证,检查是否存在XSS漏洞,同时利用污点分析技术检测DOM型XSS漏洞。该方法对PHP语言编写的网站XSS漏洞检测效果较好,但该方法需获知Web应用程序源码,由于限制了编程语言,所以该方法局限性较大。Wang &Xu等[12]提出基于客户端污点跟踪的检测方法,建立了基于该方法的动态检测框架,通过重写所有JavaScript特性和DOM相关API,在浏览器渲染过程完成后标记和追踪污点数据,该方法对于DOM型XSS检测准确率较高,但需进一步提高XSS攻击向量生成效率。Pan &Mao[13]提出一种结合静态分析和动态分析的检测方法。该方法使用一个采用两阶段混合分析的检测框架,第一阶段由文本过滤器和抽象语法树分析器组成轻量级静态分析,第二阶段执行动态符号。该检测框架对于DOM型XSS漏洞检测准确率高、误报率低,缺点是仅能检测DOM型XSS漏洞。

综上所述,虽然国内外关于XSS漏洞检测已积累较丰富的研究成果,但还存在一些不完善的地方。基于白盒测试的检测方法通过分析系统源代码实现XSS漏洞检测,研究证明其对XSS漏洞检测准确率较高,但由于需获得Web应用程序系统源代码,且限定开发语言或脚本语言,因此该方法局限性较高。而基于黑盒测试的方法虽不需要程序内部结构和源码,但普遍存在攻击向量针对性不强的缺点,部分基于黑盒测试的方法存在无法检测或仅能检测DOM型XSS漏洞的缺点。本文基于现有检测方法存在的不足,设计一种结合黑盒测试和动态污点分析的XSS漏洞检测方案,该方案可高效、全面检测XSS漏洞。

1 设计思路

虽然白盒测试比黑盒测试检测效率高,但对被检测网站要求较高,且自动化程度较低,因此普适性较差。本文检测方案设计目标是高效且全面地检测XSS漏洞,可满足大多数待检测网站的检测需求,因此黑盒测试更适合本方案。传统黑盒测试对于反射型和存储型XSS漏洞检测准确率较高,而DOM型XSS漏洞和其它漏洞最大区别在于对其攻击不需要服务器返回提交的XSS代码,由浏览器接收并由解释器执行,因此传统黑盒测试无法找到对应的XSS代码,从而导致无法检测DOM型XSS漏洞。动态污点分析可以追踪Web应用程序运行时浏览器如何操作数据流,并且记录操作过程中数据流传播路线,通过实时监测判断敏感数据流是否有被泄漏的可能性[14],从而找到DOM型XSS漏洞注入点,继而可发现是否存在DOM型XSS漏洞。因此动态污点分析可有效检测DOM型XSS漏洞,但无法有效检测反射型和存储型XSS漏洞。本方案在黑盒测试的基础上,同时结合动态污点分析,使两者优势互补,提高准确率的同时降低误报率。

本方案首先获取待检测网站的Web网页源码,分析其使用的动态污点,对污点数据源进行标记、追踪和检测,并按照注入点判别依据查找DOM型XSS漏洞注入点;另外,使用传统黑盒测试中字符串匹配的方法,按照注入点判别依据查找反射型和存储型XSS漏洞注入点;然后,对每个注入点生成相应XSS攻击向量,并利用黑盒测试对3种注入点进行注入攻击;最后,根据服务器响应信息判断是否存在漏洞,输出XSS漏洞检测结果。

2 关键技术分析与改进

因为XSS攻击向量的选择直接影响检测能力和效率,所以黑盒测试对于XSS攻击向量的要求较高,目前关于XSS攻击向量的选择有两种常用策略。

(1)直接选择现有的XSS攻击向量库进行变换后使用。该策略的优点是可减少工作量,可以应对大部分检测需求,缺点是过于依赖该XSS攻击向量库完备性。

(2)选择基本的XSS攻击向量模版,检测时实时生成XSS攻击向量。该策略的优点是针对性强,可减少无意义的注入攻击,提高XSS攻击向量的执行成功率,从而提高系统检测效率,但缺点是依赖于基本的XSS攻击向量模版选择,且合成和变换规则的优劣直接影响检测能力。

本文方案使用第二种策略,针对其中的不足,对关键技术进行改进,优化XSS攻击向量的选择策略,使XSS攻击向量更符合实际检测需求。首先进行预处理,收集足够多的原始XSS攻击向量,对其筛选后处理生成XSS攻击向量模版,形成完备性较高和冗余度较低的XSS攻击向量模版库;在漏洞检测过程中,根据注入点的输出点上下文提取XSS攻击向量合成规则,该规则包括生成XSS攻击向量时选择何种XSS攻击向量模版、闭合块、额外块,然后对待检测网站进行过滤规则集测试,形成相应的过滤规则集,最后按照XSS攻击向量合成规则对XSS攻击向量模版进行补齐,使之成为完整的XSS攻击向量,再利用反过滤规则集变换规则,生成最终有效的XSS攻击向量。根据注入点情况动态生成有针对性的XSS攻击向量,使注入攻击能更容易地得到有效的检测结果。关键技术的改进示意如图1所示。

2.1 XSS攻击向量模版生成

现有大多数选取策略根据主观判断从常见的XSS攻击向量模版中选择一部分,带有较强主观性,影响了选择有效性,但如果选择全部则影响后续检测效率。为提高XSS攻击向量模版有效性,首先收集足够多的XSS攻击向量,再经过聚类算法处理,最后以等价类测试和人工筛选的方法选择XSS攻击向量模版,以达到使该XSS攻击向量模版可兼顾检测能力和检测效率的目的。

聚类算法的目的是将大量数据划分为不同的类,使用划分方法的聚类算法是最合适的。划分方法的聚类算法中K-means算法逻辑简单、算法时耗小、复杂度低,适合频繁调试和测试 [15],K-means算法如式(1)所示。

XSS攻击向量模版生成流程如下:

(1)首先对收集到的原始XSS攻击向量进行反过滤规则集过滤的逆向处理,把XSS攻击向量还原成未进行过滤规则集变换的形态。

(2)依据对输出点位置分类的分析,选择K个XSS攻击向量样本,作为最原始的聚类中心。

(3)对于在XSS攻击向量库的每一条XSS攻擊向量,计算其与每个聚类中心Ck的Levenshtein距离[16]。

(4)根据聚类最近的原则,分别将它们分配给最相似的聚类中心代表的类。

(5)计算每个类中所有XSS攻击向量Levenshtein距离均值,作为该类新聚类中心。

(6)计算所有XSS攻击向量到其所属聚类中心的Levenshtein距离平方和J(C)值。

(7)判断聚类中心和J(C)值是否变化改变,如果是,则跳转到步骤(3);如果否,继续跳转到步骤(8)。

(8)人工分析和评估结果,分析聚类算法的局部最优解是否符合XSS漏洞检测需要,并检查生成的聚类中心是否符合逻辑。

(9)对结果评估是否认同,如果是,则跳转到步骤(10);如果否,根据对结果的分析重新选择K(K可变化)个XSS攻击向量作为初始样本,跳转到步骤(3)。

(10)通过等价类测试和人工筛选,剔除相同作用的XSS攻击向量。

(11)根据步骤(10)的结果对XSS攻击向量进行处理,删去用作闭合前面标签、属性的闭合块(例如:““>”、“>”)和用作闭合后面标签、属性的额外块(例如:“<”、“<””),生成XSS攻击向量模版。

具体流程如图2所示。

2.2 XSS攻击向量合成规则提取

首先找到注入点的输出点位置,判断输出点的类型,选择对应的注入点所使用的对应XSS攻击向量模版,再根据输出点的上下文环境判断闭合块、额外块的规则,XSS攻击向量模版、闭合块、额外块即是XSS攻击向量合成规则,最后根据合成规则组合成XSS攻击向量。此策略相比较常用的选取策略,既能使XSS攻击向量符合注入攻击需求,减少了后续无效的注入攻击,又能保证XSS攻击向量在输出点输出后,上下文语法一致,从而使得XSS攻击向量更容易执行成功,继而提高准确率。

提取XSS攻击向量合成规则流程如下:

(1)待提取队列是否空,如果是,则结束,如果否,则跳转到步骤(1)。

(2)找到注入点对应输出点的输出位置,遍历网页源码向前查找是否首次出现“=”,如果是跳转到步骤(5),如果否则跳转到步骤(3)。

(3)网页源码的位置往前查找首先出现“>”,判断“<”和“>”中间的字符串。

(4)根据字符串判断,如果是如果是HTML常规标签字符串则输出点在HTML常规标签间,如果是HTML特殊标签字符串则输出点在HTML特殊标签间,如果是“script”则输出点在JavaScript中,如果是“style”则输出点在CSS中。

(5)在网页源码中往前查找直到第一次出现空格,判断空格和“=”之间的字符串。

(6)根据字符串判断,如果是“value”则输出点在HTML标签属性中,如果是以“on”开头的事件属性字符串则输出点在HTML事件属性内,如果是“dynsrc”、“src”、“href”等属性字符串则输出点在JavaScript伪协议中,如果是“style”则输出点在CSS中,如果都不是则继续往前查找,找到“<”后面是“script”,则输出点在JavaScript中。判断结束后,将相关数据记录,跳转到步骤(7)。

(7)判断输出点类型,如果是在HTML标签属性中、HTML事件属性内、JavaScript伪协议中、JavaScript中的输出点,则从输出点位置往前寻找“<”、“<””等字符串,根据对应关系选择“>”、“”>”等闭合块,如果是在HTML特殊标签间的输出点,其闭合块为“”,如果是在JavaScript中的输出点,则从输出点往后寻找“>”、“”>”等字符串,根据对应关系选择“<”、“<””等额外块。判断结束后,将相关数据记录,跳转到步骤(1)。

具体流程如图3所示。

2.3 过滤规则集测试

不同的网站对潜在XSS代码的过滤不同,但其过滤形式、方法、规则及技术等相似,且均适用于有限的代码[17]。常见的过滤规则集主要分为5类,分别是对敏感词的操作、对内容重編码操作、服务器端对字符书写方式操作、对编码格式识别操作、对占位符的识别操作。

XSS代码变换处理策略通常将XSS攻击向量遍历反过滤规则集变换,即无论服务器端使用何种过滤规则集,总是对每一条XSS攻击向量进行所有反过滤规则集变换,直到测试出XSS漏洞或者遍历完毕。实际上绝大多数服务器采用的过滤规则集均基于固定模式,且过滤规则集有限,并不需要对于每一条XSS攻击向量都进行反过滤规则集变换。因此本文提出使用过滤规则集测试,当获知待测试网站服务器使用的过滤规则集,后续则采取对应的反过滤规则集变换,使XSS攻击向量变换更有针对性,减少注入攻击次数,从而提高检测效率。

根据常见过滤规则集,构造对应的探子向量和XSS敏感词组成的字符串,依次对注入点进行注入攻击测试,根据测试结果判断采用何种过滤规则,经过一系列测试得出目标测试网站过滤规则集。

过滤规则集测试流程如下:

(1)构造一条探子向量和XSS敏感词组成的字符串,对该注入点进行注入攻击测试,定义该系列测试为M1,x。

(2)构造一条探子向量和十进制编码的XSS敏感词组成的字符串,对该注入点进行注入攻击测试,再构造一条探子向量和十六进制编码的XSS敏感词组成的字符串,对该注入点进行注入攻击测试,定义该系列测试为M2,x。

(3)构造一条探子向量和小写、大写混写的XSS敏感词组成的字符串,对该注入点进行注入攻击测试,再构造一条探子向量和半角、全角字符混写的XSS敏感词组成的字符串,对注入点进行注入攻击测试,定义该系列测试为M3,x。

(4)构造一条探子向量和空格随意插入的XSS敏感词组成的字符串,对该注入点进行注入攻击测试,再依次构造探子向量和Tab、回车及其它特殊占位符随意插入的XSS敏感词组成的字符串,对注入点进行注入攻击测试,定义该系列测试为M4,x。

(5)构造一条探子向量和UTF-8编码的XSS敏感词组成的字符串,对该注入点进行注入攻击测试,再依次构造探子向量和UTF-16、Unicode等编码的XSS敏感词组成的字符串,再对该注入点进行注入攻击测试,定义该系列测试为M5,x。

具体流程图如图4所示。

经过以上测试后,根据测试结果确定过滤规则集,生成XSS攻击向量时只需采取对应的反过滤规则集变换即可使XSS攻击向量有效绕过服务器端的过滤。

2.4 XSS攻击向量生成

XSS攻击向量生成需要根据注入点的XSS攻击向量合成规则,选择对应的XSS攻击向量模版,并合成为完整的XSS攻击向量,再根据过滤规则集测试结果,进行反过滤规则集变换规则[17],构成有效的XSS攻击向量,从而使其绕过服务器端的过滤后成功执行。

生成XSS攻击向量流程如下:

(1)根据输出点类型,选取对应类型标识的XSS攻击向量模版。

(2)根据XSS攻击向量合成规则,选取对应输出点类型的XSS攻击向量模版并对其进行合成处理,再组合相应的闭合块和额外块,使其成为完整的XSS攻击向量,具体包括:①若出现在HTML常规标签间,XSS攻击向量合成为[XSS攻击向量模版];②若出现在HTML特殊标签间,XSS攻击向量合成为[闭合块]+[XSS攻击向量模版];③若出现在标签之内,XSS攻击向量合成为[闭合块]+[XSS攻击向量模版];④若出现在HTML事件属性内,XSS攻击向量合成为[XSS攻击向量模版]或[闭合块]+[XSS攻击向量模版];⑤若出现在JavaScript伪协议中,XSS攻击向量合成为[闭合块]+[XSS攻击向量模版];+//或[闭合块]+[XSS攻击向量模版];+a=”或[闭合块]+[XSS攻击向量模版];+运算符;⑥若出现在JavaScript中,XSS攻击向量合成为 [XSS攻击向量模版]或[闭合块]+[XSS攻击向量模版]或+[XSS攻击向量模版]+[额外块];⑦若出现在CSS中,XSS攻击向量合成为[XSS攻击向量模版]。

(3)如果是DOM型XSS漏洞注入点则流程结束,如果是反射型和存储型XSS漏洞的注入点,即带参数的URL和Form表单,则需根据过滤规则集选择与其对应的反过滤规则集变换规则 ,依次对完整的XSS攻击向量进行反过滤变换操作,得到最终的XSS攻击向量。

3 XSS漏洞检测系统设计

3.1 系统结构

本文设计的XSS漏洞检测系统采用多线程技术,系统整体结构分为三大部分,分别是注入点分析模块、攻击与分析模块、数据库。注入点分析模块主要用于获取XSS漏洞相关数据,采用网络爬虫广度优先搜索策略,该模块分为爬虫子模块和网页分析子模块;攻击与分析模块主要用于对XSS漏洞相关数据生成XSS攻击向量,并对注入点进行注入攻击,通过接收服务器的响应判断是否存在XSS漏洞,该模块分为模拟分析子模块和漏洞检测分析子模块;数据库保存XSS漏洞相关数据。系统结构见图5。

3.2 工作流程

首先输入待检测网站的URL,并且设定一个最深爬取深度,初始爬取深度为0,在数据库中新建爬虫URL表并将相关数据存入。爬虫子模块将根据URL下载网页源码,下载完成后更新爬虫URL表中相关数据,并将网页源码传给网页分析子模块;网页分析子模块接收网页源码后渲染其JavaScript代码,同时查找污点数据注入点并提取其XSS攻击向量合成规则,在数据库中新建待测试表并将相关数据存入数据库,然后提取网页源码中的URL,经过URL补全、非同源URL删除、URL去重依次处理,在数据库中新建爬虫URL表并将相关数据存入,再将其爬取深度设为当前爬取深度加1,同时提取带参数的URL和Form表单,在数据库中新建待测试表并与相关数据存入其中,完成一次循环。反复循环直到待下载队列为空,或者当前爬取深度大于等于最深爬取深度,结束注入点分析模块运行。

XSS攻擊向量模版管理模块将对数据库中的模版进行增加、删除和修改。模拟攻击子模块首先从数据库中选择类型为带参数的URL和Form表单的待测试表,对其注入点使用探子向量模拟攻击,查找响应的网页进行探子向量,从而查找注入点和输出点的对应关系,同时提取其XSS攻击向量合成规则,更新其待测试表中相关数据,循环直到该类待测试表遍历完毕,然后选取一条注入点进行过滤规则集测试,测试对应网站过滤规则集。最后从所有待测试表中依次取出注入点数据,根据其XSS攻击向量合成规则,再选取对应的XSS攻击向量模版,对其进行XSS攻击向量合成和反过滤规则集变换,成为有效的XSS攻击向量,使用XSS攻击向量对注入点进行注入攻击,注入攻击后,漏洞检测分析子模块接收服务器响应,进行本地浏览器渲染,判断是否存在XSS漏洞,如果存在则在数据库中新建检测结果表并存入相关数据,如果不存在则继续下一条XSS攻击向量,直到该注入点的XSS攻击向量全部测试完毕或者测试出其存在XSS漏洞。注入攻击循环遍历完成所有待测试表,此时所有注入点的XSS漏洞已测试完毕,最后生成检测报告。

系统工作流程如图6所示。

4 对比实验

为验证本系统漏洞检测性能,搭建测试环境,其由两个部分组成:一个是服务器端,用于部署搭建被测试网站;另一个是客户端,用于部署本检测系统,通过和服务器端交互数据达到检测目的,测试环境软件和硬件见表1。

测试样本是由Google和米兰理工大学一起合作研发的Firing Range[18],该项目为测试自动化扫描软件能力搭建一个测试环境,验证软件检测能力。测试对比系统为Burp Suite 1.7.27[19]、Acunetix Web Vulnerability Scanner 10.0[20](AWVS),均为较成熟的XSS漏洞检测工具。将本系统和Burp Suite、AWVS的实验测试结果汇总,如表2所示。

分别计算Burp Suite、AWVS和本系统检测的准确率和误报率,如表3所示。

由表2、表3可看出,Burp Suite对于反射型和存储型XSS漏洞检测效果较好,其无法检测的漏洞多数是DOM型,Burp Suite误报了4个漏洞,其中包括3种XSS漏洞,并且时间开销较大;AWVS对于3种XSS漏洞检测效果均较好,对于反射型和存储型XSS漏洞检测效果和本系统基本持平,但对DOM型检测效果相比本系统相差较明显,AWVS对于DOM型检测准确率较高,误报率同样较高,但其时间开销较小;而本系统相对Burp Suite、AWVS漏洞检测效果均有提升,对于3种XSS漏洞检测的准确率均有提高且漏报率均有所降低,其中对于DOM型的准确率有明显提升,且本系统时间开销最小。综上所述,本系统相较于Burp Suite、AWVS,在准确率、误报率方面有一定优势,时间开销相比Burp Suite有所降低,但和AWVS基本持平,因此在时间开销方面优势较小。

5 结语

本文设计了一种结合黑盒测试和动态污点分析的方案,优化了其中涉及XSS攻击向量选择的关键技术,设计并实现了该方案原型系统,通过对比实验发现本文设计的系统可高效、全面检测3种不同XSS漏洞。但系统依然存在一些不足,一些反射型XSS会引起DOM型XSS,还无法检测客户端和服务器代码混合的情况,下一步将更加深入研究XSS攻击向量,完善系统使其可对该类情况进行有效检测。

参考文献:

[1] O'REILLY T. What is Web 2.0: design patterns and business models for the next generation of software[J]. Communications & Strategies ,2007, 97(7):253-259.

[2] SHANMUGAM J, PONNAVAIKKO M. XSS application worms: New internet infestation and optimized protective measures[C]. Eighth ACIS International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel/Distributed Computing, 2007:1164-1169.

[3] WANG X, ZHANG W. Cross-site scripting attacks procedure and prevention strategies[C]. MATEC Web of Conferences,2016:1-3.

[4] WASSERMANN G. Static detection of cross-site scripting vulnerabilities[C]. ACM/IEEE International Conference on Software Engineering, 2008:171-180.

[5] HOLM H. Performance of automated network vulnerability scanning at remediating security issues[J]. Computers & Security, 2012, 31(2):164-175.

[6] 王希忠, 黃俊强. 漏洞挖掘技术研究[J]. 信息安全与技术, 2014(6):32-35.

[7] GUPTA S, GUPTA B B. PHP-sensor:a prototype method to discover workflow violation and XSS vulnerabilities in PHP web applications[C]. Proceedings of the 12th ACM International Conference on Computing Frontiers,2015:1-8.

[8] LIU Y, ZHAO W, WANG D, et al. A XSS vulnerability detection approach based on simulating browser behavior[C]. International Conference on Information Science and Security,2015:1-4.

[9] 李洁,俞研,吴家顺. 基于动态污点分析的DOM XSS漏洞检测算法[J]. 计算机应用, 2016, 36(5):1246-1249.

[10] 李楠. 一种XSS漏洞灰盒检测方案的设计与实现[D]. 成都:电子科技大学,2017.

[11] WANG R, XU G, ZENG X, et al. TT-XSS: a novel taint tracking based dynamic detection framework for DOM cross-site scripting[J]. Journal of Parallel & Distributed Computing, 2017,118(8):100-106.

[12] PAN J,MAO X. Detecting DOM-sourced cross-site scripting in browser extensions[C]. IEEE International Conference on Software Maintenance and Evolution, 2017:24-34.

[13] LEEK T R,BAKER G Z,BROWN R E, et al. Coverage maximization using dynamic taint tracing[J]. American Journal of Orthodontics & Dentofacial Orthopedics,2007, 103(413):571.

[14] HARTIGAN J A. A K-means clustering algorithm[J]. Application of Statistics, 1979, 28(1):100-108.

[15] MILLER F P, VANDOME A F, MCBREWSTER J. Levenshtein distance[M]. London:Alpha Press,2009.

[16] LIU B W. XSS vulnerability scanning algorithm based on anti-filtering rules[C]. 2017 International Conference on Computer, Electronics and Communication Engineering,2017:5.

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

[18] ANOMITY. Firing range[EB/OL]. https://github.com/google/firing- range.

[19] ANOMITY. Burp suite[EB/OL]. https://portswigger.net/burp/.

[20] ACUNETIX. Acunetix web vulnerability scanner[EB/OL]. https://www.acunetix.com/vulnerability-scanner/.

(责任编辑:江 艳)