一种漏洞检测方法及其装置与流程

文档序号:12734604阅读:342来源:国知局
一种漏洞检测方法及其装置与流程

本发明涉及Web应用测试技术领域,尤其涉及一种漏洞检测方法及其装置。



背景技术:

近年来,随着Web应用的广泛使用,Web安全问题也日益突出。其中,XSS(Cross-site scripting,跨站脚本攻击)漏洞已成为Web应用程序中最常见的漏洞之一,因此,对XSS漏洞的自动化检测也成为了一项重要的技术。

目前,一般采用XSS检测工具来检测XSS漏洞,其具体过程如下:(1)XSS检测工具捕获客户端(浏览器)所发送的http请求;(2)XSS检测工具构造带有特征值的请求;(3)XSS检测工具将带有特征值的请求发送至Web服务器,Web服务器响应该请求;(4)XSS检测工具在该请求响应的页面源代码中检测特征值,若在某处检测到特征值,则认为此处为一个XSS漏洞。

进一步地,随着Web 2.0技术的发展,Web应用的页面不仅具有展示静态内容的功能,还具有与用户进行交互的功能。其中,这些交互功能通常通过在Web页面嵌入大量JavaScript和CSS脚本来实现。具体地,通过执行嵌入的JavaScript和CSS脚本,可以动态的增加、删除和修改各种Web页面元素。然而,上述漏洞检测方法由于仅仅检测了请求响应的源代码,这部分动态生成的页面元素由于页面中的JavaScript和CSS脚本没有执行而无法被检测,即无法检测动态页面生成元素的XSS漏洞。



技术实现要素:

本发明所要解决的技术问题是:提供一种漏洞检测方法,以检测出动态页面生成元素的XSS漏洞。

为解决上述技术问题,本发明采用的技术方案如下:

提供一种漏洞检测方法,包括:

接收Web服务器对处理请求的响应结果,该处理请求包括特征值,该响应结果包括页面源代码;

根据虚拟解析器对页面源代码进行解析以得到解析结果,该解析结果包括html页面;

对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素;其中,动态页面指的是执行JavaScript脚本和CSS脚本后的页面。

具体地,该XSS漏洞包括JavaScript脚本和CSS脚本执行后生成的漏洞。

可选地,接收Web服务器对处理请求的响应结果之后,该方法还包括:

对页面源代码进行特征值检测以得到XSS漏洞,该XSS漏洞对应于静态页面生成元素。其中,静态页面指的是未执行JavaScript脚本和CSS脚本的页面。

较佳地,接收Web服务器对处理请求的响应结果之前,该方法还包括:

接收客户端所发送的用户请求,并将用户请求发送至Web服务器;

接收Web服务器对用户请求的响应结果;

构造处理请求,并将处理请求发送至Web服务器。

具体地,该用户请求包括http请求。

相应地,本发明还提供了一种漏洞检测装置,包括:

接收模块,用于接收Web服务器对处理请求的响应结果,该处理请求包括特征值,该响应结果包括页面源代码;

解析模块,用于根据虚拟解析器对页面源代码进行解析以得到解析结果,该解析结果包括html页面;以及

检测模块,用于对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素。其中,动态页面指的是执行JavaScript脚本和CSS脚本后的页面。

具体地,该XSS漏洞包括JavaScript脚本和CSS脚本执行后生成的漏洞。

可选地,接收Web服务器对处理请求的响应结果之后,该检测模块还用于:

对页面源代码进行特征值检测以得到XSS漏洞,该XSS漏洞对应于静态页面生成元素。其中,静态页面指的是未执行JavaScript脚本和CSS脚本的页面。

较佳地,接收Web服务器对处理请求的响应结果之前,该接收模块还用于:

接收客户端所发送的用户请求,并将用户请求发送至Web服务器;

接收Web服务器对用户请求的响应结果;

该漏洞检测装置还包括构造模块,用于构造处理请求并将处理请求发送至Web服务器。

具体地,该用户请求包括http请求。

与现有技术相比,本发明中的漏洞检测方法及其装置,先接收Web服务器对包括特征值的处理请求的响应结果,该响应结果包括页面源代码,再根据虚拟解析器对页面源代码进行解析以得到包括html页面的解析结果,最后对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素。即,本发明引入了类浏览器虚拟解析技术对Web服务器响应的页面源代码进行解析,从而得到了最终生成的HTML结构(即html页面),进一步地对该页面进行特征值检测便实现了对动态页面生成元素的XSS漏洞检测的目的。

通过以下的描述并结合附图,本发明将变得更加清晰,这些附图用于解释本发明的实施例。

附图说明

图1为本发明漏洞检测方法第一实施例的流程图。

图2为本发明漏洞检测方法第二实施例的流程图。

图3为jsp示例代码界面图。

图4为Web请求响应源代码的界面图。

图5为Web请求响应源代码经虚拟解析后的界面图。

图6为发明漏洞检测装置第一实施例的结构图。

图7为发明漏洞检测装置第一实施例的结构图。

具体实施方式

现在参考附图描述本发明的实施例,附图中类似的元件标号代表类似的元件。

请参考图1,是本发明第一实施例的漏洞检测方法流程图。如图所示,该方法可以包括如下步骤:

S101,接收Web服务器对处理请求的响应结果。

具体地,XSS检测工具(即下文中所描述的漏洞检测装置)先向Web服务器发送处理请求,其中,该处理请求是由XSS检测工具所构造的、带有特征值的请求。Web服务器接收该处理请求,并对其进行响应以得到响应结果,进一步地将该响应结果返回至XSS检测工具。其中,该响应结果包括页面源代码。

需要说明的是,特征值一般都是一些包含特殊字符的字符串,用于破坏当前输出点的上下文html或者JavaScript结构,从而达到成功注入的目的。以下是两个特征值的示例:

<div name='xss10001001' id="101482402907">I am tester</div>

<script name='xss10001001' id="101483090516">alert(1)</script>

S102,根据虚拟解析器对页面源代码进行解析以得到解析结果,该解析结果包括html页面。

具体地,XSS检测工具利用虚拟解析技术,对页面源代码进行解析,从而可以获得最终生成的HTML结构(即html页面)。

S103,对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素。其中,动态页面指的是执行JavaScript脚本和CSS脚本后的页面。

具体地,XSS检测工具对解析所得到的html页面进行特征值检测,如果在经过解析的请求响应(即html页面)中检测到了特征值,则可以判断所检测到的特征值所在的位置即为一个XSS漏洞。且,此处的XSS漏洞对应于动态页面生成元素,该XSS漏洞主要指的是JavaScript脚本和CSS脚本执行后生成的漏洞。

从以上描述可以看出,本发明实施例中,先接收Web服务器对包括特征值的处理请求的响应结果,该响应结果包括页面源代码,再根据虚拟解析器对页面源代码进行解析以得到包括html页面的解析结果,最后对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素。即,本发明实施例引入了类浏览器虚拟解析技术对Web服务器响应的页面源代码进行解析,从而得到了最终生成的HTML结构(即html页面),进一步地对该页面进行特征值检测便实现了对动态页面生成元素的XSS漏洞检测的目的。

请参考图2,是本发明第二实施例的漏洞检测方法流程图。如图所示,该方法可以包括如下步骤:

S201,接收客户端所发送的用户请求,并将用户请求发送至Web服务器。

具体地,客户端(浏览器)先将XSS检测工具设置为代理,以用于后续代理客户端向Web服务器发送请求。之后,客户端向XSS检测工具发送用户请求(http请求),XSS检测工具接收该http请求、保存该请求的信息。进一步地,XSS检测工具将http请求发送至Web服务器。

S202,接收Web服务器对用户请求的响应结果。

具体地,Web服务器接收http请求,对其做出响应,并将响应结果返回至XSS检测工具。XSS检测工具接收来自Web服务器对http请求的响应结果,并将其返回至客户端。

S203,构造处理请求,并将处理请求发送至Web服务器。

具体地,XSS检测工具根据http请求构造带有特征值的处理请求,并将其发送至Web服务器。需要说明的是,例如某个http请求包含10个参数,为了达到成功注入的目的,每个参数可能都需要注入10种不同的特征值,则XSS检测工具会一共构造10*10=100个处理请求。

S204,接收Web服务器对处理请求的响应结果。

具体地,Web服务器接收XSS检测工具所发送的处理请求,并对其进行响应以得到响应结果,进一步地将该响应结果返回至XSS检测工具。其中,该响应结果包括页面源代码。

需要说明的是,特征值一般都是一些包含特殊字符的字符串,用于破坏当前输出点的上下文html或者JavaScript结构,从而达到成功注入的目的。以下是两个特征值的示例:

<div name='xss10001001' id="101482402907">I am tester</div>

<script name='xss10001001' id="101483090516">alert(1)</script>

S205,对页面源代码进行特征值检测以得到XSS漏洞,该XSS漏洞对应于静态页面生成元素。其中,静态页面指的是未执行JavaScript脚本和CSS脚本的页面。

具体地,XSS检测工具对页面源代码进行特征值检测,如果检测到了特征值,则可以判断所检测到的特征值所在的位置即为一个XSS漏洞。且,此处的XSS漏洞对应于静态页面生成元素。需要说明的是,步骤S201至S205描述的即是现有的XSS漏洞检测方法。也就是说,到步骤S205为止,仅能检测静态页面生成元素所对应的XSS漏洞,而动态页面元素所对应的XSS漏洞由于未被执行,是无法被检测的。因此,需要进行如下步骤以检测出动态页面元素所对应的XSS漏洞。

S206,根据虚拟解析器对页面源代码进行解析以得到解析结果,该解析结果包括html页面。

虚拟解析技术可以模拟浏览器运行,相当于无界面的浏览器,可以对http请求响应的源代码做JavaScript、html和css的解析。由于其运行不需要界面,运行速度非常迅速。目前业界已经有较为成熟的开源软件库,大多运用在Web应用的自动化测试领域。

具体地,该步骤中,XSS检测工具利用虚拟解析技术,对http请求响应的源代码进行解析,可以获得Web请求响应最终生成的HTML结构,从而可以解决传统XSS检测工具不能够发现这种通过脚本动态生成的元素的XSS漏洞的问题。

进一步地,以下以一个简单的示例说明虚拟解析技术的作用。请参考图3,其是一段简单的jsp示例代码,第14行的代码将会把http请求参数name的值放到<a></a>中,再将完整的<a>动态的添加到页面的Div内。

如果请求参数的name值为‘peter’,则现有XSS检测工具分析的响应源代码将是如图4中第14行所显示的代码。但根据虚拟解析器对页面源代码进行解析后,XSS检测工具中可得到如图5所示的界面。从图中可以看出,页面中的JavaScript代码已经执行,在页面第9行,完整的<a>标签的内容已经动态的插入到了html页面中。

S207,对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素。其中,动态页面指的是执行JavaScript脚本和CSS脚本后的页面。

由于代码9行并没有对输出做编码保护,这里将是一个XSS漏洞。如果使用传统的XSS漏洞检测方法,由于不能得到解析之后的html结构,将不能发现这个XSS漏洞。而本发明实施例的XSS漏洞检测方法采用了虚拟解析技术,如图5所示,得到了完整的最终生成的html结构,因此可以顺利的将此处的XSS漏洞检测出来。

具体地,XSS检测工具对解析所得到的html页面进行特征值检测,如果在经过解析的请求响应(即html页面)中检测到了特征值,则可以判断所检测到的特征值所在的位置即为一个XSS漏洞。且,此处的XSS漏洞对应于动态页面生成元素,该XSS漏洞主要指的是JavaScript脚本和CSS脚本执行后生成的漏洞。

从以上描述可以看出,本发明实施例中,先接收客户端所发送的用户请求,并将用户请求发送至Web服务器,再接收Web服务器对用户请求的响应结果,之后构造处理请求并将处理请求发送至Web服务器,接着接收Web服务器对处理请求的响应结果,该响应结果包括页面源代码,对页面源代码进行特征值检测以得到对应于静态页面生成元素的XSS漏洞,同时根据虚拟解析器对页面源代码进行解析以得到包括html页面的解析结果,最后对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素。即,本发明实施例引入了类浏览器虚拟解析技术对Web服务器响应的页面源代码进行解析,从而得到了最终生成的HTML结构(即html页面),进一步地对该页面进行特征值检测便实现了对动态页面生成元素的XSS漏洞检测的目的。此外,本发明实施例中还对页面源代码进行了漏洞检测,从而检测出了对应于静态页面生成元素的XSS漏洞,进而更加完善了漏洞检测方案,提高了漏洞检测率。

请参考图6,是本发明第一实施例的漏洞检测装置的结构图。如图所示,该漏洞检测装置可以包括:

接收模块10,用于接收Web服务器对处理请求的响应结果,该处理请求包括特征值,该响应结果包括页面源代码;

解析模块11,用于根据虚拟解析器对页面源代码进行解析以得到解析结果,该解析结果包括html页面;以及

检测模块12,用于对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素。其中,动态页面指的是执行JavaScript脚本和CSS脚本后的页面,该XSS漏洞主要指的是JavaScript脚本和CSS脚本执行后生成的漏洞。

从以上描述可以看出,本实施例的漏洞检测装置,先通过接收模块10接收Web服务器对包括特征值的处理请求的响应结果,该响应结果包括页面源代码,再通过解析模块11根据虚拟解析器对页面源代码进行解析以得到包括html页面的解析结果,最后通过检测模块12对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素。即,本发明实施例引入了类浏览器虚拟解析技术对Web服务器响应的页面源代码进行解析,从而得到了最终生成的HTML结构(即html页面),进一步地对该页面进行特征值检测便实现了对动态页面生成元素的XSS漏洞检测的目的。

请参考图7,是本发明第二实施例的漏洞检测装置的结构图。如图所示,该漏洞检测装置可以包括:接收模块20、解析模块21、检测模块22及构造模块23。

其中,接收模块20、解析模块21、检测模块22除了具备第一实施例中对应模块所具有的功能外,接收模块20还用于:

接收客户端所发送的用户请求,并将用户请求发送至Web服务器,该用户请求包括http请求;

接收Web服务器对用户请求的响应结果。

该检测模块22还用于:

对页面源代码进行特征值检测以得到XSS漏洞,该XSS漏洞对应于静态页面生成元素。其中,静态页面指的是未执行JavaScript脚本和CSS脚本的页面。

该构造模块23用于构造处理请求并将处理请求发送至Web服务器。

从以上描述可以看出,本发明实施例中,先通过接收模块20接收客户端所发送的用户请求,并将用户请求发送至Web服务器,再接收Web服务器对用户请求的响应结果,之后通过构造模块23构造处理请求并将处理请求发送至Web服务器,接着接收模块20接收Web服务器对处理请求的响应结果,该响应结果包括页面源代码,通过检测模块22对页面源代码进行特征值检测以得到对应于静态页面生成元素的XSS漏洞,同时通过解析模块21根据虚拟解析器对页面源代码进行解析以得到包括html页面的解析结果,最后通过检测模块22对html页面进行特征值检测以得到XSS漏洞,该XSS漏洞对应于动态页面生成元素。即,本发明实施例引入了类浏览器虚拟解析技术对Web服务器响应的页面源代码进行解析,从而得到了最终生成的HTML结构(即html页面),进一步地对该页面进行特征值检测便实现了对动态页面生成元素的XSS漏洞检测的目的。此外,本发明实施例中还对页面源代码进行了漏洞检测,从而检测出了对应于静态页面生成元素的XSS漏洞,进而更加完善了漏洞检测方案,提高了漏洞检测率。

以上结合最佳实施例对本发明进行了描述,但本发明并不局限于以上揭示的实施例,而应当涵盖各种根据本发明的本质进行的修改、等效组合。

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