《XSS检测方法和设备.pdf》由会员分享,可在线阅读,更多相关《XSS检测方法和设备.pdf(11页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN101964025A43申请公布日20110202CN101964025ACN101964025A21申请号200910089786822申请日20090723G06F21/00200601G06F11/36200601H04L29/0620060171申请人中联绿盟信息技术北京有限公司地址100089北京市海淀区北洼路4号益泰大厦三层72发明人刘光旭温玉杰周大王晓明刘晓霞74专利代理机构中国专利代理香港有限公司72001代理人谢建云刘红54发明名称XSS检测方法和设备57摘要本发明公开了一种检测网页中的XSS漏洞的XSS漏洞检测方法,包括为网页可接收的参数值对集合中的每个参。
2、数值对构造在值中插入了特定脚本的参数值对,基于该插入了特定脚本的参数值对来组装对应于所述网页的URL,获取对应于所组装的URL的动态网页内容,以及模拟执行所获取的动态网页内容,如果执行了所述特定脚本,则认为所述网页中对该参数的处理存在XSS漏洞。本发明还公开了一种相应的XSS漏洞检测设备和使用该设备的网站安全扫描系统和网络扫描系统。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书6页附图3页CN101964026A1/1页21一种检测网页中的XSS漏洞的XSS漏洞检测方法,包括步骤确定网页可接收的参数值对集合;以及为所述参数值对集合中的每个参数值对构造在值中插。
3、入了特定脚本的参数值对;基于该插入了特定脚本的参数值对来组装对应于所述网页的URL;获取对应于所组装的URL的动态网页内容;以及模拟执行所获取的动态网页内容,如果执行了所述特定脚本,则认为所述网页中对该参数的处理存在XSS漏洞。2如权利要求1所述的XSS漏洞检测方法,其中在所述模拟执行所获取的动态网页内容的步骤中,使用脚本解析引擎来模拟执行所述网页内容中,该脚本解析引擎被构造为基于特定脚本是否被触发来确定是否存在XSS漏洞。3如上述权利要求任一个所述的XSS漏洞检测方法,其中所述特定脚本为ALERT函数。4如上述权利要求任一个所述的XSS漏洞检测方法,其中在所述组装对应于网页的URL的步骤中,。
4、通过在URL中改变参数值对次序和插入其它特殊代码来组装多个URL,并且为所述多个URL分别执行所述获取动态网页内容和模拟执行动态网页内容的步骤。5如上述权利要求任一个所述的XSS漏洞检测方法,还包括步骤记录所述参数值对集合中的每个参数是否存在XSS漏洞。6一种检测网页中的XSS漏洞的XSS漏洞检测设备,包括网页参数值对集合确定装置,用于确定所述网页可以接收的参数值对集合;测试URL组装装置,为所述参数值对集合中的每个参数值对组装测试用的URL,其中在组织所述测试用的URL时,在所述值中插入特定的脚本;请求和接收装置,用于将所述测试用的URL发送到网络服务器,并接收从所述网络服务器返回的网页内容。
5、;以及模拟执行装置,用于模拟执行所述网页内容,并且在所述特定脚本被执行时,确定相应参数存在XSS漏洞。7如权利要求6所述的XSS漏洞检测设备,还包括脚本解析引擎,所述模拟执行装置在模拟执行所述网页内容时使用所述脚本解析引擎来执行脚本,所述脚本解析引擎根据所述特定脚本是否被触发来确定所述相应参数是否存在XSS漏洞。8如权利要求6或者7所述的XSS漏洞检测设备,其中所述特定脚本为ALERT函数。9如权利要求6至8中任一项所述的XSS漏洞检测设备,其中所述测试URL组装装置在为某个参数值对组装测试用的URL时,通过在URL中改变参数值对次序和插入其它特殊代码来组装多个URL,并且将每个组装的URL发。
6、送给所述请求和接收装置,以便为每个组装的URL进行XSS漏洞。10如权利要求6至9中任一项所述的XSS漏洞检测设备,还包括记录装置,记录所述参数值对集合中的每个参数是否存在XSS漏洞。11一种网站安全扫描系统,包括如权利要求69中的任一项所述的XSS漏洞检测设备。12一种网络扫描系统,包括如权利要求69中的任一项所述的XSS漏洞检测设备。权利要求书CN101964025ACN101964026A1/6页3XSS检测方法和设备技术领域0001本发明涉及网站安全扫描和分析领域,尤其涉及一种用于对网站中的网页是否具有XSS跨站脚本攻击漏洞进行检测的方法和设备。背景技术0002从二十世纪九十年代开始,。
7、XSS漏洞开始被披露,其发现和利用为人们所关注。XSS,即跨站脚本攻击,是利用网站漏洞从用户那里恶意盗取信息的方式之一。用户在浏览网站、使用即时通讯软件、或者在阅读电子邮件时,通常会点击其中的链接。恶意攻击者在链接中插入恶意代码,当用户点击这些链接时,生成相应网页的网络服务器由于没有过滤这些恶意代码而具有XSS漏洞,因此生成包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样,从而导致这些恶意代码最终在用户计算机上执行,绕过用户本地的安全机制来盗取用户信息,甚至在用户机器上进行挂马攻击而远程获得用户机器的控制权等。攻击者通常会用十六进制或其他编码方式将链接编码,以免用户怀疑。
8、它的合法性。XSS在目前互联网站点上普遍存在,给直接用户带来极大的威胁。近年来,XSS一举超过缓冲区溢出而成为最流行的安全漏洞之一。大约至少有68的网站存在XSS漏洞。0003检测XSS从检测的途径来看可分为远程主动检测和本地被动检测两种方式。本地被动检测技术主要应用在浏览器里,目前IE8,FIREFOX的NOSCRIPT插件都支持XSS检测。远程主动检测则主要应用在远程漏洞扫描器类的检测类工具里。本发明主要是针对远程检测技术进行改进。0004随着网站程序员对安全的认识也有所增强,会对用户输入的参数进行一些特别处理,这部分特别处理给远程扫描XSS漏洞带来了一定的难度,尤其是更容易给远程扫描带来。
9、误报。0005目前已经提出了几种用于远程扫描网络服务器的XSS漏洞的方法。美国专利US7343626B1公开了一种测试网站是否具有XSS漏洞的自动化方法和系统,其中包括对于网络服务器的网页,找出其所有参数值对;对于每个参数值对,构造特定的跟踪值,并且将构造的参数值对提交到网络服务器以请求网页;如果返回的网页中包含特定的跟踪值,则说明该网页可能具有XSS漏洞;此时基于网页中特定跟踪值出现的位置,构造包括脚本的第二特定跟踪值,并再次提交到网络服务器,并根据返回的网页是否执行该脚本来判断网页是否具有XSS漏洞。然而,美国专利US7343626B1所公开的方法需要两次提交参数值对,因此执行效率不高。此。
10、外该方法还需要基于特定跟踪值出现的位置来构造包括脚本的第二特定跟踪值,由于随着网络技术的发展,XSS漏洞可能以其他位置出现,这也会导致该方法不能完整地检测出XSS漏洞。0006一些开源软件中也公开了其它用于远程检测XSS漏洞的方法,其大致原理如下,对于某个要检测的网页,首先确定该网页接受的参数值对,然后对于每个参数,构造特定的值,并且利用这些特定构造的参数值对向网络服务器请求该网页,最后根据返回信息说明书CN101964025ACN101964026A2/6页4来判断漏洞是否存在。对返回信息的分析方法,这些方法采用的是基于正则表达式的匹配。在这些开源软件的检测方法中,通过基于特征串的正则表达式。
11、匹配来分析返回信息以判断是否具有XSS漏洞,这在某些情况下会产生一些误报或者漏报。此外,在基于DOM的XSS漏洞中,该方法无法判断漏洞能否被触发。例如,返回的网页虽然包含了构造的特定值,但是该特定值不会被执行时,该方法仍然认为网页存在XSS漏洞,但是实际上并非如此。0007可以看出,在本技术领域,还没有一种方法和设备可以完全且高效地检测XSS漏洞,本发明力图通过对开源软件中所提出的方法进行改进来提供一种完全自动化的、可以全面且高效地检测XSS漏洞的方案。发明内容0008本发明的申请人发现,XSS漏洞的最终结果是要在被攻击者的机器上执行非预期的脚本代码,因此,如果利用JAVASCRIPT解析引擎。
12、来确定非预期的脚步代码是否在被攻击者的机器上执行,则可以非常全面地检测XSS漏洞。本发明基于此做出。0009根据本发明的一个方面,提供了一种检测网页中的XSS漏洞的XSS漏洞检测方法,包括步骤确定网页可接收的参数值对集合;以及为所述参数值对集合中的每个参数值对构造在值中插入了特定脚本的参数值对;基于该插入了特定脚本的参数值对来组装对应于所述网页的URL;获取对应于所组装的URL的动态网页内容;以及模拟执行所获取的动态网页内容,如果执行了所述特定脚本,则认为所述网页中对该参数的处理存在XSS漏洞。0010根据本发明的一个实施例,在所述模拟执行所获取的动态网页内容的步骤中,使用脚本解析引擎来模拟执。
13、行所述网页内容中,该脚本解析引擎被构造为基于特定脚本是否被触发来确定是否存在XSS漏洞。0011根据本发明的另一方面,提供了一种检测网页中的XSS漏洞的XSS漏洞检测设备,包括网页参数值对集合确定装置,用于确定所述网页可以接收的参数值对集合;测试URL组装装置,为所述参数值对集合中的每个参数值对组装测试用的URL,其中在组织所述测试用的URL时,在所述值中插入特定的脚本;请求和接收装置,用于将所述测试用的URL发送到网络服务器,并接收从所述网络服务器返回的网页内容;以及模拟执行装置,用于模拟执行所述网页内容,并且在所述特定脚本被执行时,确定相应参数存在XSS漏洞。0012根据本发明的一个实施例。
14、,该XSS漏洞检测设备还包括脚本解析引擎,所述模拟执行装置在模拟执行所述网页内容时使用所述脚本解析引擎来执行脚本,所述脚本解析引擎根据所述特定脚本是否被触发来确定所述相应参数是否存在XSS漏洞。0013本发明通过组装具有特定脚本的参数值的URL,并检测该URL返回的动态网页内容是否会触发该特定脚本来确定该动态网页是否具有XSS漏洞。和传统上仅仅通过判断相应内容是否会出现在动态网页中的特征匹配相比,其准确度更高而且检测更加全面。附图说明0014通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
15、。而且在整个附图中,用相同的参考符号表示相同的部件。其中在附图中,参考数字说明书CN101964025ACN101964026A3/6页5之后的字母标记指示多个相同的部件,当泛指这些部件时,将省略其最后的字母标记。在附图中0015图1示出了根据本发明实施例的、用于检测网页的XSS漏洞的方法的流程图;0016图2示出了根据本发明实施例的、用于确定网络服务器对某个参数的处理是否存在XSS漏洞的方法的流程图;以及0017图3示出了根据本发明实施例的、用于检测网页的XSS漏洞的设备的示意图。具体实施例0018下面结合附图和具体的实施方式对本发明作进一步的描述。0019图1示出了根据本发明实施例的、用于。
16、检测网页XSS漏洞的方法的流程图。0020在步骤S110中,获取要进行XSS漏洞检测的网页的URL,然后在步骤S120中,确定该网页能够接收的参数值对集合。根据XSS的原理,具有XSS漏洞的网页为网络服务器动态生成的网页,因此其通常可以根据HTTP协议接收一些参数和相应的值。例如如果要检测的网页URL为HTTP/WWWTESTCOM/TESTASPID1NAMETEST,则可以确定该网页可以接收的参数包括ID和NAME。可以通过各种方式来确定动态URL可以接收的参数集,如通过监视访问该动态网页的详细URL内容,根据HTTP协议检测传递到网络服务器的FORM表单的内容等。所以这些都在本发明的保护。
17、范围之内。0021在步骤S120获取了该参数值对集合之后,在步骤S130,选取该集合中的第一组参数值对,然后在步骤S140中,对所选择的参数值对中的值进行修改,以组装测试用的URL。具体而言,根据本发明的实施例,在该值中嵌入特定的JAVASCRIPT脚本,如果该动态网页存在XSS漏洞,则该嵌入的JAVASCRIPT脚本将未被网络服务器所处理,并存在于返回的动态网页内容中。本发明通过监控该JAVASCRIPT脚本是否会存在于动态网页中并被执行来确定该网页是否存在XSS漏洞。为了防止所嵌入的JAVASCRIPT脚本和本来动态网页中就有的JAVASCRIPT脚本相冲突,因此所嵌入的JAVASCRIP。
18、T脚本应当是唯一的,例如其中包含了唯一的脚本参数内容。另外,由于JAVASCRIPT脚本中的ALERT函数的作用是弹出消息框而不会对文档内容产生其它影响,因此,在本发明的进一步实施例中,将ALERT函数嵌入到所选择的参数值对中。0022例如,在上面给出的URL0023HTTP/WWWTESTCOM/TESTASPID1NAMETEST中,0024在对参数ID进行修改时,可以在其对应的值中嵌入函数ALERT0。因此,所构造得到的URL变为0025HTTP/WWWTESTCOM/TESTASPID1ALERT0NAMETEST。0026可选的是,根据HTTP协议,提交给网络服务器的参数并没有先后次。
19、序,因此,可以修改参数的前后次序以把嵌入值放到最后,即0027HTTP/WWWTESTCOM/TESTASPNAMETESTID1ALERT0。0028另外,在修改参数值时,除了添加JAVASCRIPT脚本之外,还可以添加一些特殊字符,如“”、“ALERT0或者0030HTTP/WWWTESTCOM/TESTASPNAMETESTID120ALERT0等。0031此外,在修改参数值时,为了确保对该参数的处理存在XSS漏洞时,所插入的脚本能被JAVASCRIPT解析引擎所执行,还需考虑HTML语法的恢复问题,例如,如果动态网页生成的HTML代码为0032你输入的名字是TEST0033其中TEST。
20、是由动态网页根据参数ID的值而产生的。在这种情况下,如果仅仅在参数ID的值中添加JAVASCRIPT脚本,即IDALERT0,则此时由动态网页生成的JAVASCRIPT脚本包含在的HTML标记符中,并不能由JAVASCRIPT解析引擎来执行,为此,我们需要将参数ID值中插入的脚本修改为IDALERT0,这样动态网页生成的HTML代码变为0034你输入的名字是ALERT00035从而确保插入的脚本如ALERT函数能被解析引擎执行。0036上面的标签只是一个例子,还存在其他可能会导致插入的脚本的情况,因此,在参数值中插入JAVASCRIPT脚本时,还必须考虑HTML语法的恢复问题,以确保在对参数的。
21、处理存在XSS漏洞时,所插入的JAVASCRIPT脚本会被执行。因此,需要在插入JAVASCRIPT脚本时进行多种方式的插入,从而更精确地确定XSS漏洞。0037在步骤S140组装了测试用的URL之后,在步骤S150将组装好的URL发送到网络服务器以请求动态网页内容,并且在步骤S160获取作为响应的动态网页内容。随后,在步骤S170中,利用根据本发明的JAVASCRIPT解析引擎来模拟执行动态网页内容,并根据在步骤S140中插入的特定脚本是否有JAVASCRIPT解析引擎执行来确定该参数是否具有XSS漏洞。下面将参考图2详细描述步骤S170中的处理,这里不再进行赘述。0038在步骤S170对该。
22、参数是否存在XSS漏洞进行了判断之后,在步骤S180确定参数集中是否还有需要进行判断的参数,如果有,则在步骤S190获取参数集中下一个要处理的参数值对,并且返回到步骤S140来处理该参数值对。如果在步骤S180中判断没有要处理的参数,则在步骤S210输出对参数集中的所有参数的处理结果,并结束对该网页的XSS检测。0039应当注意的是,在上述步骤S140中,已经说明了针对一个参数可以组装出多个特定URL。根据本发明的另一个实施例,可以重复执行步骤S140S170来将每个特别组装的URL发送到网络服务器以确定网页是否存在XSS漏洞。这可以更全面地对网页进行测试。0040图2示出了在步骤S170中执。
23、行的、用于确定网络服务器对某个参数的处理是否存在XSS漏洞的方法1700的流程图。0041在步骤S1710中,将所获取的网页内容转换为DOM模型。为了在用户端呈现网页内容,将网页内容转换为DOM模型是常用的技术手段之一,本发明需要模拟执行所获取的网页内容,因此首先将网页内容转换为DOM模型。随后在步骤S1720中,利用根据本发明的JAVASCRIPT解析引擎来执行DOM模型中的JAVASCRIPT脚本。如上所述,在针对某个参数组装特定URL时,已经把特定的JAVASCRIPT脚本插入到参数值中了。因此,根据在步骤S1730说明书CN101964025ACN101964026A5/6页7中,根据。
24、JAVASCRIPT解析引擎是否执行了该特定的脚本来判断网络服务器针对该参数的处理是否存在XSS漏洞。如果该特定脚本被触发执行了,则说明存在XSS漏洞S1740,否则则说明不存在XSS漏洞S1750。此后,在步骤S1760中记录对该参数的处理是否存在XSS漏洞的判断,并且结束该方法。0042应当注意的是,图2所示方法的主要目的是利用根据本发明的JAVASCRIPT解析引擎来模拟执行返回的网页内容,因此所有可以对网页内容进行模拟执行的方式都在本发明的保护范围之内。0043另外,如上所述,在JAVASCRIPT脚本中,ALERT函数的功能为弹出一个提示窗口,其不会对网页内容产生影响,因此,优选地,。
25、插入到参数值中的脚本为ALERT函数,而根据本发明的JAVASCRIPT解析引擎也对ALERT函数的处理进行修改,以便根据ALERT函数是否被触发来确定对该参数的处理是否存在XSS漏洞。0044图3示出了根据本发明实施例的、用于检测网页的XSS漏洞的XSS漏洞检测设备的示意图。0045如图3所示,XSS漏洞检测设备300包括网页参数值对集合确定装置310、测试URL组装装置320、请求发送装置330、网页内容获取装置340、模拟执行装置350、JAVASCRIPT解析引擎360和记录装置370。0046网页参数值对集合确定装置310确定某个动态网页可以接收的参数值对集合,如上面参考步骤S110。
26、所述的那样,可以通过各种方式来确定动态网页可以接收的参数值对集合。随后网页参数值对集合确定装置310将所确定的参数值对集合发送到测试URL组装装置320。0047测试URL组装装置320为所接收到的参数值对集合中的每个参数值对构造测试用的URL。在为某个参数值对构造测试URL时,测试URL组装装置320参考本发明定制的JAVASCRIPT引擎360在值中插入相应的JAVASCRIPT脚本,诸如上面所述的ALERT0等,以便如果该参数存在XSS漏洞,则该相应的JAVASCRIPT脚本就会在JAVASCRIPT引擎360中触发。因此,本发明的JAVASCRIPT解析引擎360中提供了要插入到值中的。
27、JAVASCRIPT脚本。0048如上所述,测试URL组装装置320可以为一个参数值对构造出多个包含特定JAVASCRIPT脚本和不同特殊字符的URL,并且可以分别对这些组装的URL进行测试。0049请求发送装置330接收由测试URL组装装置320组装的URL,并且将该URL发送到网络服务器400以请求动态网页,作为响应,网络服务器400将所生成的动态网页发送到网页内容获取装置340。网页内容获取装置获取该动态网页,并且将动态网页内容发送给模拟执行装置250以检测该动态网页是否具有XSS漏洞。0050在实践中,可以将请求发送装置330和网页内容获取装置340的功能并入到同一个请求和接收装置中,。
28、以统一执行网络相关功能。这些都在本发明的保护范围之内。0051模拟执行装置250以各种方式模拟执行所获取的网页内容,例如,可以诸如IE、FIREFOX或者CHROME之类浏览器内核的方式来处理网页内容,并且将网页内容转换为DOM模型,然后利用JAVASCRIPT解析引擎360来执行网页中的JAVASCRIPT脚本。0052JAVASCRIPT解析引擎360在执行JAVASCRIPT脚本时,判断所提供的、要插入到值中的JAVASCRIPT脚本是否被触发了,如果被触发了,则认为网络服务器对该动态网页中的说明书CN101964025ACN101964026A6/6页8参数的处理存在XSS漏洞,如果未。
29、被触发,则认为对该参数的处理不存在XSS漏洞。随后,JAVASCRIPT解析引擎360将该确定结果发送到记录装置370进行记录。0053在上述XSS漏洞检测设备中,公开了为一个动态网页进行XSS漏洞检测的方式。这个XSS漏洞检测设备可以并入到网站安全扫描系统或者网络扫描系统中,以便为网站安全扫描系统或者网络扫描系统所扫描的每个动态网页进行XSS漏洞检测,从而为某个或者多个网站进行XSS漏洞扫描。0054由于本发明中的JAVASCRIPT解析引擎360的主要目的就是为了判断特定的JAVASCRIPT函数是否在返回的动态网页中被触发了,因此,为了提高JAVASCRIPT解析引擎360的执行效率,可。
30、以对其它JAVASCRIPT函数的执行进行简化处理,例如仅仅实现其接口而不执行任何实质性的操作,从而加快模拟执行动态网页内容的速度。0055根据本发明的XSS漏洞检测方法和设备通过组装具有特定脚本的参数值的URL,并检测该URL返回的动态网页内容是否会触发该特定脚本来确定该动态网页是否具有XSS漏洞。和传统上仅仅通过判断相应内容是否会出现在动态网页中的特征匹配相比,其准确度更高。另外,随着AJAX技术等的发展,客户端网页内容呈现和处理方式变得日益复杂,传统的特征匹配方式不能准确判断XSS漏洞。由于XSS漏洞最终会通过执行脚本来进行,因此本发明可以很好地应用于富客户端的网页内容中。0056应该注。
31、意的是,上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。说明书CN101964025ACN101964026A1/3页9图1说明书附图CN101964025ACN101964026A2/3页10图2说明书附图CN101964025ACN101964026A3/3页11图3说明书附图CN101964025A。