一种交互XSS漏洞的检测方法及其系统与流程

文档序号:11476028阅读:230来源:国知局
一种交互XSS漏洞的检测方法及其系统与流程

本发明实施例属于web程序应用领域,尤其涉及一种交互xss漏洞的检测方法及其系统。



背景技术:

随着web应用的广泛使用,web安全问题也日益突出,跨站脚本攻击(cross-sitescripting,xss)是攻击者通过向web应用的页面中注入特定的脚本,当用户浏览该页面时,攻击者注入的脚本就会被执行,从而达到攻击的目的。xss已经成为web应用程序中最常见的漏洞之一,对xss漏洞的自动化检测也成为一项重要的技术。web2.0技术的发展,使web应用的页面不仅仅能展示静态内容,还有越来越多的与用户交互的功能,这部分交互功能往往通过在web页面嵌入javascript和css脚本来实现。通过ajax技术,甚至可以实现在页面不刷新和不提交的情况下,与服务端进行交互。这些动态交互可以动态修改或者生成一些页面的元素,在这一过程中,也会有xss漏洞产生。

传统的xss检测方法大多是是靠检测响应中的特征值来发现xss漏洞的,具体地,首先捕获web应用的http请求,然后构造并向web服务器发送带有检测特征值的请求,再在这些请求响应的页面源代码中检测特征值。如果在某处检测到特征值,则认为此处即为一个xss漏洞。但由于现有的部分交互功能,通过ajax技术甚至可以实现在页面不刷新和不提交的情况下,与web服务器进行交互,即不用发送http请求也能与web服务器交互,而这些动态交互可以动态修改或者生成一些页面的元素,在这一过程中,也会有xss漏洞产生,因此,现有方法不能发现由脚本动态执行产生的xss漏洞。故需要提出一种针对用户交互过程中产生的xss漏洞的检测方法。



技术实现要素:

本发明实施例提供了一种交互xss漏洞的检测方法,旨在解决现有的方法中,无法检测出由于脚本动态执行产生的xss漏洞的问题。

本发明实施例第一方面,提供了一种交互xss漏洞的检测方法,所述交互xss漏洞的检测方法包括:

发送构造的带有特征值的检测请求至web服务器,并接收所述web服务器返回的响应页面;

解析预先在所述响应页面注入的dom监听器,以随时监听所述响应页面的dom结构的变化情况;

解析预先在所述响应页面注入的智能事件模拟器,以通过所述智能事件模拟器发现并自动触发所述响应页面的dom结构上的事件;

根据所述响应页面的dom结构上的事件的被触发情况及所述dom监听器的监听结果判断是否存在xss漏洞。

本发明实施例的第二方面,提供一种交互xss漏洞的检测系统,所述交互xss漏洞的检测系统包括:

检测请求发送单元,用于发送构造的带有特征值的检测请求至web服务器,并接收所述web服务器返回的响应页面;

dom监听器解析单元,用于解析预先在所述响应页面注入的dom监听器,以随时监听所述响应页面的dom结构的变化情况;

智能事件模拟器解析单元,用于解析预先在所述响应页面注入的智能事件模拟器,以通过所述智能事件模拟器发现并自动触发所述响应页面的dom结构上的事件;

判断单元,用于根据所述响应页面的dom结构上的事件的被触发情况及所述dom监听器的监听结果判断是否存在xss漏洞。

在本发明实施例中,首先发送构造的带有特征值的检测请求到web服务器,并接收web服务器反馈的响应页面,解析预先在响应页面注入的dom监听器,以随时监听响应页面的dom结构;解析并执行预先在响应页面注入的智能事件模拟器,以触发响应页面的dom结构上的各种事件;智能事件模拟器可以达到识别并模拟用户交互的效果,从而使xss检测工具将得到完整的dom结构。然后再通过已经解析的dom监听器,监听响应页面的dom结构是否有变化,根据监听结果判断是否检测到xss漏洞。dom监听器实现了对响应页面的dom结构的实时监听,从而实现对响应页面交互型xss漏洞的成功检测。

附图说明

图1是本发明第一实施例提供的一种交互xss的检测方法的流程图;

图2是本发明另一实施例提供的一种交互xss的检测方法的流程图;

图3是本发明第二实施例提供的一种交互xss的检测系统的结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例中,首先发送构造的带有特征值的检测请求到web服务器,并接收web服务器反馈的响应页面,解析预先在响应页面注入的dom监听器,以实现对响应页面的dom结构的监听;解析并执行预先在响应页面注入的智能事件模拟器,以触发响应页面的dom结构上的各种事件;通过已经解析dom监听器,监听响应页面的dom结构是否有变化,根据监听结果判断是否检测到xss漏洞。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一:

图1示出了本发明第一实施例提供的一种交互xss漏洞的检测方法的流程图,详述如下:

步骤s11,发送构造的带有特征值的检测请求至web服务器,并接收所述web服务器返回的响应页面;

该步骤中,xss检测工具接收并保存客户端向web服务器发送的http请求,根据所述http请求构造出特征值;具体地,以接收并保存的用户http请求为基础,逐个修改每一个http请求的参数值,将所述参数值修改成特征值。所述特征值为一个字符串,其目的是尝试进行xss的注入攻击。比如一个特征值可以是:<divid=”xss123”></div>,如果页面上没做xss编码保护,则这个div将会作为一个dom节点插入到dom结构里。另外,针对不同的页面输出点,所构造的特征值也可能会不同;比如上面描述的特征值可以应用在输出点为html的场景,如果输出点在javascript代码中,则构造的特征值就需要是符合javascript语法的可以破坏输出点上下文结构的字符串。

根据xss检测工具接收并存储的http请求构造出特征值后,发送带有所述特征值的检测请求到web服务器,web服务器在接收到所述检测请求后,对检测请求作出响应,并反馈响应页面到xss检测工具。

步骤s12,解析预先在所述响应页面注入的dom监听器,以随时监听所述响应页面的dom结构的变化情况;

所述dom监听器也是一段javascript代码,实现了对响应页面的dom结构的实时监听,当响应页面的dom结构由于事件被触发等情况的发生而发生改变时,可通过dom监听器很好的监听到这一变化。

步骤s13,解析预先在所述响应页面注入的智能事件模拟器,以通过所述智能事件模拟器发现并自动触发所述响应页面的dom结构上的事件;

该步骤中,xss检测工具在接收到web服务器反馈的响应页面后,向所述响应页面注入智能事件模拟器,所述智能事件模拟器是一段javascript代码,用于发现并自动触发响应页面的dom结构上的各种事件。xss检测工具解析并执行智能事件模拟器,以通过智能事件模拟器发现并自动触发所接收的响应页面的dom结构上的各种事件。

优选地,所述通过所述智能事件模拟器发现并自动触发所述响应页面的dom结构上的事件,具体包括:

遍历经解析后的所述响应页面的dom结构中所有控件;

模拟触发所述控件包含的各种事件。

具体地,智能事件模拟器被解析并执行时,首先遍历响应页面的dom结构中包含的所有控件,根据所述控件中包含的事件,模拟触发控件中包含的各种事件;例如,可以模拟触发click事件、focus事件、mouseover事件等等。智能事件模拟器的执行可以达到识别并模拟用户的效果,在智能事件模拟器执行后xss检测工具得到响应页面完整的dom结构。

以下代码为javascript示例代码模拟的触发一个按钮的点击事件:

varbuttonelement=document.getelementbyid("mockclickbtn");

buttonelement.click();

步骤s14,根据所述响应页面的dom结构上的事件的被触发情况及所述dom监听器的监听结果判断是否存在xss漏洞。

该步骤中,在智能事件模拟器执行过程中,识别并模拟与用户的交互过程,使响应页面展现出完整的dom结构,此过程中需要实时监控响应页面的dom结构是否出现了变化,因为检测请求的参数中含有可能修改响应页面当前dom结构的特征值,在智能事件模拟器触发之后,就可能改变响应页面的dom结构;如假设注入的特征值为“<divname='xss10001001'id="104879601">xsstest</div>”,一旦经模拟事件触发并成功注入,页面的dom中将会新插入一个name为‘xss10001001’的div。即响应页面的dom结构已发生了变化,此时就需要解析预先在响应页面注入的dom监听器,由dom监听器实时监听响应页面的dom结构的变化情况。

优选地,所述根据所述响应页面的dom结构上的事件的被触发情况及所述dom监听器的监听结果,判断是否存在xss漏洞,具体包括:

解析智能事件模拟器,以使所述dom监听器随时监听所述响应页面的dom结构上的事件被触发后,所述响应页面的dom结构的变化情况;

根据监听到的响应页面的dom结构中是否存在新增加的所述特征值,判断是否发现xss漏洞。

具体地,在执行智能事件模拟器后,响应页面的dom结构中所包含的各种事件会被触发,从而改变响应页面的dom结构,这时采用已经解析的dom监听器监听此变化;在dom监听器被解析后,使用mutationobserver监听页面dom结构的变化,mutationobserver是一个能监听dom结构变化的接口;当mutationobserver监听到响应页面dom结构中出现了新增节点,并且此新增节点的注入值为所述特征值,则说明特征值注入成功,即发现了xss漏洞。如上述注入特征值为“<divname='xss10001001'id="104879601">xsstest</div>”的示例中,在经智能事件模拟器模拟事件触发后,响应页面的dom结构中若出现新插入一个name为’xss10001001’的div,则说明特征值注入成功,发现xss漏洞。

优选地,在根据所述响应页面的dom结构上的事件的被触发情况及所述dom监听器的监听结果,判断是否发现xss漏洞之后,还包括:

在确认发现xss漏洞时,上报检测结果,所述检测结果包括:响应页面信息、输出点信息。

若dom监听器监听到特征值注入成功,则确认发现xss漏洞,之后,将确认发现的xss漏洞连同响应页面信息、输出点信息等相关信息通过ajax方式提交给xss检测工具。

优选地,在所述发送构造的带有特征值的检测请求至web服务器之前,还包括:设置xss漏洞检测工具为代理;将xss检测工具设置代理是为了方便xss检测工具收集用户向web浏览器发送的请求信息,从而为后续构造出带有特征值的检测请求奠定基础。

如图2所示,优选地,在所述解析预先在所述响应页面注入的智能事件模拟器之前,包括:

解析所述响应页面,以检测所述响应页面在页面初始化时生成的页面元素的xss漏洞;

具体地,在web服务器对检测请求做出响应页面注入智能事件模拟器后,对所述响应页面作出解析,完成对响应页面初始化时执行的javascript和css生成的页面元素的xss漏洞的检测。先对响应页面进行解析,检测出未与用户交互时,响应页面本身所存在的漏洞,以便后续dom监听器更好的监听由于交互造成的响应页面的dom结构的变化,发现交互xss漏洞的存在,从而使得检测结果更全面。

本发明第一实施例中,首先发送带有特征值的检测请求到web服务器,并接收web服务器对检测请求反馈的响应页面;解析预先注入的dom监听器,实现对响应页面的dom结构的监听;在响应页面注入智能事件模拟器代码,对响应页面解析时执行智能事件模拟器代码,智能事件模拟器的执行将自动识别并触发页面控件的事件,从而执行所有响应页面中需由用户交互才能触发执行的javascript和css脚本。在智能事件模拟器执行的过程中,已经解析的dom监听器,监听由于智能事件模拟器的执行而引起的响应页面的dom结构的变化;一旦发现注入的特征值插入到响应页面的dom结构中造成dom结构变化,则确认发现xss漏洞。另外,本发明实施例中在执行智能事件模拟器前首先对响应页面作出解析,检测出响应页面原有的xss漏洞,再由智能事件模拟器模拟用户的交互过程,引出交互过程中产生的xss漏洞,并由dom监听器发现并上报交互过程产生的xss漏洞,从而能够更全面的检测出响应页面不同类型的xss漏洞,提高了web服务器的安全性能。

应理解,在本发明实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

实施例二:

图3示出了本发明第二实施例提供的一种交互xss漏洞的检测系统的结构图为了便于说明,仅示出了与本发明实施例相关的部分。所述交互xss漏洞的检测系统包括:检测请求发送单元31,dom监听器解析单元32,智能事件模拟器解析单元33,判断单元34,其中:

检测请求发送单元31,用于发送构造的带有特征值的检测请求至web服务器,并接收所述web服务器返回的响应页面;

该步骤中,检测系统中的检测请求发送单元31接收并保存客户端向web服务器发送的http请求,根据所述http请求构造出特征值;具体地,以接收并保存的用户http请求为基础,逐个修改每一个http请求的参数值,将所述参数值修改成特征值。所述特征值为一个字符串,其目的是尝试进行xss的注入攻击。比如一个特征值可以是:<divid=”xss123”></div>,如果页面上没做xss编码保护,则这个div将会作为一个dom节点插入到dom结构里。另外,针对不同的页面输出点,所构造的特征值也可能会不同;比如上面描述的特征值可以应用在输出点为html的场景,如果输出点在javascript代码中,则构造的特征值就需要是符合javascript语法的可以破坏输出点上下文结构的字符串。

根据检测请求发送单元31接收并存储的http请求构造出特征值后,发送带有所述特征值的检测请求到web服务器,web服务器在接收到所述检测请求后,对检测请求作出响应,并反馈响应页面到xss检测工具。

dom监听器解析单元32,用于解析预先在所述响应页面注入的dom监听器,以随时监听所述响应页面的dom结构的变化情况;

所述dom监听器也是一段javascript代码,实现了对响应页面的dom结构的实时监听,当响应页面的dom结构由于事件被触发等情况的发生而发生改变时,可通过dom监听器很好的监听到这一变化。

智能事件模拟器解析单元33,用于解析预先在所述响应页面注入的智能事件模拟器,以通过所述智能事件模拟器发现并自动触发所述响应页面的dom结构上的事件;

检测请求发送单元31在接收到web服务器反馈的响应页面后,由智能事件模拟器解析单元33向所述响应页面注入智能事件模拟器,所述智能事件模拟器是一段javascript代码,用于发现并自动触发响应页面的dom结构上的各种事件。智能事件模拟器解析单元33解析并执行智能事件模拟器,以通过智能事件模拟器发现并自动触发所接收的响应页面的dom结构上的各种事件。

优选地,所述智能事件模拟器解析单元33包括:

遍历模块,用于遍历经解析后的所述响应页面的dom结构中所有控件;

事件触发模块,用于模拟触发所述控件包含的各种事件。

具体地,智能事件模拟器被解析并执行时,首先遍历响应页面的dom结构中包含的所有控件,根据所述控件中包含的事件,模拟触发控件中包含的各种事件;例如,可以模拟触发click事件、focus事件、mouseover事件等等。智能事件模拟器的执行可以达到识别并模拟用户的效果,在智能事件模拟器执行后xss检测工具得到响应页面完整的dom结构。

判断单元34,用于根据所述响应页面的dom结构上的事件的被触发情况及所述dom监听器的监听结果判断是否存在xss漏洞。

在智能事件模拟器执行过程中,识别并模拟与用户的交互过程,使响应页面展现出完整的dom结构,此过程中需要实时监控响应页面的dom结构是否出现了变化,因为检测请求的参数中含有可能修改响应页面当前dom结构的特征值,在智能事件模拟器触发之后,就可能改变响应页面的dom结构;如假设注入的特征值为“<divname='xss10001001'id="104879601">xsstest</div>”,一旦经模拟事件触发并成功注入,页面的dom中将会新插入一个name为‘xss10001001’的div。即响应页面的dom结构已发生了变化,此时就需要解析预先在响应页面注入的dom监听器,由dom监听器实时监听响应页面的dom结构的变化情况。

优选地,所述判断单元34,具体包括:

dom结构监听模块,用于解析智能事件模拟器,以使所述dom监听器随时监听所述响应页面的dom结构上的事件被触发后,所述响应页面的dom结构的变化情况;

漏洞判断模块,用于根据监听到的响应页面的dom结构中是否存在新增加的所述特征值,判断是否发现xss漏洞。

在执行智能事件模拟器后,响应页面的dom结构中所包含的各种事件会被触发,从而改变响应页面的dom结构,这时采用已经解析的dom监听器监听此变化;所述dom监听器也是一段javascript代码;在dom监听器被解析后,使用mutationobserver监听页面dom结构的变化,mutationobserver是一个能监听dom结构变化的接口;当mutationobserver监听到响应页面dom结构中出现了新增节点,并且此新增节点的注入值为所述特征值,则说明特征值注入成功,即发现了xss漏洞。如上述注入特征值为“<divname='xss10001001'id="104879601">xsstest</div>”的示例中,在经智能事件模拟器模拟事件触发后,响应页面的dom结构中若出现新插入一个name为’xss10001001’的div,则说明特征值注入成功,发现xss漏洞。

优选地,所述检测系统还包括:

检测结果上报单元,用于在确认发现xss漏洞时,上报检测结果,所述检测结果包括:响应页面信息、输出点信息。

若dom监听器监听到特征值注入成功,则确认发现xss漏洞,之后,将确认发现的xss漏洞连同响应页面信息、输出点信息等相关信息通过ajax方式提交给xss检测工具。

优选地,所述检测系统还包括设置单元,用于设置xss漏洞检测工具为代理;将xss检测工具设置代理是为了方便xss检测工具收集用户向web浏览器发送的请求信息,从而为后续构造出带有特征值的检测请求奠定基础。

所述检测系统还包括:

响应页面解析单元,用于解析所述响应页面,以检测所述响应页面在页面初始化时生成的页面元素的xss漏洞;

在web服务器对检测请求作出响应页面注入智能事件模拟器后,对所述响应页面作出解析,完成对响应页面初始化时执行的javascript和css生成的页面元素的xss漏洞的检测。先对响应页面进行解析,检测出未与用户交互时,响应页面本身所存在的漏洞,以便后续dom监听器更好的监听由于交互造成的响应页面的dom结构的变化,发现交互xss漏洞的存在,从而使得检测结果更全面。

本发明第二实施例中,检测请求发送单元发送带有特征值的检测请求到web服务器,并接收web服务器对检测请求反馈的响应页面;dom监听器解析单元解析预先注入的dom监听器,实现对响应页面的dom结构的监听;由智能事件模拟器解析单元向响应页面注入智能事件模拟器代码,对响应页面解析时执行智能事件模拟器代码,智能事件模拟器的执行将自动识别并触发页面控件的事件,从而执行所有响应页面中需由用户交互才能触发执行的javascript和css脚本。在智能事件模拟器执行的过程中,已经解析的dom监听器,监听由于智能事件模拟器的执行而引起的响应页面的dom结构的变化;一旦发现注入的特征值插入到响应页面的dom结构中造成dom结构变化,则确认发现xss漏洞。另外,本发明实施例中在执行智能事件模拟器前首先对响应页面作出解析,检测出响应页面原有的xss漏洞,再由智能事件模拟器模拟用户的交互过程,引出交互过程中产生的xss漏洞,并由dom监听器发现并上报交互过程产生的xss漏洞,从而能够更全面的检测出响应页面不同类型的xss漏洞,提高了web服务器安全性。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1