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

文档序号:19130558发布日期:2019-11-15 20:51阅读:160来源:国知局

本发明涉及网络安全领域,尤其涉及一种网站漏洞检测方法及装置。



背景技术:

互联网上的web站点数量巨多、规模庞大,给大家带来便利的同时又极易带来入侵威胁。因这些web站点系统脆弱且存在漏洞,一旦被攻击就会造成极大的利益损失。目前,web漏洞通常是指网站程序上的漏洞,可能是由于代码编写者在编写代码时考虑不周全等原因而造成的漏洞,常见的web漏洞有命令执行、代码注入、sql注入、xss漏洞、上传漏洞等。如果网站存在web漏洞并被黑客攻击者利用,攻击者可以轻易控制整个网站,并可进一步获取网站服务器权限,进而控制整个服务器。

而目前所采用的网站漏洞检测方法,一种方法是:以动态扫描的形式,通过发送模拟攻击行为的请求,并根据web服务器的响应数据包的特征进行漏洞检测;另一种方法是:在网页服务器之外架设漏洞感知设备,原理是通过在旁路部署漏洞感知产品设备,分析请求及响应双向数据包的内容,根据恶意特征库检测和判断是否存在漏洞以及入侵事件。因为上述方法需要对网络数据包解析和处理,所以代码开发工作量大,硬件成本高,通过对请求及响应双向数据包的特征进行检测从而判断漏洞是否存在,该方式依赖请求及响应内容的特征,当请求及响应数据包中并无特征时则无法对漏洞进行检测。

综上,亟需一种网站漏洞检测方法,可以准确高效地检测出网站的漏洞。



技术实现要素:

本发明实施例提供一种网站漏洞检测方法及装置,用以解决现有技术中存在无法准确高效实时地检测网站漏洞的问题。

本发明方法包括一种网站漏洞检测方法,该方法包括:接收用户对网络站点的访问请求,所述访问请求中包含http请求链接;

根据所述访问请求加载页面数据,并在加载页面数据时加载漏洞检测程序;运行加载的漏洞检测程序,所述漏洞检测程序用于监控与所述http请求链接对应的网页程序中的关键函数,并获取所述关键函数运行时的参数;

判断所述关键函数运行时的参数是否在异常信息数据库中是否存在匹配项;若存在,则根据所述关键函数的类型确定对应的网站漏洞。

基于同样的发明构思,本发明实施例进一步地提供一种网站漏洞检测装置,该装置包括:

接收单元,用于接收用户对网络站点的访问请求,所述访问请求中包含http请求链接;

加载单元,用于根据所述访问请求加载页面数据,并在加载页面数据时加载漏洞检测程序;

运行单元,用于运行加载的漏洞检测程序,所述漏洞检测程序用于监控与所述http请求链接对应的网页程序中的关键函数,并获取所述关键函数运行时的参数;

判断单元,用于判断所述关键函数运行时的参数是否在异常信息数据库中是否存在匹配项;

确定单元,用于若所述判断单元结果为是,则根据所述关键函数的类型确定对应的网站漏洞。。

本发明实施例通过在网站程序中嵌入漏洞检测程序,在接收用户的访问请求之后,漏洞检测程序会同被请求页面一同被加载运行,通过实时动态监控被请求页面程序的关键函数运行,跟踪页面程序运行时用户输入参数,检测被监控函数执行时传入的参数中包含非法、恶意特征,进而实时、准确检测出站点潜在的安全漏洞。而在现有技术中当需要检测web程序是否具有漏洞时,需要向待检测的页面发送检测请求,必须等到待检测网页针对请求进行响应并返回结果后并根据响应内容特征完成检测。因此,与现有技术中这种被动的检测方式相比,本发明不受待检测网页是否对检测请求进行响应的影响就能完成对待检测网站的漏洞检测。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供一种网站漏洞检测方法流程示意图;

图2为本发明实施例提供一种执行网站漏洞检测方法的网络环境;

图3为本发明实施例提供一种判断运行结果是否存在漏洞的方法示意图;

图4为本发明实施例提供一种网站漏洞检测装置。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

参见图1所示,本发明实施例提供一种网站漏洞检测方法流程示意图,具体地实现方法包括:

步骤s101,接收用户对网络站点的访问请求,所述访问请求中包含超文本传输协议http请求链接。

步骤s102,根据所述访问请求加载页面数据,并在加载页面数据时加载漏洞检测程序。

步骤s103,运行加载的漏洞检测程序,所述漏洞检测程序用于监控与所述http请求链接对应的网页程序中的关键函数,并获取所述关键函数运行时的参数。

步骤s104,判断所述关键函数运行时的参数是否在异常信息数据库中是否存在匹配项。

步骤s105,若存在,则根据所述关键函数的类型确定对应的网站漏洞。

其中,上述网站漏洞检测方法可以但不限于应用于如图2所示的网络环境中,其中,上述网络环境中包括终端201、终端202及web服务器203。可选地,在本发明实施例中,上述终端201和终端202可以包括但不限于以下至少之一:手机、平板电脑、笔记本电脑、pc机。可选地,在本发明实施例中,图中网络可以包括但不限于以下至少之一:广域网、城域网、局域网。例如,在终端202上的浏览器中输入预定的统一资源定位url(uniformresourcelocator)地址,通过网络从相应的服务器203中获取对应的网页数据,并对上述网页数据进行漏洞检测。上述举例只是一种示例,本发明实施例对此不做任何限定,在图2中用户通过客户端201上的web浏览器发出http请求,然后web服务器203接收访问请求后查找与http请求对应的页面,然后将查找到的页面发送给客户端201。

考虑到现有技术被动检测方法存在漏检测的问题,本发明实施例提供的网站漏洞检测方法,能够预先创建用于检测网站漏洞的漏洞检测程序;并网站的配置文件的目标标签中插入所述漏洞检测程序,以使每个页面均包含所述漏洞检测程序。当用户向web服务器发出对网络站点的访问请求时,就会触发执行所述漏洞检测程序,进而生成漏洞检测程序的执行结果;根据执行结果就可以分析当前网页数据中是否存在漏洞。而在现有技术中当需要检测网页是否具有漏洞时,需要向待检测网页发送检测请求,必须等到待检测网页针对请求进行响应并返回结果后才能完成检测。因此,与现有技术中这种被动的检测方式相比,本发明通过不受待检测网页是否对检测请求进行响应的影响,可以高效准确地完成对待检测网站的漏洞检测。

需要说明的是,漏洞是指一个系统存在的弱点或缺陷,其可能来自于应用软件或操作系统设计时的缺陷或编码时产生的错误,也可能来自业务在交互处理过程中的设计缺陷或逻辑流程上的不合理之处。由于漏洞对网络、系统、终端、服务器等安全性的影响非常大,因此如何检测并修补存在的漏洞对于目标的安全性非常重要。在测试目标中是否存在漏洞时,就需要使用针对漏洞特点设计的脚本或程序来检测漏洞。因此,在执行步骤s101之前,创建用于检测网站漏洞的漏洞检测程序,并在网页的配置文件的目标标签中插入所述漏洞检测程序,以使每个网页均包含漏洞检测程序。漏洞检测程序是根据需要检测的漏洞类型来创建的,通常,根据目前常见的web漏洞有sql注入、xss漏洞、上传漏洞等类型创建可以检测这些漏洞的检测脚本。具体地,在php(hypertextpreprocessor,超文本预处理器)的配置文件php.ini中有个选项auto_prepend_file,通过这个选项来设置页眉,等同于在页面中使用require函数。这样就可以保证在每个php页面中载入漏洞检测脚本。

优选地,按照预定的加载顺序对所述页面数据中的各个部分进行加载,其中,在准备加载所述页面数据中的第一个部分时加载所述漏洞检测程序,以便所述漏洞检测程序监控与所述http请求链接对应的网页程序中的关键函数。

比如,在网页的页眉中载入漏洞检测脚本,当web服务器查找到该页面时,漏洞检测脚本作为页眉被最先解析和执行,这样,因为漏洞检测程序被率先运行起来,所以该页面的网页程序就被漏洞检测程序监控,进一步地避免了漏检测的问题。

进一步地,调用所述漏洞检测程序中的监控函数读取与所述http请求链接对应的网页程序;在所述网页程序中查找是否存在待监控的关键函数;若存在,则获取所述关键函数运行时的参数,并生成所述关键函数在所述网页程序中的代码相关信息。

具体地,当用户访问网站时,漏洞检测脚本作为页眉会被第一时间执行,首先使用php函数file_get_contents将当前请求的页面及引用包含的所有页面文件代码都读入内存,并使用php提供的源代码解析函数token_get_all解析程序代码,在源代码中遍历查找是否出现预定义的需要监控函数list中的函数(如sql_query、file、system、shell_exec、curl_exec等关键函数),如果查找到则替换为对应的自定义函数,完成当前请求页面及引用的页面的遍历查找、替换自定义函数后,将内存中的源代码保存至临时文件,并使用eval执行临时程序文件。

当程序页面执行时,如果调用了监控函数表中的关键函数,则会执行自定义的函数,在自定义函数中,可以提取当前调用函数的参数。进而生成关于该程序文件名、url链接、函数名称、代码行号、参数的运行结果,再判断该参数是否为恶意攻击者输入的漏洞利用有效载荷。具体地判断步骤如图3所示,具体内容如下。

步骤301,获取漏洞检测程序的检测结果,包括该程序文件名、url链接、函数名称、代码行号、参数等。

步骤302,检测该url链接中的参数是否包含在监控函数的参数中,若否,则进入步骤303,若是,则进入步骤304。

步骤303,判断当前访问的页面不存在漏洞。

步骤304,若是,检测该参数是否包含预定义的非法字符集、特征规则库中的非法字符及特征。若否,则进入步骤305,若是,则进入步骤306。

步骤305,判断当前访问的页面不存在漏洞。

步骤306,如果存在则表明该输入参数校验、过滤不严存在漏洞,根据监控函数的类型如:sql查询、命令执行、文件包含函数、文件操作等函数类型确定漏洞的类型,同时将该程序文件名、url链接、函数名称、代码行号、参数信息输出。

为了方便管理员查看漏洞检测的结果,本发明实施例进一步地将运行结果发送给漏洞扫描器,所述运行结果包括确定的网站漏洞、所述参数和所述关键函数在所述网页程序中的代码相关信息,以使所述漏洞扫描器将所述运行结果展示给用户。具体地,通过检测http请求中预定义header字段wis_aspect是否存在且其值为enable判断请求是否为特定web漏洞扫描器发出,如果检测到wis_aspect字段则获取预定义header字段wis_aspect_password的值即预设的扫描器与漏洞感知端交互的认证口令,如果口令匹配成功,则漏洞感知端在检测到安全漏洞后在自身爆出漏洞信息的同时也将漏洞详细信息输出到响应页面底部,返回给扫描器端,由扫描器爆出该漏洞详细信息,包括该漏洞所在文件名、url链接、函数名称、代码行号、参数等信息。

可见,本发明实施例通过漏洞检测程序实时动态监控函数运行,检测程序运行时用户输入参数,函数执行时传入的参数中是否包含非法或恶意特征,准确检测出漏洞,同时还可以获取到漏洞所在的具体文件、代码行数、函数及参数。另外结合已有的web漏洞扫描器,能够更加主动、全面的发现网络站点中存在的安全漏洞。需要说明的是,上述方法可以开发成漏洞检测程序集成到web服务器上运行,无需主动发送请求包,也不需要在旁路部署硬件设备对双向流量进行分析,降低了漏洞检测的成本。另外,本发明实施例对运行时函数的参数进行检测,可实时准确检测出漏洞,而且漏报率极低。

基于相同的技术构思,本发明实施例还提供一种网站漏洞检测装置,该装置可执行上述方法实施例。本发明实施例提供的装置如图4所示,包括:接收单元401、加载单元402、运行单元403、判断单元404、确定单元405,其中:

接收单元401,用于接收用户对网络站点的访问请求,所述访问请求中包含超文本传输协议http请求链接。

加载单元402,用于根据所述访问请求加载页面数据,并在加载页面数据时加载漏洞检测程序。

运行单元403,用于运行加载的漏洞检测程序,所述漏洞检测程序用于监控与所述http请求链接对应的网页程序中的关键函数,并获取所述关键函数运行时的参数。

判断单元404,用于判断所述关键函数运行时的参数是否在异常信息数据库中是否存在匹配项。

确定单元405,用于若所述判断单元404结果为是,则根据所述关键函数的类型确定对应的网站漏洞。

进一步地,在接收单元401执行之前,还包括:预配置单元406,,用于创建用于检测网站漏洞的漏洞检测程序,并在网站的配置文件的目标标签中插入所述漏洞检测程序,以使每个页面均包含所述漏洞检测程序。。

进一步地,所述加载单元402具体用于:按照预定的加载顺序对所述页面数据中的各个部分进行加载,其中,在准备加载所述页面数据中的第一个部分时加载所述漏洞检测程序,以便所述漏洞检测程序监控与所述http请求链接对应的网页程序中的关键函数。

进一步地,所述运行单元403具体用于:调用所述漏洞检测程序中的监控函数读取与所述http请求链接对应的网页程序;在所述网页程序中查找是否存在待监控的关键函数;若存在,则获取所述关键函数运行时的参数,并生成所述关键函数在所述网页程序中的代码相关信息。

进一步地,还包括:发送单元407,用于将运行结果发送给漏洞扫描器,所述运行结果包括确定的网站漏洞、所述参数和所述关键函数在所述网页程序中的代码相关信息,以使所述漏洞扫描器将所述运行结果展示给用户。

综上所述,本发明实施例通过在网站程序中嵌入漏洞检测程序,在接收用户的访问请求之后,漏洞检测程序会同被请求页面一同被加载运行,通过实时动态监控被请求页面程序的关键函数运行,跟踪页面程序运行时用户输入参数,检测被监控函数执行时传入的参数中包含非法、恶意特征,进而实时、准确检测出站点潜在的安全漏洞。而在现有技术中当需要检测web程序是否具有漏洞时,需要向待检测的页面发送检测请求,必须等到待检测网页针对请求进行响应并返回结果后并根据响应内容特征完成检测。因此,与现有技术中这种被动的检测方式相比,本发明通过将检测漏洞的漏洞检测程序置于待检测的网页中,一旦待检测网页被访问则触发执行所述漏洞检测程序,就可以及时获取到所述漏洞检测程序返回的执行结果,从而不受待检测网页是否对检测请求进行响应的影响就能完成对待检测网站的漏洞检测。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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