一种网站漏洞检测方法、检测服务器及系统与流程

文档序号:15624961发布日期:2018-10-09 22:45阅读:120来源:国知局

本发明涉及网站安全技术领域,具体涉及一种网站漏洞检测方法、检测服务器及系统。



背景技术:

网站存在漏洞时,极容易被攻击者利用,从而对网站安全产生影响;因此如何优化网站的漏洞检测方式,一直是本领域技术人员研究的关注点。

目前网站漏洞检测方式主要是通过网络爬虫抓取的网站url(uniformresourelocator,统一资源定位符)链接实现,如通过网络爬虫抓取到网站的url,根据所抓取的url对网站进行漏洞检测;这种通过网络爬虫抓取网站的url,来实现网站漏洞检测的方式存在的问题是:网络爬虫对网站进行爬取,会对网站造成很大的流量压力;因此如何提供一种网站负担较轻的网站漏洞检测方法,成为了本领域技术人员需要考虑的问题。



技术实现要素:

有鉴于此,本发明实施例提供一种网站漏洞检测方法、检测服务器及系统,以实现网站负担较轻的网站漏洞检测。

为实现上述目的,本发明实施例提供如下技术方案:

一种网站漏洞检测方法,包括:

获取目标网站对应的任务数据,所述任务数据至少包括:浏览组件加载所述目标网站的页面的过程中,浏览组件收集的所述目标网站对应的至少一个统一资源定位符url链接;

若历史未根据所述任务数据进行过网站漏洞检测,将所述任务数据加入到预置任务队列,所述任务队列记录有至少一个任务数据;

根据所述任务队列的队列顺序,调取所述任务数据;

将所述任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值,得到各url链接对应的检测url链接;

生成各所述检测url链接对应的检测请求;

根据各检测请求,确定各检测url链接对应的url链接的网站漏洞检测结果。

本发明实施例还提供一种检测服务器,包括:

任务数据获取模块,用于获取目标网站对应的任务数据,所述任务数据至少包括:浏览组件加载所述目标网站的页面的过程中,浏览组件收集的所述目标网站对应的至少一个统一资源定位符url链接;

队列加入模块,用于若历史未根据所述任务数据进行过网站漏洞检测,将所述任务数据加入到预置任务队列,所述任务队列记录有至少一个任务数据;

任务数据调取模块,用于根据所述任务队列的队列顺序,调取所述任务数据;

检测url链接确定模块,用于将所述任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值,得到各url链接对应的检测url链接;

检测请求生成模块,用于生成各所述检测url链接对应的检测请求;

检测结果确定模块,用于根据各检测请求,确定各检测url链接对应的url链接的网站漏洞检测结果。

本发明实施例还提供一种网站漏洞检测系统,包括:

浏览组件,用于在加载所述目标网站的页面的过程中,收集所述目标网站对应的至少一个统一资源定位符url链接;根据所收集的url链接生成目标网站对应的任务数据,将所述任务数据发送至检测服务器;

检测服务器,用于获取所述浏览组件发送的任务数据;若历史未根据所述任务数据进行过网站漏洞检测,将所述任务数据加入到预置任务队列,所述任务队列记录有至少一个任务数据;根据所述任务队列的队列顺序,调取所述任务数据;将所述任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值,得到各url链接对应的检测url链接;生成各所述检测url链接对应的检测请求;根据各检测请求,确定各检测url链接对应的url链接的网站漏洞检测结果。

基于上述技术方案,本发明实施例提供的网站漏洞检测方法,服务器可获取目标网站对应的任务数据,且该任务数据包括浏览组件加载所述目标网站的页面的过程中,浏览组件收集的目标网站对应的url链接;从而服务器可在未根据所述任务数据进行过网站漏洞检测时,将所述任务数据加入到预置任务队列,以根据所述任务队列的队列顺序,调取所述任务数据;进而在调取到所述任务数据后,可将所述任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值,得到各url链接对应的检测url链接,从而以此生成各所述检测url链接对应的检测请求,根据各检测请求,确定各检测url链接对应的url链接的网站漏洞检测结果,实现网站漏洞的检测。

由于本发明实施例至少通过浏览组件加载目标网站的页面的过程中收集的url链接构成任务数据,从而基于任务数据实现网站漏洞检测;因此可在浏览组件对网站的正常访问过程中,获取到检测网站漏洞所使用的任务数据,网站只需要应对正常的访问,网站的流量负担较轻。可见,本发明实施例提供的网站漏洞检测方法,可实现网站负担较轻的网站漏洞检测。

附图说明

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

图1为本发明提供的网站的漏洞检测方法的系统架构示意图;

图2为本发明提供的一种网站漏洞检测方法的信令流程图;

图3为本发明提供的一种生成检测请求的方法的方法流程图;

图4为本发明提供的另一种生成检测请求的方法的方法流程图;

图5为本发明提供的一种判断是否根据任务数据进行过网站漏洞检测的方法流程图;

图6为本发明提供的另一种判断是否根据任务数据进行过网站漏洞检测的方法流程图;

图7为本发明提供的一种网站漏洞检测装置的结构示意图;

图8为本发明提供的另一种网站漏洞检测装置的结构示意图;

图9为本发明提供的再一种网站漏洞检测装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了实现网站的漏洞检测方法的系统架构示意图,参照图1,包括终端设备201、检测服务器202和网站服务器203;

其中,终端设备201可以如手机、平板电脑、笔记本电脑等用户侧的电子设备;终端设备201中可安装具有浏览功能的浏览组件,浏览组件如浏览器、即时通讯等应用嵌入的具有网页浏览功能的组件等;

检测服务器202为本发明实施例设置的用于实现网站漏洞检测的服务器,检测服务器202可以由单台服务器实现,也可以是由多台服务器组成的服务器群组。

网站服务器203主要用于网站在互联网中的发布、应用,是网站实现对外服务的基础硬件设施。

现有技术采用网络爬虫抓取的网站url链接实现网站的漏洞检测,这会对网站造成很大的流量压力,为解决此问题,本发明实施例可通过浏览组件收集目标网站的页面加载过程中,目标网站对应的url链接,并以所收集的url链接生成任务数据,从而浏览组件可将该任务数据传输给本发明实施例设置的检测服务器,由检测服务器基于该任务数据实现网络的漏洞检测;

具体的,检测服务器获取所述浏览组件发送的任务数据后,若历史未根据所述任务数据进行过网站漏洞检测,则可将所述任务数据加入到预置任务队列,所述任务队列记录有至少一个任务数据;从而检测服务器可根据所述任务队列的队列顺序,调取所述任务数据,并将所述任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值,得到各url链接对应的检测url链接;进而检测服务器可生成各所述检测url链接对应的检测请求,以根据各检测请求,确定各检测url链接对应的url链接的网站漏洞检测结果;

在这个过程中,浏览组件可通过对网站的正常访问,获取到检测网站漏洞所使用的任务数据,从而使得检测服务器实现网站的漏洞检测,而网站只需要应对正常的访问,网站的流量负担较轻。

基于上述技术实现核心,图2示出了本发明实施例提供的网站漏洞检测方法的信令流程图,参照图2,该流程可以包括如下步骤:

s201、浏览组件向目标网站的网站服务器发送访问目标网站的页面的http请求,并收集所发送的http请求。

可选的,目标网站为本发明实施例需要进行漏洞检测的网站,目标网站对应有多个可供浏览的页面。

浏览组件访问目标网站的某一页面时,会向目标网站的网站服务器发送访问该页面的http(超文本传输协议)请求,该http请求中携带有需访问页面的url链接;

在这个过程中,浏览组件可对所发送的http请求进行收集;http请求包包括:包头、包体和包尾;可选的,本发明实施例可不限于收集http请求的包体,还可收集http请求的包头和/或包尾。

s202、网站服务器向浏览组件反馈包含该页面的内容的反馈结果。

网站服务器接收到http请求,会根据http请求确定包含该页面内容的反馈结果,并将反馈结果发送到浏览组件,从而使得浏览组件能够加载出所要访问的页面。

可见,浏览组件在加载目标网站的页面的过程中,浏览组件可向网站服务器发送该页面的访问请求,并基于网站服务器的反馈结果进行页面的加载。

s203、浏览组件基于所述反馈结果,解析页面的htmldom结构,得到至少一个url链接。

可选的,本发明实施例可以基于反馈结果,采用预设算法解析页面结构,得到至少一个url链接。优选的,可以解析页面的htmldom(documentobjectmodel,文档对象模型)结构,得到至少一个url链接,即可以根据反馈结果实现目标网站对应的至少一个url链接的收集。

进一步,当解析得到目标网站对应的至少一个url链接后,将收集到的至少一个url链接进行去重,可使最终得到的至少一个url链接之间无重复,进而就能够降低检测服务器的工作负荷。

此外,浏览组件中还包含hosts配置模块,hosts配置模块用于生成ip和域名的绑定关系。

s204、浏览组件对所述至少一个url链接,以及所述http请求的包体进行组包,得到任务数据;

可选的,本发明实施例可根据预设的hosts信息,分别对至少一个url链接,以及http请求的包体进行组包,然后再结合得到任务数据;

其中,为了能够区分本实施例中任务数据的数据包的结构,将可将任务数据的数据包理解为由两部分构成,其中一部分为url链接封装体,url链接封装体中包括预设的hosts信息,以及包含各url链接的数组的链接数据;另一部分为http请求的包体封装体,http请求的包体封装体包括:预设的hosts信息,以及http请求的包体;

其中,http请求的包体封装体与url链接封装体中的预设的hosts信息可以相同,http请求的包体为整体url编码后的http请求包体。

分别得到url链接封装体和http请求的包体封装体后,将url链接封装体和http请求的包体封装体组合,得到任务数据的数据包。

进一步,任务数据中包含的各url链接的链接数据中的域名需与http请求中的域名一致,即在生成任务数据之前,需要对url链接进行同源判断,即判断url链接的链接数据中的域名是否与http请求中的域名一致,当一致时,将url链接添加到任务数据中,当不一致时,剔除与http请求中的域名不一致的url链接。

s205、浏览组件向检测服务器发送任务数据;

可选的,在接收浏览组件发送的任务数据之前,检测服务器可先对浏览组件的使用用户进行身份校验,只有身份校验通过后,浏览组件才能与检测服务器通信,使得检测服务器能够接收到目标网站对应的任务数据。

s206、若历史未根据任务数据进行过网站漏洞检测,检测服务器将任务数据加入到预置任务队列;其中,任务队列记录有至少一个任务数据。

需要说明的是,只有在判断出历史未根据任务数据进行过网站漏洞检测,检测服务器才会后续进行网站漏洞检测,如果判断出历史已经根据任务数据进行过网站漏洞检测,则说明该任务数据已经在某一历史时间经过本发明实施例的网站漏洞检测方法处理,已确定出相应的网站漏洞检测结果,此时为了减少检测服务器的任务量,就不需要对已确定出网站漏洞检测结果的任务数据进行网站漏洞检测。

s207、检测服务器根据任务队列的队列顺序,调取任务数据;

具体的,按照任务数据在任务队列中的队列顺序,在任务队列中排列越靠前的任务数据,越先被调取处理。

可选的,对于每个任务数据根据处理阶段的不同,本发明实施例可设置不同的任务状态;如当任务数据已经被调取并且已经确定出网站漏洞检测结果,则可设置任务数据对应的任务状态为任务完成;当任务数据正在被调取且正在进行分析,等待得到网站漏洞检测结果,则可设置任务数据对应的任务状态为任务处理中;当任务数据处于任务队列中,等待被调取,并且还未确定出网站漏洞检测结果,则可设置任务数据对应的扫描状态为队列等待中。

s208、检测服务器将任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值,得到各url链接对应的检测url链接;

可选的,url链接可以包括url的路径部分、可控参数部分和http请求头部分,url链接的可控参数部分包括多个可控参数,每个可控参数对应有一个参数值,可控参数用来唯一指定一个url链接。

可选的,在本发明实施例中,可设置网站漏洞规则记录有预置的各url链接的各可控参数对应的漏洞特征值;即每个url链接的每个可控参数,均在网站漏洞规则中对应有一个漏洞特征值。其中,网站漏洞规则对应有一个数据格式为xml(可扩展标记语言)的文件,网站漏洞规则在使用前,需要加载网站漏洞规则文件,即加载该xml文件。

在本发明实施例中,网站漏洞规则中记录的漏洞特征值是可来替换url链接中相应可控参数的参数值,从而以便验证任务数据中的url链接是否为带有漏洞的url链接。

s209、检测服务器生成各检测url链接对应的检测请求;

其中,对于每一个检测url链接,本发明实施例可生成相应的检测请求,即使得一个检测url链接对应一个检测请求,以便后续通过各检测请求,确定出检测请求对应的检测url链接相应的url链接是否对应网站漏洞。

s210、检测服务器使用多线程向目标网站的网站服务器并行发送各检测请求;

对于每一个检测url链接,可按照网站服务器所要求的访问请求的协议、格式,生成相应的检测请求,以使得网站服务器在接收到各检测url链接对应的检测请求后,可进行响应反馈。

具体的,由于检测请求的数量较多,使用多线程发送检测请求可提高检测效率。

s211、网站服务器发送各检测请求的反馈结果到检测服务器;

网站服务器接收到各检测请求后,响应每个检测请求,确定相应的反馈结果。

s212、对于一url链接,检测服务器根据对应检测url链接的检测请求的反馈结果,与该url链接的访问请求的反馈结果,确定该url链接的网站漏洞检测结果。

可选的,对于一url链接,检测服务器接收到该url链接对应的检测请求的反馈结果后,可判断该url链接对应的检测请求的反馈结果与该url链接的访问请求的反馈结果是否一致,若一致,则说明该url链接无网站漏洞可对应,若不一致,说明该url链接有网站漏洞可被利用,当检测服务器发现存在有网站漏洞的url链接时,会做出一定的响应;

可选的,对于一url链接,该url链接的访问请求可以认为是发往网站服务器的包含该url链接的访问请求,而该url链接对应的检测请求可以认为是发往服务器的包含该url链接对应的检测url链接的访问请求;

可选的,根据各检测请求,确定各检测url链接对应的url链接的网站漏洞检测结果可以由检测服务器的扫描常驻服务执行,当扫描常驻服务根据各检测请求,确定各检测url链接对应的url链接的网站漏洞检测结果的同时,还可由sql注入验证服务实现http请求的各个参数位置的sql注入漏洞验证,所谓sql注入,就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令。

可见,本发明实施例可以至少通过浏览组件加载目标网站的页面的过程中收集的url链接构成任务数据,从而检测服务器可基于该任务数据实现网站漏洞检测;由于可在浏览组件对网站的正常访问过程中,获取到检测网站漏洞所使用的任务数据,网站只需要应对正常的访问,网站的流量负担较轻。

可选的,在收集目标网站对应的至少一个url链接和发送至目标网站的网站服务器的http请求时,浏览组件可根据预定的黑名单规则和白名单规则实现。

本发明实施例可在浏览组件的本地内存中的一个黑名单数组中,记录不需要收集的多个域名,黑名单规则用于在收集url链接和http请求的包体的过程中,不收集域名与黑名单数组中记录的域名相同的url链接和http请求的包体;

本发明实施例也可在浏览组件的本地内存中的一个白名单数组中记录多个域名,白名单规则用于仅收集域名与白名单数组中记录的域名同源的url链接和http请求的包体。

其中,url链接或http请求的包体的域名与白名单数组中记录的域名同源,是指url链接或http请求的包体的域名与白名单数组中记录的域名相同。

本实施例中,采用黑名单规则和白名单规则,就能够筛选出符合黑名单规则和白名单规则的目标网站对应的至少一个url链接和发送至目标网站的服务器的http请求的包体。

可选的,步骤s204中,任务数据为对所述至少一个url链接,以及所述http请求的包体进行组包后得到的数据包;除此之外,还可通过浏览组件加载所述目标网站的页面的过程中,浏览组件收集的所述目标网站对应的至少一个url链接,组包形成任务数据。

即根据任务数据包含的内容的不同可分为两种情况,第一种情况中所述任务数据包括:浏览组件加载所述目标网站的页面的过程中,浏览组件收集的所述目标网站对应的至少一个统一资源定位符url链接。

第二种情况中的任务数据除了包含浏览组件加载所述目标网站的页面的过程中,浏览组件收集的所述目标网站对应的至少一个统一资源定位符url链接,还包括浏览组件加载所述目标网站的页面的过程中,浏览组件收集的发送至所述目标网站的服务器的http请求的包体。

可选的,针对第一种情况中的任务数据,可采用json数据结构将预设的hosts信息,以及包含各url链接的数组的链接数据组装成数据包。其中json(javascriptobjectnotation)是一种轻量级的数据交换格式。它基于ecmascript的一个子集。json采用完全独立于语言的文本格式,是一种易于人阅读和编写、同时也易于机器解析和生成的数据交换语言。

具体的,预设的hosts信息中包含有网络之间互连的协议ip和域名的绑定关系,预设的hosts信息是提前已经生成的,只需要在生成数据包的时候,将hosts信息添加进去即可。

包含各url链接的数组的链接数据中包含有url链接的路径部分,可控参数部分和http请求头部分。

本实施例中,任务数据可以仅包含所述目标网站对应的至少一个统一资源定位符url链接,就能够实现网站漏洞检测,提高了网站漏洞检测的可实施性。

可选的,本发明实施例中,当所述任务数据包括:浏览组件加载所述目标网站的页面的过程中,浏览组件收集的所述目标网站对应的至少一个统一资源定位符url链接时,本发明实施例可通过如下方式生成各检测url连接对应的检测请求:

调取http请求包模板,根据http请求包模板生成访问各检测url链接对应的检测请求。

在此思路下,生成检测请求的一种具体实现可参照图3,包括以下步骤:

s301、根据http请求包模板生成检测请求模板;

s302、将检测url链接添加到检测请求模板中。

当生成检测请求模板后,将每个检测url链接添加到检测请求模板中,可生成访问各检测url链接对应的检测请求。其中,一个检测url链接对应有一个检测请求,当检测url链接的数量为多个时,检测请求的数量也为多个。

可选的,生成检测请求的另一种具体实现可参照图4,包括以下步骤:

s401、将检测url链接添加到http请求包模板的包体中,得到http请求包;

s402、将http请求包的包头替换为预设的一个包头,形成访问检测url链接对应的检测请求。

可见,生成访问各检测url链接对应的检测请求的方式有多种,可增加技术人员生成检测请求时的可选择性。

可选的,以浏览组件为chrome(一款快速、安全且免费的网络浏览器,能很好地满足新型网站对浏览器的要求)为例,步骤s203基于反馈结果,解析页面的htmldom结构,得到目标网站对应的至少一个url链接的具体实现可以如下说明:

浏览组件可通过自身的chrome提供的api(applicationprogramminginterface,应用程序编程接口)接口将加载的目标网站的页面中的htmldom结构进行解析,解析的过程为分析htmldom结构中包含的标签类型,以及每个标签类型的属性;

此后,选取出标签类型为预设标签类型的标签,如标签类型为a、img和obj等标签,并分析选取的标签的属性中是否包含有预设属性,当包含有预设属性时,其属性值即为url链接;

举例来说,当预设标签类型为a时,分析标签类型为a的标签的各个属性,判断是否有预设属性,当包含有预设属性时,其预设属性的属性值即为url链接。

在确定所收集的至少一个url链接后,浏览组件可至少根据所收集的该至少一个url链接生成任务数据,从而在该任务数据中至少携带浏览组件收集的目标网站对应的至少一个url链接,进而将该任务数据发送至检测服务器;以便检测服务器后续可根据任务数据判断任务数据中包含的url链接是否存在漏洞。

需要说明的是,浏览器组件所发送的http请求中包含有对应所访问页面的url链接,同时,浏览组件所加载的目标网站的页面中可能嵌入有可以跳转到其他页面的链接;本发明实施例中,浏览组件所收集的url链接的数量可以为至少一个;

一方面,所收集的url链接可以包括浏览组件所加载的目标网站的页面中所嵌入的跳转到其他页面的链接;另一方面,所收集的url链接可以包括:浏览组件所加载的目标网站的页面中所嵌入的跳转到其他页面的链接,以及,浏览器组件所发送的http请求中包含的所访问页面的url链接。

由于可以分析到所访问页面中可跳转至的目标网站的其他页面,因此浏览组件收集的任务数据包含的url链接能够较大概率的覆盖目标网站的所有页面,任务数据中能够发现隐藏较深的链接的概率较高,可提升最终网站的漏洞检测结果的全面性。可见,本发明实施例提供的网站漏洞检测方法,可实现网站负担较轻的网站漏洞检测,且可极大概率的提升检测结果的全面性。

可选的,本发明实施例中的步骤s206中,任务数据存放在预先设置任务队列,任务队列中任务数据按照加入的先后顺序进行排列,即任务队列是由至少一个按照先进先出的顺序排列的任务数据组成的一个队列。

可选的,检测服务器可设置有数据缓存服务区,预先设置的任务队列可存储在该数据缓存服务区中;可选的,数据缓存服务区如redis缓存服务区,redis是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的应用程序编程接口api。

可选的,将任务数据加入到预置任务队列,是指将任务数据按照先进先出的顺序保存到任务队列中。例如,假设有任务数据a、b和c,任务数据a放入任务队列的时间早于任务数据b,任务数据b放入任务队列的时间早于任务队列c,则任务数据a、b和c在任务队列中的排列顺序为任务数据a排在任务数据b的前边,任务数据b排在任务数据c的前边。当需要对任务数据a、任务数据b和任务数据c进行网站漏洞检测时,首先对任务数据a进行网站漏洞检测,其次对任务数据b进行网站漏洞检测,再次对任务数据c进行检测。

本实施例中,任务队列是由至少一个按照先进先出的顺序排列的任务数据组成的一个队列,进而能够保证优先加入任务队列的任务数据优先进行网站漏洞检测。

可选的,本发明实施例中的步骤208,将任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值包括:

使用网站漏洞规则记录的各可控参数对应的漏洞特征值,替换任务数据中url链接对应可控参数的参数值。

即对任务数据中的每一个url链接中的每一个可控参数,将其的参数值替换为网站漏洞规则记录的对应的漏洞特征值。具体的,将url链接中的一个可控参数作为一个占位标记,则url链接中的全部的可控参数,会对应有多个占位标记,然后将每个占位标记的参数值替换为网站漏洞规则记录的与相应的占位标记对应的漏洞特征值。

举例来说,假设url链接中的可控参数的数量为两个,则对应有两个占位标记,网站漏洞规则记录的与每个占位标记对应的漏洞特征值的数量为五个,对于一个占位标记来说,用对应的五个漏洞特征值依次替换占位标记中的数值,就会相应的得到五个新的url链接。

可选的,将每个占位标记的参数值替换为网站漏洞规则记录的与相应的占位标记对应的漏洞特征值的方式为将url链接的各个可控参数拆分出来,并且将可控参数的参数值替换为网站漏洞规则记录的可控参数对应的漏洞特征值,然后将替换后的可控参数重新与url链接中的其他部分组合,形成一个完整的url链接。

本实施例中,使用网站漏洞规则记录的各可控参数对应的漏洞特征值,替换任务数据中url链接对应可控参数的参数值,进而能够去检测url是否存在网络漏洞。

可选的,本发明实施例也可不拆分url链接,直接替换url链接中的可控参数的参数值;对于这种情况,直接将漏洞特征值替换到url链接中相应的位置即可,进而也会形成检测url链接。

可选的,当使用网站漏洞规则记录的各可控参数对应的漏洞特征值,替换任务数据中url链接对应可控参数的参数值后,去判断url链接中是否存在网络漏洞时,存在下述两种情况:

如果一url链接的访问请求对应的反馈结果,与一url链接的检测url链接的检测请求对应的反馈结果不同,则说明将该url链接的参数值替换成漏洞特征值后,该url链接可被利用使得网站服务器作出与正常访问请求不同的响应反馈,则该url链接对应有可被利用的网站漏洞。

而如果一url链接的访问请求对应的反馈结果,与一url链接的检测url链接的检测请求对应的反馈结果相同,则说明将该url链接的参数值替换成漏洞特征值后,该url链接不能被利用,进而不能使得网站服务器作出与正常访问请求不同的响应反馈,则该url链接未对应有可被利用的网站漏洞。

通过判断url链接对应的检测url链接的检测请求的反馈结果与该url链接的访问请求的反馈结果是否一致,进而能够判断url链接是否存在网站漏洞。

可选的,在确定任务数据是否进行过网站漏洞检测时,本发明实施例可根据能够表示任务数据的唯一性标识来确定,任务数据的唯一性标识可以通过任务数据中记录的url链接对应的哈希字符串表示,相应的,图5中示出了历史未根据任务数据进行过网站漏洞检测的确定过程,包括以下步骤:

s501、确定任务数据中记录的url链接对应的哈希字符串;

可选的,任务数据可以采用json数据结构的数据包,该数据包可以通过预设的hosts信息,以及包含各url链接的数组的链接数据组装而成;因此当想要确定任务数据中记录的url链接对应的哈希字符串之前,需要对数据包进行解析,得到各url链接。

其中,对数据包解析的过程为提取出数据包中的各url链接。

其中,对数据包解析得到的各url链接的数据格式为字符串格式,根据每个url链接,采用哈希算法计算得到每个url链接对应的哈希字符串,其中,哈希字符串即为哈希值。哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。

s502、判断哈希字符串是否存在于已处理数组中;

当判断出哈希字符串未存在于已处理数组中,则执行步骤s503,若判断出哈希字符串存在于已处理数组中,说明历史已经根据任务数据进行过网站漏洞检测。

具体的,已处理数组记录有已进行过网站漏洞检测的url链接对应的哈希字符串。

判断哈希字符串是否存在于已处理数组中,是为了判断url链接是否已经进行过网站漏洞检测,若已经进行过网站漏洞检测,则url链接对应的哈希字符串就会存在于已处理数组中,若未进行过网站漏洞检测,则url链接对应的哈希字符串就不会存在于已处理数组中,此时还需要对url链接进行网站漏洞检测。

可选的,已处理数组可以存放在redis缓存服务模块中。已处理数组为不重复的哈希字符串的集合,在已处理数组中增加新的url链接对应的哈希字符串或者删除其中的url链接对应的哈希字符串是通过在redis缓存服务模块中增加或者删除url链接对应的哈希字符串操作实现的。

s503、确定历史未根据任务数据进行过网站漏洞检测。

具体的,若哈希字符串未存在于已处理数组中,确定历史未根据任务数据进行过网站漏洞检测。

本实施例中,能够通过判断任务数据中记录的url链接对应的哈希字符串是否存在于已处理数组中,进而能够去判断历史是否根据任务数据进行过网站漏洞检测。即通过判断任务数据中记录的url链接对应的哈希字符串是否存在于已处理数组中为判断历史是否根据任务数据进行过网站漏洞检测提供了一种判断依据。

可选的,当网站漏洞规则记录中记录有预置的http请求的包头时,步骤s209之前,还包括:

将任务数据中的http请求的包体,与网站漏洞规则记录的包头相结合;

具体的,由于在生成各检测url链接对应的检测请求时,需要有http请求的包体和包头,因此,此时需要将任务数据中的http请求的包体,与网站漏洞规则记录的包头相结合,形成一个http请求。

相应的,步骤s209的具体实现可以如下:

将结合包头和包体的http请求与各检测url链接结合,得到各检测url链接对应的检测请求。具体的,将各检测url链接添加到结合包头和包体的http请求中,形成各检测url链接对应的检测请求。

本实施例中,当网站漏洞规则记录有预置的http请求的包头时,将任务数据中的http请求的包体,与网站漏洞规则记录的包头相结合,根据结合包头和包体的http请求,生成访问各检测url链接对应的检测请求。减少了调取http请求包模板的步骤。

上文中提到的当网站漏洞规则记录中记录有预置的http请求的包头,且步骤s209之前还包括:将任务数据中的http请求的包体,与网站漏洞规则记录的包头相结合时,上文中提到的历史未根据任务数据进行过网站漏洞检测的确定过程就会有相应的改变,具体的,参照图6,历史未根据任务数据进行过网站漏洞检测的确定过程包括:

s601、确定任务数据中记录的url链接,以及http请求的包体对应的哈希字符串;

其中,哈希字符串为任务数据中记录的url链接,以及http请求的包体结合后对应的哈希字符串。

具体计算得到哈希字符串的过程请参照图5对应的实施例中的内容,在此不再赘述。

s602、判断哈希字符串是否存在于已处理数组中;

当判断出哈希字符串未存在于已处理数组中,执行步骤s603,当判断出哈希字符串已经存在于已处理数组中,说明历史已经根据任务数据已经进行过网络漏洞检测。

其中,已处理数组记录有已进行过网站漏洞检测的url链接,以及http请求的包体对应的哈希字符串;

判断哈希字符串是否存在于已处理数组中,是为了判断由url链接以及http请求的包体组成的任务数据是否已经进行过网站漏洞检测,若已经进行过网站漏洞检测,则url链接,以及http请求的包体对应的哈希字符串就会存在于已处理数组中,若未进行过网站漏洞检测,则url链接,以及http请求的包体对应的哈希字符串就不会存在于已处理数组中,此时还需要对url链接进行网站漏洞检测。

其中,已处理数组存放在redis缓存服务模块中。已处理数组为不重复的哈希字符串的集合,在已处理数组中增加新的url链接对应的哈希字符串或者删除其中的url链接对应的哈希字符串是通过增加或者删除url链接对应的哈希字符串操作实现的。

s603、确定历史未根据任务数据进行过网站漏洞检测。

具体的,若哈希字符串未存在于已处理数组中,确定历史未根据任务数据进行过网站漏洞检测。

此时,在确定网站漏洞检测结果后,在已处理数组中记录任务数据中记录的url链接,以及http请求的包体对应的哈希字符串。

本实施例中,能够通过判断任务数据中记录的url链接,以及http请求的包体对应的哈希字符串是否存在于已处理数组中,进而能够去判断历史是否根据任务数据进行过网站漏洞检测。即通过判断任务数据中记录的url链接,以及http请求的包体对应的哈希字符串是否存在于已处理数组中为判断历史是否根据任务数据进行过网站漏洞检测提供了一种判断依据。

为了本领域的技术人员清楚明白的了解本发明中的内容,现提供一个场景实施例进行解释说明。

用户a想使用浏览器访问一个页面,如娱乐新闻网页,此时浏览器接收到用户的访问命令后,根据访问命令生成访问请求,并将访问请求发送到目标网站的服务器,如搜索引擎服务器。

目标网站的服务器接收到访问请求后,反馈给浏览器一个反馈结果,浏览器根据反馈结果加载目标网站的页面的过程中,如加载娱乐新闻网页的过程中,集成在浏览器内部的收集装置,收集目标网站对应的至少一个url链接或者目标网站对应的至少一个url链接以及发送至目标网站的服务器的http请求的包体,根据收集的目标网站对应的至少一个url链接或者目标网站对应的至少一个url链接以及发送至目标网站的服务器的http请求的包体,生成任务数据,并将任务数据发送到检测服务器。

检测服务器收到任务数据后,去判断历史是否根据任务数据进行过网站漏洞检测,如果没有进行过网站漏洞检测,就将任务数据加入到预置任务队列,然后在任务队列中按照先进先出的顺序依次提取一个任务数据,将任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值,得到各url链接对应的检测url链接,并生成各检测url链接对应的检测请求,将各检测请求发送到目标网站的服务器,目标网站的服务器根据各检测请求,反馈给检测服务器一个反馈结果,然后,检测服务器对比每个url链接对应的检测url链接的检测请求的反馈结果,与该url链接的访问请求的反馈结果是否一致,若是不一致,则说明url链接存在网站漏洞,此时,可以通过自身的警报装置发出警示声音,以提醒技术人员及时发现此网站漏洞,并进行修复。

可选的,本发明的另一实施例中提供了一种检测服务器,参照图7,包括:

任务数据获取模块101,用于获取目标网站对应的任务数据,任务数据至少包括:浏览组件加载目标网站的页面的过程中,浏览组件收集的目标网站对应的至少一个统一资源定位符url链接;

队列加入模块102,用于若历史未根据任务数据进行过网站漏洞检测,将任务数据加入到预置任务队列,任务队列记录有至少一个任务数据;

任务数据调取模块103,用于根据任务队列的队列顺序,调取任务数据;

检测url链接确定模块104,用于将任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值,得到各url链接对应的检测url链接;

检测请求生成模块105,用于生成各检测url链接对应的检测请求;

检测结果确定模块106,用于根据各检测请求,确定各检测url链接对应的url链接的网站漏洞检测结果。

可选的,本发明实施例中,当所述网站漏洞规则记录有预置的各url链接的各可控参数对应的漏洞特征值时,所述检测url链接确定模块104包括:

检测url链接确定单元,用于使用所述网站漏洞规则记录的各可控参数对应的漏洞特征值,替换所述任务数据中url链接对应可控参数的参数值。

可选的,检测服务器确定历史未根据所述任务数据进行过网站漏洞检测,可通过图8所示的第一历史检测判断模块107实现,第一历史检测判断模块107的功能为:

确定所述任务数据中记录的url链接对应的哈希字符串,并判断所述哈希字符串是否存在于已处理数组中,若所述哈希字符串未存在于所述已处理数组中,则确定历史未根据所述任务数据进行过网站漏洞检测。

其中,所述已处理数组记录有已进行过网站漏洞检测的url链接对应的哈希字符串.

可选的,本发明实施例中的服务器还可包括:

记录模块,用于在确定网站漏洞检测结果后,在所述已处理数组中记录所述任务数据中记录的url链接对应的哈希字符串。

可选的,本发明实施例中,检测请求生成模块,包括:

第一检测请求生成单元,用于调取http请求包模板,根据所述http请求包模板生成访问各检测url链接对应的检测请求。

可选的,本发明实施例中,当所述任务数据还包括:浏览组件加载所述目标网站的页面的过程中,浏览组件收集的发送至所述目标网站的服务器的http请求的包体、且网站漏洞规则记录有预置的http请求的包头时,检测服务器还包括:

包体与包头结合模块,用于将所述任务数据中的http请求的包体,与所述网站漏洞规则记录的包头相结合;

相应的,检测请求生成模块,包括:

第二检测请求生成单元,用于根据结合所述包头和包体的http请求,生成访问各检测url链接对应的检测请求。

可选的,本发明实施例中,当所述任务数据还包括:浏览组件加载所述目标网站的页面的过程中,浏览组件收集的发送至所述目标网站的服务器的http请求的包体时,检测服务器确定历史未根据所述任务数据进行过网站漏洞检测,可通过图9所示的第二历史检测判断模块108实现,第二历史检测判断模块108的功能为:

确定所述任务数据中记录的url链接,以及http请求的包体对应的哈希字符串,进而判断所述哈希字符串是否存在于已处理数组中,若所述哈希字符串未存在于所述已处理数组中,则确定历史未根据所述任务数据进行过网站漏洞检测。

其中,所述已处理数组记录有已进行过网站漏洞检测的url链接,以及http请求的包体对应的哈希字符串;

可选的,本发明实施例中,检测结果确定模块可以包括:

多线程发送单元,用于使用多线程向目标网站的网站服务器并行发送各检测请求;

漏洞检测结果确定单元,用于对于一url链接,根据对应检测url链接的检测请求的反馈结果,与该url链接的访问请求的反馈结果,确定该url链接的网站漏洞检测结果。

由于本发明实施例至少通过浏览组件加载目标网站的页面的过程中收集的url链接构成任务数据,从而基于任务数据实现网站漏洞检测;因此可在浏览组件对网站的正常访问过程中,获取到检测网站漏洞所使用的任务数据,网站只需要应对正常的访问,网站的流量负担较轻。

此外,浏览组件收集的任务数据包含的url链接可能不仅仅包含一些预设的url链接,而且包含人工输入的一些url链接,这样会对网站的访问所涉及的网站页面链接更为全面,发现隐藏较深的链接的概率较高,可提升最终网站的漏洞检测结果的全面性。可见,本发明实施例提供的网站漏洞检测方法,可实现网站负担较轻,且检测结果的全面性较高的网站漏洞检测。

需要说明的是,本实施例中的各个模块及单元的工作过程,请参照上述实施例中对应的内容,在此不再赘述。

可选的,本发明的另一实施例中提供了一种网站漏洞检测系统,包括:

浏览组件,用于在加载所述目标网站的页面的过程中,收集所述目标网站对应的至少一个统一资源定位符url链接;根据所收集的url链接生成目标网站对应的任务数据,将所述任务数据发送至服务器;

服务器,用于获取所述浏览组件发送的任务数据;若历史未根据所述任务数据进行过网站漏洞检测,将所述任务数据加入到预置任务队列,所述任务队列记录有至少一个任务数据;根据所述任务队列的队列顺序,调取所述任务数据;将所述任务数据中的各url链接的参数值替换成,预置的网站漏洞规则中记录的对应漏洞特征值,得到各url链接对应的检测url链接;生成各所述检测url链接对应的检测请求;根据各检测请求,确定各检测url链接对应的url链接的网站漏洞检测结果。

由于本发明实施例至少通过浏览组件加载目标网站的页面的过程中收集的url链接构成任务数据,从而基于任务数据实现网站漏洞检测;因此可在浏览组件对网站的正常访问过程中,获取到检测网站漏洞所使用的任务数据,网站只需要应对正常的访问,网站的流量负担较轻。可见,本发明实施例提供的网站漏洞检测方法,可实现网站负担较轻的网站漏洞检测。

此外,本发明实施例对网站的访问所涉及的网站页面链接更为全面,发现隐藏较深的链接的概率较高,可提升最终网站的漏洞检测结果的全面性。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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