首页> 中国专利> XSS漏洞检测方法、系统和Web服务器

XSS漏洞检测方法、系统和Web服务器

摘要

本发明公开了一种XSS漏洞检测方法、系统和Web服务器,其中XSS漏洞检测方法包括随机生成第一特征字符串,并请求网页;在获得的第一网页正文中检测到第一特征字符串时,生成第二特征字符串,并再次请求所述网页;获取各个网页正文的DOM树;筛选并触发各个具有数据交互的DOM对象的脚本事件;记录出现所述第一特征字符串数据位置以及被滤除的特殊符号;将所述第二特征字符串、数据位置和被滤除的特殊符号组合为测试数据;将所述测试数据通过XSS漏洞检测方式进行XSS漏洞检测。本发明还提供一种使用所述方法的XSS漏洞检测系统和Web服务器。本发明的XSS漏洞检测方法和系统提高了XSS漏洞检测效率和准确性。

著录项

  • 公开/公告号CN104836779A

    专利类型发明专利

  • 公开/公告日2015-08-12

    原文格式PDF

  • 申请/专利权人 携程计算机技术(上海)有限公司;

    申请/专利号CN201410049088.6

  • 发明设计人 王笑天;罗启武;董晓琼;

    申请日2014-02-12

  • 分类号H04L29/06(20060101);H04L12/26(20060101);H04L29/08(20060101);G06F21/56(20130101);

  • 代理机构31283 上海弼兴律师事务所;

  • 代理人薛琦;王聪

  • 地址 200335 上海市长宁区福泉路99号携程网络技术大楼

  • 入库时间 2023-12-18 10:16:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-26

    授权

    授权

  • 2017-02-22

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20140212

    实质审查的生效

  • 2016-02-24

    专利申请权的转移 IPC(主分类):H04L29/06 登记生效日:20160201 变更前: 变更后: 申请日:20140212

    专利申请权、专利权的转移

  • 2015-08-12

    公开

    公开

说明书

技术领域

本发明涉及一种Web(网络、互联网)应用测试工具,特别是涉及一种Web应用中的XSS(又叫CSS(Cross Site Script),跨站脚本攻击)漏洞检测方法和系统。

背景技术

目前Web应用中的现有的XSS漏洞检测工具仅通过固定地、简单的XSS测试用例进行循环提交测试,判断返回网页正文中是否包含对应的字符串,进而判断是否存在XSS漏洞。这种简单的测试方式仅仅只能够工作在一些逻辑简单的网页中,并获得可以接受的测试效果。

但是随着Web应用技术愈加复杂,现阶段大部分网站的网页正文的形式日趋复杂,而且越来越多的网页中内嵌有脚本,例如JS脚本,所以这种XSS漏洞检测方式已较难应对现阶段的大多数网站,而且这种XSS漏洞检测方式不能对网页中JS脚本进行解析,因此对于通过JS渲染触发的XSS漏洞的检测能力几乎为零。

发明内容

本发明要解决的技术问题是为了克服现有技术的XSS漏洞检测方式不适用于复杂网页正文的形式以及网页内嵌脚本的缺陷,采用一种XSS漏洞检测方法和系统,通过特定字符对网页中XSS漏洞位置和特征进行动态判断,并通过逻辑触发脚本事件来匹配出适用于复杂网页的XSS漏洞的测试用例,从而提高XSS漏洞检测效率和准确性。

本发明是通过下述技术方案来解决上述技术问题的:

本发明提供了一种XSS漏洞检测方法,其特点是,所述XSS漏洞检测方法包括以下步骤:

随机生成一第一特征字符串,将所述第一特征字符串填充至一GET参数(网页正文请求参数)中,并请求网页;

获得的网页正文作为第一网页正文后,在检测到所述第一网页正文中包含所述第一特征字符串时,生成包含一组特殊符号的一第二特征字符串,并将所述第二特征字符串填充至所述GET参数中,并再次请求网页;

将再次获得的网页正文作为第二网页正文后,通过QTwebkit(基于开源的WebKit engine的QT(跨平台C++图形用户界面应用程序开发框架)模块)的API接口(应用程序编程接口)获取第一网页正文和第二网页正文的DOM树;

分别遍历第一网页正文和第二网页正文的DOM(Document ObjectModel,文件对象模型)树的各个DOM对象节点,筛选出具有数据交互的DOM对象,并通过QTwebkit的API接口触发各个具有数据交互的DOM对象的脚本事件;

遍历第一网页正文和第二网页正文中DOM树的各个DOM对象节点,并记录第一网页正文中所有出现所述第一特征字符串的DOM对象节点的数据位置以及记录第二网页正文中对应于第一网页正文中出现所述第一特征字符串的各个DOM对象节点中被滤除的特殊符号;

将所述第二特征字符串、数据位置和被滤除的特殊符号组合为多组包括所述第二特征字符串以及至少一个数据位置和一个被滤除的特殊符号的测试数据;

将各组测试数据加入XSS漏洞检测的测试用例,并通过XSS漏洞检测方式对根据网页请求获得的网页正文进行XSS漏洞检测。

本发明不但通过特定字符对网页中XSS漏洞位置和特征进行动态判断,而且还对网页正文中脚本事件进行逻辑触发,从而得到逻辑触发部分的XSS漏洞,进而匹配出适用于检测脚本事件的XSS漏洞的测试用例。

其中所述GET参数是XSS漏洞检测中常用的网页正文请求参数,QTwebkit是现有的一种有奇趣开发的QT平台中基于WebKit engine的QT模块,所以此处不再赘述。

而且所述DOM对象节点是现有技术的网页正文中能够与脚本事件关联的对象,本发明正是通过对所有DOM对象节点中脚本事件的遍历和触发来获得能够表征DOM对象中脚本导致的XSS漏洞的测试用例。

并且,本发明在获得所述第二特征字符串、数据位置和被滤除的特殊符号后,通过任意的排列组合方式获得包括第二特征字符串和至少一组由数据位置和被滤除的特殊符号组成的数据的测试数据,其中用户可以根据实际应用场合和环境等来设定所采用的排列组合所述第二特征字符串、数据位置和被滤除的特殊符号的方式,本发明中只要能够获得包括第二特征字符串和至少一组由数据位置和被滤除的特殊符号组成的数据,这种形式的测试数据就可以实现生成动态地并且适用于检测脚本事件的XSS漏洞的测试用例。

此外,本发明中在获得各组测试用例后,通过套用传统的XSS漏洞检测方式实现对网页的XSS漏洞检测。所以本发明中XSS漏洞检测方式可以采用现有的任意的XSS漏洞检测方式套用本发明生成的各组测试用例。

较佳地,所述脚本事件为JavaScript(一种脚本程序)事件。

较佳地,所述XSS漏洞检测方法还包括:

在遍历第一网页正文和第二网页正文的DOM树的各个DOM对象节点,筛选出具有数据交互的DOM对象时,所述QTwebkit的QT引擎将各个具有数据交互的DOM对象的脚本中的Eval函数上加载一Hook函数;

并在通过QTwebkit的API接口触发各个具有数据交互的DOM对象的脚本事件时,Hook函数输出Eval函数执行信息。

其中本发明中所述Eval函数和Hook函数均是现有技术中脚本程序和消息处理机制中常用函数,而且所述钩子函数(Hook函数)实际上是现有的一种处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息。

所以本发明中利用Hook函数来监视记录并输出脚本事件中Eval函数的执行状态信息,从而提高脚本事件中Eval执行漏洞检测的准确性。

本发明还提供了一种Web服务器,其特点是,所述Web使用如上所述的XSS漏洞检测方法。

本发明又提供了一种XSS漏洞检测系统,其特点是,所述XSS漏洞检测系统包括:

一网页请求模块,用于随机生成一第一特征字符串,将所述第一特征字符串填充至一GET参数中,并请求网页;

一特征字符检测模块,用于获得所述网页正文作为第一网页正文后,在检测到所述第一网页正文中包含所述第一特征字符串时,生成包含一组特殊符号的一第二特征字符串,并通过所述网页请求模块将所述第二特征字符串填充至所述GET参数中,并再次请求所述网页;

一DOM树获取模块,用于将获得所述网页正文作为第二网页正文后,通过QTwebkit的API接口获取第一网页正文和第二网页正文的DOM树;

一DOM筛选模块,用于分别遍历第一网页正文和第二网页正文的DOM树的各个DOM对象节点,筛选出具有数据交互的DOM对象,并通过QTwebkit的API接口触发各个具有数据交互的DOM对象的脚本事件;

一位置和滤除字符检测模块,用于遍历第一网页正文和第二网页正文中DOM树的各个DOM对象节点,并记录第一网页正文中所有出现所述第一特征字符串的DOM对象节点的数据位置以及记录第二网页正文中对应于第一网页正文中出现所述第一特征字符串的各个DOM对象节点中被滤除的特殊符号;

一测试数据生成模块,用于将所述第二特征字符串、数据位置和被滤除的特殊符号组合为多组包括所述第二特征字符串以及至少一个数据位置和一个被滤除的特殊符号的测试数据;

一XSS漏洞检测模块,用于将各组测试数据加入XSS漏洞检测的测试用例,并通过XSS漏洞检测方式对根据网页请求获得的网页正文进行XSS漏洞检测。

优选地,所述脚本事件为JavaScript脚本事件。

较佳地,所述XSS漏洞检测系统还包括:

一Hook加载模块,用于在遍历第一网页正文和第二网页正文的DOM树的各个DOM对象节点,筛选出具有数据交互的DOM对象时,通过所述QTwebkit的QT引擎将各个具有数据交互的DOM对象的脚本中的Eval函数上加载一Hook函数;

一Hook检测模块,用于在通过QTwebkit的API接口触发各个具有数据交互的DOM对象的脚本事件时,Hook函数输出Eval函数执行信息。

本发明中各个模块的功能在同一个或多个软件和/或硬件中实现。

在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。

本发明的积极进步效果在于:

本发明是在现有的XSS检测方式的基础上通过特定字符对XSS漏洞位置和特征进行动态判断,并匹配适用的检测用例,以达到精准和高效;并逻辑触发网页中脚本事件,从而判断逻辑触发部分的DOM XSS漏洞,解决了DOM XSS难以准确测试的问题。

另外还针对脚本中的Eval函数可执行输入字符串的危险性漏洞,通过逻辑触发脚本事件的行为,触发Eval函数来准确检测出是否存在这类危险性行为和漏洞。

所以本发明根据漏洞特征动态生成测试用例,增加了脚本事件触发及Eval函数的Hook机制,能够大幅度提高XSS漏洞的检测效率和准确性,实现了对DOM XSS的精确检测和识别。

附图说明

图1为本发明的实施例1的XSS漏洞检测的流程图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

本发明是对现有的XSS漏洞检测方法进行提升和改造,其主要包括以下两个方面:

1、本发明的使检测用例不再固定化,通过特定字符对XSS漏洞位置和特征进行动态判断,并匹配适用的检测用例,以达到精准和高效;并利用模拟点击行为,随机获取网页对象,逻辑触发部分DOM XSS漏洞,解决了DOM XSS难以准确测试的问题。

2、针对Javascript语言中的Eval函数可执行输入字符串的危险性漏洞,通过模拟行为,在浏览器请求页面后加载自定义函数,触发Eval函数的方法,来准确检测出是否存在这类危险性行为和漏洞。

下面通过下述实施例来对本发明进行进一步地详细地说明。

实施例1

本实施例的Web服务器针对具有JavaScript脚本事件的网页的进行XSS漏洞检测,其中的XSS漏洞检测包括以下步骤:

S1、随机生成特征字符串A,将所述特征字符串A填充至GET参数中,然后按照所述GET参数请求网页。

S2、所述Web服务器获得网站按照所述GET参数返回的网页正文,并将其作为网页正文P1后,在检测到所述网页正文P1中包含所述特征字符串A时,生成包含一组特殊符号S的特征字符串B,并将所述特征字符串B填充至所述GET参数中,并再次向网站请求网页。

也就是说,步骤S1和S2中先随机生成特征字符串自动填充到指定的GET参数中,然后请求这个网页,获得网页正文后。判断所述特征字符串是否存在与网页正文中,如果存在会通过QTwebkit模块通过包含特殊符号S的特征字符串B再次请求网页。

在另一实施例中所述特征字符串B可以是类似xxx:<\"ac;/>xxx结构,其中xxx代表的特征代码,可以用来定位中间特殊符号:<\"ac;/>的位置。通过将此特征字符串B再次填充到同样的GET参数,再次请求获得网页正文。

S3、将再次获得的网站返回的网页正文作为网页正文P2后,通过QTwebkit的API接口获取网页正文P1和网页正文P2的DOM树。

S4、分别遍历网页正文P1和网页正文P2的DOM树的各个DOM对象节点,筛选出具有数据交互的DOM对象,所述QTwebkit的QT引擎将各个具有数据交互的DOM对象的脚本中的Eval函数上加载Hook函数。

S5、通过QTwebkit的API接口触发各个具有数据交互的DOM对象的脚本事件,Hook函数输出Eval函数执行信息。

在另一个实施例中,所述步骤S3-S5可以通过下述软件形式实现:

在QT的模块类中封装了一个自定义的方法Custom_wk_click_looponce,所述方法通过调用QTwebkit的API获取网页正文的DOM树,遍历DOM树,自动筛选出可能有交互的DOM对象,比如A链接、Button链接、带有Onclick onmouseup等属性的链接,再通过调用QTwebkit的API执行模拟浏览器操作的JavaScript,从而触发DOM对象的JavaScript脚本事件,以达到模拟用户交互的目的。进而实现DOM XSS的准确测试。

同时还通过QT引擎将网页的JavaScript脚本的Eval函数载入Hook函数,其作用是当JavaScript调用到Eval函数时,向控制台输出Eval执行的信息,并反馈给其后的检测流程,此后检测流程可以记录Eval执行信息等,从而通过所述Eval执行的信息提高JavaScript的Eval函数执行漏洞检测的准确性。

S6、遍历网页正文P1和网页正文P2中DOM树的各个DOM对象节点,并记录网页正文P1中所有出现所述特征字符串A的DOM对象节点的数据位置以及记录网页正文P2中对应于网页正文P1中出现所述特征字符串A的各个DOM对象节点中被滤除的特殊符号。

在另一个实施例中将以上两个请求所获得网页正文P1和网页正文P2套入到While循环中,每一次循环都调用如上所述的Custom_wk_click_looponce方法进行模拟交互,然后建立DOM树,分析DOM树中哪些地方出现了特征字符串,遍历所有包含特征字符串的DOM对象,分析特征字符串出现在DOM对象中的位置,比如<a(4)href=”/”class=”blog”onclick=”3”2=”top”>1</a>,染过判断特征字符串出现在上面数字1、2、3、4的哪个位置,然后根据返回的结果判断到底是哪些特殊符号被过滤掉。

此后就可以针对出现位置和特殊符号的过滤情况进行不同测试用例的排列组合的实现。

S7、将所述特征字符串B、数据位置和被滤除的特殊符号组合为多组包括所述特征字符串B以及由至少一个数据位置和一个被滤除的特殊符号组成的数据的测试数据。

S8、将各组测试数据加入XSS漏洞检测的测试用例,并通过XSS漏洞检测方式对根据网页请求获得的网页正文进行XSS漏洞检测。

在另一个更具体地实施例中,步骤S8可以将步骤S1-S7中生成的测试用例进行循环请求和检测,通过测试字符串和正则表达式的组合,即测试字符串用来填充请求参数的字符串,当填充好的网页请求到网站并返回网页正文后,就通过与所述测试字符串对应的正则表达式对正文内容进行匹配,一旦发现所述测试字符串,就可以认定此网页中这个参数有XSS漏洞。

通过以上的XSS漏洞检测方法的具体实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM(只读存储器/随机存取存储器)、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC(个人电脑)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号