一种网站脆弱性的检测方法、系统及相关装置与流程

文档序号:14129401阅读:196来源:国知局

本申请涉及网站漏洞检测技术领域,特别涉及一种网站脆弱性的检测方法、系统、装置及计算机可读存储介质。



背景技术:

随着互联网的高速发展,面向互联网的业务越来越多,保证互联网业务的安全也越来越重要。由于针对互联网业务的渗透频繁发生、黑客技术的不断发展、0day漏洞(指系统商在知晓并发布相关补丁前就被掌握或者公开的漏洞信息)事件的频频爆发,企业越来越重视互联网业务的安全。

为解决企业互联网业务的安全问题,很多安全企业开始提供secaas(securityasaservice,安全即服务,基于云计算方式提供的信息安全服务)的相关服务,其中一种为网站脆弱性检测。网站脆弱性检测主要用于为用户提供渗透检测服务,帮助用户提前发现隐藏的安全隐患。

现有的网站脆弱性检测机制存在一些缺点,其一,漏洞检测方式不全面:按照漏洞的检测方式大体分为两类,一类系统侧重于检测通用漏洞,另一类系统侧重于检测常规漏洞,前者对于未使用通用框架和建站组件搭建的网站检测效果较差,后者则存在检测行为单一,易漏掉复杂和组合攻击形成的漏洞;其二,检测时间不可控:在利用模糊检测对网站进行全面检测时,整体检测时间偏长,无法及时使用户得到目标网站当前的安全情况;其三,无法进行持续性监测:现有的网站脆弱性检测机制大多为一次性的,针对相同网站的第二次检测会完全抛弃第一次的检测结果。综上,现有的网站脆弱性检测方法实际使用效果不好、客户体验较差。

所以,如何克服现有网站脆弱性检测方法存在的各项技术缺陷,提供一种更科学、更全面的漏洞检测检测方式,且能够为客户提供持续性的网站脆弱性监测的网站脆弱性检测机制是本领域技术人员亟待解决的问题。



技术实现要素:

本申请的目的是提供一种网站脆弱性的检测方法,集成了通用漏洞和常规漏洞的检测,利用目标网站的特征信息和获取的http请求进行通用漏洞检测、利用http请求和payload插入机制进行常规漏洞检测,为网站提供了更全面的漏洞检测,对于经过首次漏洞检测发现的漏洞,还设置有漏洞复测机制,可以向客户反馈真实的漏洞修复情况,提升了客户的使用体验和满意度。

本申请的另一目的在于提供了一种网站脆弱性的检测系统、装置及计算机可读存储介质。

为实现上述目的,本申请提供一种网站脆弱性的检测方法,该检测方法包括:

利用预设数量的网络爬虫在目标网站执行预设深度的数据爬取操作,得到特征信息和http请求;

根据所述特征信息和所述http请求确定所述目标网站包含的通用漏洞,并选取相应的主动检测插件对所述通用漏洞进行检测,得到通用漏洞检测结果;

根据所述http请求和预设的payload插入机制选用相应的模糊检测插件对所述目标网站执行常规漏洞检测操作,得到常规漏洞检测结果;

当漏洞修复完毕后,根据所述通用漏洞检测结果和所述常规漏洞检测结果选用相应的主动检测插件和模糊检测插件进行漏洞复测。

可选的,利用预设数量的网络爬虫在目标网站执行预设深度的数据爬取操作,得到特征信息和http请求,包括:

利用所述网络爬虫爬取所述目标网站的首页特征信息和预设目标路径下的页面特征信息;

根据所述首页特征信息和所述页面特征信息确定所述目标网站使用的通用组成框架和建站组件信息;

获取执行所述数据爬取操作的过程中得到的http请求。

可选的,根据所述特征信息和所述http请求确定所述目标网站包含的通用漏洞,并选取相应的主动检测插件对所述通用漏洞进行检测,得到通用漏洞检测结果,包括:

根据所述通用组成框架和所述建站组件信息确定对应的已公开通用漏洞;

对所述http请求执行特征提取操作,得到请求特征,并根据所述请求特征确定对应的已公开通用漏洞;

根据所述已公开通用漏洞生成相应的无害攻击包,并利用所述无害攻击包最终确认所述目标网站存在的通用漏洞,得到所述通用漏洞检测结果。

可选的,根据所述http请求和预设的payload插入机制选用相应的模糊检测插件对所述目标网站执行常规漏洞检测操作,得到常规漏洞检测结果,包括:

将所述payload插入机制按插入点的不同划分出第一预设数量的payload插入种类;

将所述payload插入机制中的payload按常规漏洞隐蔽性的不同划分出第二预设数量的payload等级;

根据所述http请求中包含的请求参数和接收到的payload插入种类选择信息和payload等级选择信息生成相应的模糊检测插件;

利用所述模糊检测插件将相应的payload注入所述目标网站,并根据所述目标网站的响应信息确定是否存在常规漏洞,得到所述常规漏洞检测结果。

可选的,根据所述通用漏洞检测结果和所述常规漏洞检测结果选用相应的主动检测插件和模糊检测插件进行漏洞复测,包括:

提取所述通用漏洞检测结果和所述常规漏洞检测结果中包含的已公开通用漏洞和常规漏洞,以及对应的主动检测插件和模糊检测插件;

判断是否满足预设的漏洞复测触发条件;其中,所述漏洞复测触发条件包括时间触发条件和事件触发条件;

若是,则调用相同的主动检测插件和模糊检测插件对所述目标网站进行所述漏洞复测。

可选的,该检测方法还包括:

根据所述payload插入种类选择信息对所述http请求执行去重操作,以提高检测效率;

记录并存储所述通用漏洞检测结果和所述常规漏洞检测结果,得到首次漏洞检测日志;

根据所述漏洞复测的测试结果生成漏洞复测日志;

根据所述首次漏洞检测日志和所述漏洞复测日志生成漏洞检测报告,并通过预设路径发送所述漏洞检测报告。

为实现上述目的,本申请还提供了一种网站脆弱性的检测系统,该检测系统包括:

数据爬取单元,用于利用预设数量的网络爬虫在目标网站执行预设深度的数据爬取操作,得到特征信息和http请求;

通用漏洞检测单元,用于根据所述特征信息和所述http请求确定所述目标网站包含的通用漏洞,并选取相应的主动检测插件对所述通用漏洞进行检测,得到通用漏洞检测结果;

常规漏洞检测单元,用于根据所述http请求和预设的payload插入机制选用相应的模糊检测插件对所述目标网站执行常规漏洞检测操作,得到常规漏洞检测结果;

漏洞复测单元,用于根据所述通用漏洞检测结果和所述常规漏洞检测结果选用相应的主动检测插件和模糊检测插件进行漏洞复测。

可选的,所述数据爬取单元包括:

页面特征爬取子单元,用于利用所述网络爬虫爬取所述目标网站的首页特征信息和预设目标路径下的页面特征信息;

框架及组件确定子单元,用于根据所述首页特征信息和所述页面特征信息确定所述目标网站使用的通用组成框架和建站组件信息;

请求获取子单元,用于获取执行所述数据爬取操作的过程中得到的http请求。

可选的,所述通用漏洞检测单元包括:

第一通用漏洞确定子单元,用于根据所述通用组成框架和所述建站组件信息确定对应的已公开通用漏洞;

第二通用漏洞确定子单元,用于对所述http请求执行特征提取操作,得到请求特征,并根据所述请求特征确定对应的已公开通用漏洞;

通用漏洞检测子单元,用于根据所述已公开通用漏洞生成相应的无害攻击包,并利用所述无害攻击包最终确认所述目标网站存在的通用漏洞,得到所述通用漏洞检测结果。

可选的,所述常规漏洞检测单元包括:

插入种类划分子单元,用于将所述payload插入机制按插入点的不同划分出第一预设数量的payload插入种类;

等级划分子单元,用于将所述payload插入机制中的payload按常规漏洞隐蔽性的不同划分出第二预设数量的payload等级;

模糊插件生成子单元,用于根据所述http请求中包含的请求参数和接收到的payload插入种类选择信息和payload等级选择信息生成相应的模糊检测插件;

常规漏洞检测子单元,用于利用所述模糊检测插件将相应的payload注入所述目标网站,并根据所述目标网站的响应信息确定是否存在常规漏洞,得到所述常规漏洞检测结果。

可选的,所述漏洞复测单元包括:

提取子单元,用于提取所述通用漏洞检测结果和所述常规漏洞检测结果中包含的已公开通用漏洞和常规漏洞,以及对应的主动检测插件和模糊检测插件;

触发判断子单元,用于判断是否满足预设的漏洞复测触发条件;其中,所述漏洞复测触发条件包括时间触发条件和事件触发条件;

复测子单元,用于调用相同的主动检测插件和模糊检测插件对所述目标网站进行所述漏洞复测。

可选的,该检测系统还包括:

去重处理单元,用于根据所述payload插入种类选择信息对所述http请求执行去重操作,以提高检测效率;

首次检测记录单元,用于记录并存储所述通用漏洞检测结果和所述常规漏洞检测结果,得到首次漏洞检测日志;

复测记录单元,用于根据所述漏洞复测的测试结果生成漏洞复测日志;

检测报告生成单元,用于根据所述首次漏洞检测日志和所述漏洞复测日志生成漏洞检测报告,并通过预设路径发送所述漏洞检测报告。

为实现上述目的,本申请还提供了一种网站脆弱性的检测装置,该检测装置包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述内容所描述的网站脆弱性检测方法的步骤。

为实现上述目的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述内容所描述的网站脆弱性检测方法的步骤。

本申请所提供的一种网站脆弱性的检测方法,利用预设数量的网络爬虫在目标网站执行预设深度的数据爬取操作,得到特征信息和http请求;根据所述特征信息和所述http请求确定所述目标网站包含的通用漏洞,并选取相应的主动检测插件对所述通用漏洞进行检测,得到通用漏洞检测结果;根据所述http请求和预设的payload插入机制选用相应的模糊检测插件对所述目标网站执行常规漏洞检测操作,得到常规漏洞检测结果;当漏洞修复完毕后,根据所述通用漏洞检测结果和所述常规漏洞检测结果选用相应的主动检测插件和模糊检测插件进行漏洞复测。

显然,本申请所提供的技术方案,集成了通用漏洞和常规漏洞的检测,利用目标网站的特征信息和获取的http请求进行通用漏洞检测、利用http请求和payload插入机制进行常规漏洞检测,为网站提供了更全面的漏洞检测,对于经过首次漏洞检测发现的漏洞,还设置有漏洞复测机制,可以向客户反馈真实的漏洞修复情况,提升了客户的使用体验和满意度。本申请同时还提供了一种网站脆弱性的检测系统、装置及计算机可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

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

图1为本申请实施例所提供的一种网站脆弱性的检测方法的流程图;

图2为本申请实施例所提供的另一种网站脆弱性的检测方法的流程图;

图3为本申请实施例所提供的网站脆弱性的检测方法中一种生成漏洞检测报告的流程图;

图4为本申请实施例所提供的一种网站脆弱性的检测系统的结构框图。

具体实施方式

本申请的核心是提供一种网站脆弱性的检测方法、系统、装置及计算机可读存储介质,集成了通用漏洞和常规漏洞的检测,利用目标网站的特征信息和获取的http请求进行通用漏洞检测、利用http请求和payload插入机制进行常规漏洞检测,为网站提供了更全面的漏洞检测,对于经过首次漏洞检测发现的漏洞,还设置有漏洞复测机制,可以向客户反馈真实的漏洞修复情况,提升了客户的使用体验和满意度。

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

下面对本申请中出现的一些本领域专用技术名词进行解释:

通用漏洞:在常用的操作系统,系统组件,重要的框架以及应用中发现的,广泛认同的或已发现的信息安全漏洞。

常规漏洞:包括sql注入(通过把sql命令插入到网页表单提交、输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令)、xss注入(crosssitescripting,跨站脚本攻击,恶意攻击者往网页页面里插入恶意的script代码,当用户浏览该页之时,嵌入网页页面里的恶意script代码会被执行,从而达到恶意攻击用户的目的)等在内的常见漏洞,通常通过发送异常数据检测漏洞是否存在。

其中,sql的英文全称为:structuredquerylanguage,中文名为:结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。

script,意味脚本,是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。

http请求,是指从客户端到服务器端的请求消息,当浏览器向web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,http请求信息由三部分组成:(1)请求方法uri(uniformresourceidentifier,统一资源标识符)协议/版本(2)请求头(requestheader)(3)请求正文。

与http请求对应的还包括响应数据。

以下结合图1,图1为本申请实施例所提供的一种网站脆弱性的检测方法的流程图。

其具体包括以下步骤:

s101:利用预设数量的网络爬虫在目标网站执行预设深度的数据爬取操作,得到特征信息和http请求;

本步骤旨在利用网络爬虫在需要进行脆弱性检测的网站进行数据爬取操作,以得到目标网站的特征信息和http请求。其中,为增加数据爬取效率,可以使用多个网络爬虫,并为其分配不同的数据爬取任务。同时,还可以对在目标网站上数据的爬取深度进行限制,因为无需对整个网站的所有信息都进行爬取,大多数情况下首页上和一定深度下的网页页面上包含的特征和http请求足以反映大多数易出现的网站漏洞,如果一定深度下的网页页面上存在漏洞,更深层的网页页面上通常也会存在相同的漏洞。

具体的,设定的网络爬虫数量、数据爬取深度均可以自行设定,应视实际情况下用户设定的漏洞检测时间、漏洞检测全面程度、实体硬件的负载性能上限等综合考虑和选择最合适的方案。

其中,该特征信息是用于反映目标网站的搭建信息,以用于识别目标网站在搭建过程中所使用的组件框架、建站组件等。举个例子,现在一些规模较小的企业在搭建自己的网站过程中通常使用了流传较广的网站搭建模板,只需要修改模板中的一些内容,即可成为一个简单的企业网站,而在此模板基础上搭建起的网站则拥有相同的组件框架和建站组件,那么它们也理应拥有相同的网站漏洞。同时,一些商业付费模板还持续更新以修复上一版本的漏洞,形成1.1、1.2版本的模板,通过特征信息的识别可以得到目标网站是否是存在通用的组件框架和建站组件,以便快速寻找相同组件框架、建站组件以及模板版本具有的已公开漏洞,并进行相应的漏洞测试。

使用http请求来检测目标网站漏洞的方式则区别于特征信息,它并不是直接确定拥有哪些已公开漏洞,而是通过一些常规漏洞攻击手段,诸如sql注入、xss注入等来试探是否出现异常的响应数据,以此寻找目标网站的常规漏洞。具体如何进行常规漏洞的检测,会在后续实施例中进行详细介绍。

s102:根据特征信息和http请求确定目标网站包含的通用漏洞,并选取相应的主动检测插件对通用漏洞进行检测,得到通用漏洞检测结果;

在s101的基础上,本步骤旨在确定目标网站中包含的通用漏洞,结合对通用漏洞的定义,本步骤使用爬取得到的目标网站特征信息和http请求。

根据特征信息确定出搭建目标网站所使用的组成框架和建站组件是否为广泛使用、已公开的通用组成框架和建站组件,若是,则可以根据确定的通用组成框架和建站组件寻找到已公开通用漏洞。在确定了已公开通用漏洞的基础上,基于每个确定的已公开通用漏洞选择相应的主动检测插件,用于对目标网站是否真实存在这些通用漏洞进行核实,以排除各环节异常造成的漏洞误判现象。

由于只能根据公开的通用漏洞库确定目标网站中包含哪些已公开通用漏洞,而一旦该漏洞公开,该漏洞的检测方式也会相应给出,该主动检测插件就是基于公开漏洞的检测方式生成的。具体的,该主动检测插件可以为具有针对性的攻击包,若该攻击包生效,则说明对应的漏洞真实存在。由于本申请提供的目标网站的脆弱性检测,目的重在检测而非攻击,在主动检测插件的选用上,可尽量选用无害的手段,以防止对目标网站造成破坏。

具体的,该主动检测插件的表现形式多种多样,并不仅限于攻击包的形式,同时,还可以为每个不同的通用漏洞设定对应的主动检测插件,使其相互独立,运行时互不干扰,以使能够并行检测,提供漏洞检测效率。当然,根据用户的需要、实体硬件性能限制、目标网站的负载能力等,也可以进行串行漏洞检测,即每次启用一个或少数个主动检测插件对目标网站进行漏洞检测,以不对目标网站正常运行造成影响。

s103:根据http请求和预设的payload插入机制选用相应的模糊检测插件对目标网站执行常规漏洞检测操作,得到常规漏洞检测结果;

在s101的基础上,本步骤旨在确定目标网站中包含的常规漏洞,结合对常规漏洞的定义,本步骤使用爬取得到的目标网站的http请求。

对于常规漏洞的检测,不可避免的涉及到payload插入机制。计算机病毒通常会在目标计算计算性质一些有害的或者恶性的操作,在病毒代码中实现这个功能的部分叫做“payload,有效负载”。payload可以实现任何运行在受害者环境中的程序所能做的事情,并且能够执行动作包括破坏文件删除文件,向病毒的作者或者任意的接收者发送敏感信息,以及提供通向被感染计算机的后门等操作。

根据http请求的组成结构,其中有很多地方可以进行payload的插入,其中的一种分类方法是根据插入位置的将其分为三类:路径类payload插入、文件类payload插入以及其它类payload插入。路径类payload插入的插入位置在http请求的路径信息中、文件类payload插入的插入位置在http请求末尾的文件名上、其它类payload插入则包含http请求的任一位置。

下面通过一个例子进行阐述:http://www.abc.com/xxx/yyy/zzz.php,这个http请求中的“http://www.abc.com”为首页地址、“xxx”为首页下的一个路径、“yyy”为“xxx”下的一个路径、“zzz.php”为“yyy”路径下的一个文件,在此例子中,在首页地址、“xxx”、“yyy”各自的后面进行payload插入均属于路径类payload插入,在“zzz.php”后面进行payload插入则属于文件类payload插入,而这两种均属于其它类payload插入,即其它类payload插入不仅包含路径类payload插入和文件类payload插入,还包括在其它位置进行payload插入。

插入的payload的表现形式多种多样,例如较简单的单引号、双引号、and1=1、and1=2,稍复杂的’)and1=1or(‘xy、or1=1、’orderby3,以及更复杂的’))and1=1or((‘xy、;updatet1setcontent='aaaaaaaaa',不同复杂程度的payload可用于检测不同隐蔽程度的常规漏洞,可据此划分payload插入的等级,由此控制进行常规漏洞的模糊检测时间。

当然,上述的payload插入位置分类方法、payload等级划分方法并不是唯一的,可以根据不同的要求、结合实际情况进行最合适的划分和设定,以更好的提供常规漏洞的检测效率。

进一步的,根据上面提到的payload插入种类划分方法、payload等级划分方法可以生成相应的模糊检测插件,用于发现目标网站潜在的常规漏洞。同时,该模糊检测插件也可以像s102中的主动检测插件一样,并行或串行使用,在此不再赘述。

更进一步的,在划分了payload插入种类的基础上,还可以根据不同的payload插入种类对http请求进行去重处理,以提高常规漏洞检测效率,会在后续实施例中进行详细阐述。

s104:当漏洞修复完毕后,根据通用漏洞检测结果和常规漏洞检测结果选用相应的主动检测插件和模糊检测插件进行漏洞复测。

在s102、s103确定目标网站存在的通用漏洞和常规漏洞后,必定要进行相应漏洞的修复工作,本领域对于漏洞的修复技术已经公开较为充分,本申请的侧重点也并不在如何进行漏洞修复。本步骤建立在接收到输入的漏洞修复完整信息后,为目标网站提供持续的脆弱性监测,即通过漏洞复测的方式进行。

通过从s102和s103生成的通用漏洞检测结果和常规漏洞检测结果中寻找到当时选用的主动检测插件和模糊检测插件,再次调用这些主动检测插件和模糊检测插件来进行目标网站的漏洞复测。

进一步的,还可以将每一步骤得到的检测结果汇总生成该网站的漏洞检测报告,以据此向客户提供相应的漏洞修复建议。

基于上述技术方案,本申请实施例提供的一种网站脆弱性的检测方法,集成了通用漏洞和常规漏洞的检测,利用目标网站的特征信息和获取的http请求进行通用漏洞检测、利用http请求和payload插入机制进行常规漏洞检测,为网站提供了更全面的漏洞检测,对于经过首次漏洞检测发现的漏洞,还设置有漏洞复测机制,可以向客户反馈真实的漏洞修复情况,提升了客户的使用体验和满意度。

以下结合图2,图2为本申请实施例所提供的另一种网站脆弱性的检测方法的流程图。

其具体包括以下步骤:

s201:利用网络爬虫爬取目标网站的首页特征信息和预设目标路径下的页面特征信息;

s202:根据首页特征信息和页面特征信息确定目标网站使用的通用组成框架和建站组件信息;

由于网站的首页特征信息和特定路径下的页面特征信息最能够反馈出搭建该网站所使用的通用组成框架和建站组件信息,故s201和s202利用网络爬虫获取这些信息来确定目标网站的特征信息。

s203:获取执行数据爬取操作的过程中得到的http请求;

s204:根据通用组成框架和建站组件信息确定对应的已公开通用漏洞;

本步骤旨在根据确定出的通用组成框架和建站组件信息确定对应的已公开通用漏洞,内容与s101与s102中部分内容相同,可参见相应部分,在此不再赘述。

s205:对http请求执行特征提取操作,得到请求特征,并根据请求特征确定对应的已公开通用漏洞;

本步骤基于s203中获得的http请求,旨在从http请求提取得到请求特征与已公开通用漏洞库中包含的请求特征库进行请求特征的比对,确定相应的已公开通用漏洞。

s206:根据已公开通用漏洞生成相应的无害攻击包,并利用无害攻击包最终确认目标网站存在的通用漏洞,得到通用漏洞检测结果;

本步骤旨在采用无害攻击包作为每个主动检测漏洞的具体表现形式,以最终确认目标网站存在的通用漏洞。

s207:将payload插入机制按插入点的不同划分出第一预设数量的payload插入种类;将payload插入机制中的payload按常规漏洞隐蔽性的不同划分出第二预设数量的payload等级;

本步骤旨在根据不同的实际情况、不同的要求进行payload插入种类和payload等级的划分,目的在于通过划分不仅覆盖所有的payload插入情况,并可以为客户提供不同的选择机制,以控制常规漏洞的检测程度和时间,及时获取到目标网站的安全情况。

此处的第一预设数量和第二预设数量可以根据实际情况灵活设定,此处并不做具体限定。

s208:根据http请求中包含的请求参数和接收到的payload插入种类选择信息和payload等级选择信息生成相应的模糊检测插件;

s209:利用模糊检测插件将相应的payload注入目标网站,并根据目标网站的响应信息确定是否存在常规漏洞,得到常规漏洞检测结果;

在s207的基础上,s208根据接收到的payload插入种类选择信息和payload等级选择信息确定用户选择的常规漏洞检测程度,并依据该常规漏洞检测程度生成相应的模糊检测插件,s209则利用该模糊检测插件对http请求中包含的请求参数进行常规漏洞检测,并同时依据发回的响应数据来判定是否存在常规漏洞。

s210:提取通用漏洞检测结果和常规漏洞检测结果中包含的已公开通用漏洞和常规漏洞,以及对应的主动检测插件和模糊检测插件;

s211:判断是否满足预设的漏洞复测触发条件;

s212:调用相同的主动检测插件和模糊检测插件对目标网站进行漏洞复测。

s210、s211以及s212提供了一种如何进行漏洞复测的方式,其中,预设的漏洞复测触发条件的表现形式有很多,例如时间触发方式、事件触发方式等,在后续的系统实施例中会进行详细阐述。

以下结合图3,图3为本申请实施例所提供的网站脆弱性的检测方法中一种生成漏洞检测报告的流程图。

本实施例基于其它实施例对如何生成漏洞检测报告进行了说明,其它步骤与其它实施例大体相同,可参见其它实施例中相应部分,在此不再赘述。

其具体包括以下步骤:

s301:记录并存储通用漏洞检测结果和常规漏洞检测结果,得到首次漏洞检测日志;

s302:根据漏洞复测的测试结果生成漏洞复测日志;

s303:根据首次漏洞检测日志和漏洞复测日志生成漏洞检测报告,并通过预设路径发送漏洞检测报告。

本实施例首先记录通用漏洞检测结果和常规漏洞检测结果,得到目标网站的首次漏洞检测日志,接着根据漏洞复测的测试结果生成漏洞复测日志,最终根据首次漏洞检测日志和漏洞复测日志生成漏洞检测报告,并通过多种路径发送漏洞检测报告,例如邮箱、即时通讯软件、管理平台等等,在该报告中还可以根据两次漏洞检测的结果提供更优的漏洞修复建议,提升客户满意程度和使用体验。

基于上述技术方案,本申请实施例提供的一种网站脆弱性的检测方法,其集成了通用漏洞和常规漏洞的检测,为网站提供了更全面的漏洞检测方式:对于通用漏洞的测试,通过网站信息和请求特征,选择相应的主动检测插件;对于常规漏洞的模糊检测,将payload插入机制划分为不同的种类和等级,用户可以根据需要选择不同的测试方式和等级,并由此控制目标网站的漏洞检测时间,而对于经过首次漏洞检测发现的漏洞,设置有漏洞复测机制,以及时向用户反馈真实的漏洞修复情况,提升了客户的使用体验和满意度。

因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。

下面请参见图4,图4为本申请实施例所提供的一种网站脆弱性的检测系统的结构框图。

该检测系统可以包括:

数据爬取单元100,用于利用预设数量的网络爬虫在目标网站执行预设深度的数据爬取操作,得到特征信息和http请求;

通用漏洞检测单元200,用于根据特征信息和http请求确定目标网站包含的通用漏洞,并选取相应的主动检测插件对通用漏洞进行检测,得到通用漏洞检测结果;

常规漏洞检测单元300,用于根据http请求和预设的payload插入机制选用相应的模糊检测插件对目标网站执行常规漏洞检测操作,得到常规漏洞检测结果;

漏洞复测单元400,用于根据通用漏洞检测结果和常规漏洞检测结果选用相应的主动检测插件和模糊检测插件进行漏洞复测。

其中,数据爬取单元100包括:

页面特征爬取子单元,用于利用网络爬虫爬取目标网站的首页特征信息和预设目标路径下的页面特征信息;

框架及组件确定子单元,用于根据首页特征信息和页面特征信息确定目标网站使用的通用组成框架和建站组件信息;

请求获取子单元,用于获取执行数据爬取操作的过程中得到的http请求。

其中,通用漏洞检测单元200包括:

第一通用漏洞确定子单元,用于根据通用组成框架和建站组件信息确定对应的已公开通用漏洞;

第二通用漏洞确定子单元,用于对http请求执行特征提取操作,得到请求特征,并根据请求特征确定对应的已公开通用漏洞;

通用漏洞检测子单元,用于根据已公开通用漏洞生成相应的无害攻击包,并利用无害攻击包最终确认目标网站存在的通用漏洞,得到通用漏洞检测结果。

其中,常规漏洞检测单元300包括:

插入种类划分子单元,用于将payload插入机制按插入点的不同划分出第一预设数量的payload插入种类;

等级划分子单元,用于将payload插入机制中的payload按常规漏洞隐蔽性的不同划分出第二预设数量的payload等级;

模糊插件生成子单元,用于根据http请求中包含的请求参数和接收到的payload插入种类选择信息和payload等级选择信息生成相应的模糊检测插件;

常规漏洞检测子单元,用于利用模糊检测插件将相应的payload注入目标网站,并根据目标网站的相应信息确定是否存在常规漏洞,得到常规漏洞检测结果。

其中,漏洞复测单元400包括:

提取子单元,用于提取通用漏洞检测结果和常规漏洞检测结果中包含的已公开通用漏洞和常规漏洞,以及对应的主动检测插件和模糊检测插件;

触发判断子单元,用于判断是否满足预设的漏洞复测触发条件;其中,漏洞复测触发条件包括时间触发条件和事件触发条件;

复测子单元,用于调用相同的主动检测插件和模糊检测插件对目标网站进行漏洞复测。

进一步的,该检测系统还可以包括:

去重处理单元,用于根据payload插入种类选择信息对http请求执行去重操作,以提高检测效率;

首次检测记录单元,用于记录并存储通用漏洞检测结果和常规漏洞检测结果,得到首次漏洞检测日志;

复测记录单元,用于根据漏洞复测的测试结果生成漏洞复测日志;

检测报告生成单元,用于根据首次漏洞检测日志和漏洞复测日志生成漏洞检测报告,并通过预设路径发送漏洞检测报告。

以上各单元可以应用于以下的一个具体的实际例子中:

本实施例提供的网站脆弱性的检测系统由两部分组成,漏洞检测系统和漏洞复测系统,其中,漏洞检测系统,对网站进行漏洞扫描,并将检测出的网站漏洞存入数据库;漏洞复测系统,根据设置,从数据库中取出漏洞数据,复测漏洞是否修复。

漏洞检测系统的具体过程及方法如下:

1、数据爬取单元利用网络爬虫对待检测的网站进行一定深度的爬取,并记录爬取的http请求和响应;

2、数据爬取单元通过检测网站首页特征或检测特定路径页面特征等,识别出网站使用的框架和建站组件等信息;

3、通用漏洞检测单元包含一系列的主动检测插件,每个主动插件都包含一个漏洞检测逻辑,主动插件通过向特定页面发送攻击包,验证漏洞是否存在。

通用漏洞检测单元通过网站和http请求的特点筛选出符合要求的主动检测插件,检测网站是否存在漏洞。当有新的通用漏洞公开时,会及时添加主动插件,保证通用漏洞检测单元可检测出最新的漏洞。

通用漏洞检测单元通过两种方式筛选主动插件。由于每个主动插件都用于检测某一种或多种框架及建站组件,且数据爬取单元已经识别出了网站的框架和建站组件等信息。通用漏洞检测单元通过识别出的网站信息,选出相应的主动检测插件对网站进行检测。

其次,大部分通用漏洞都是特定页面下的漏洞,因此主动插件基本都是通过请求特定页面,探测漏洞情况。对于每一个http请求,通用漏洞检测单元会根据请求特征,识别出该请求是否公开过通用漏洞。若公开过漏洞,则调用相应的主动检测插件进行检测。

识别请求页面是否存在已公开漏洞的方法如下:

(1)对于每一个主动检测插件,若其检测的某一特定页面,则对访问该页面的http请求提取特征。特征包括页面请求的相对路径、请求参数名称等信息。将这些特征存储为规则,记录下来;(2)对于爬到的每一个http请求,搜索是否有规则与该请求相符;(3)当搜索到相符的规则时,则用该规则对应的主动检测插件,检测该请求页面。

主动检测插件为热插拔式,当有新的漏洞爆发时,会及时更新插件,保证网站通用漏洞检测的全面。由于网站脆弱性监测系统运行在服务器端,因此,添加插件的过程,对用户来讲是透明的。

4、常规漏洞检测单元中的插件为模糊检测插件。每一个模糊检测插件都检测某一类漏洞,其通过对http请求的各个可能的输入点附加相关漏洞的payload进行模糊测试,发现潜在的漏洞。

根据模糊检测插件注入攻击数据的位置,将模糊检测插件分为三种类型,路径类插件、文件类插件、其他插件。路径类插件的注入点仅在路径上,相同路径的不同请求,对于路径类插件而言相同;文件类插件的注入点在路径和文件上;而其他插件的注入点包括路径、文件和请求参数等。

常规漏洞检测单元在检测每个http请求页面之前,先对http请求进行去重。对应模糊检测插件的类型,去重方法也分为三类,分别为路径去重、文件去重、请求去重。

路径去重将http请求的链接路径作为特征,判断之前是否测试过该路径下的请求。输入请求之后,会检查之前测试过的请求是否有相同的路径,若没有相同路径,那么将该请求输出到插件,若已处理过重复路径的请求,那么过滤掉该请求。

如依次输入:

http://www.abc.com/xxx/yyy/zzz.php?a=5

http://www.abc.com/xxx/yyy/mm.php?b=5

http://www.abc.com/xxx/yyy/zzz.php?c=5

由于,三个链接的路径特征皆为http://www.abc.com/xxx/yyy/,因此,去重后结果为仅存在:http://www.abc.com/xxx/yyy/zzz.php?a=5。

文件去重将http请求的链接路径及文件名作为特征,判断是否测试过针对该文件的请求。输入请求之后,会检查之前的请求是否有相同的路径和文件名,若没有,那么将该请求输出到插件,若已处理过相同特征的请求,那么过滤掉该请求。

如依次输入:

http://www.abc.com/xxx/yyy/zzz.php?a=5

http://www.abc.com/xxx/yyy/mm.php?b=5

http://www.abc.com/xxx/yyy/zzz.php?c=5

第一个链接和第三个链接的路径及文件名相同,因此,去重后结果为:

http://www.abc.com/xxx/yyy/zzz.php?a=5

http://www.abc.com/xxx/yyy/mm.php?b=5

请求去重以请求方法、请求url和请求中包含的参数为特征,判断是否测试过类似请求,同理,检查每个输入的请求与之前的请求是否有相同的特征,若没有,输出该请求到插件,反之,过滤掉该请求。

常规漏洞检测单元中的模糊检测插件,根据插件类型,选择不同的去重方法。如,敏感文件发现插件的原理是,在各个路径后添加敏感文件名,并根据网站响应判断漏洞是否存在。由于,注入点仅在请求的路径上,敏感文件发现插件为路径类插件,去重方式选择路径去重。而sql注入检测插件、xss注入检测插件会在请求的每一个路径和参数中都注入测试payload,因此为其他插件,选择请求去重方法。

同样,模糊测试中的插件也可设计为热插拔式,这样,当有新的漏洞类型或漏洞检测方法时,可以及时优化改进插件。

每一个模糊检测插件会有多个等级的测试payload,对于每一个待检测的http请求,插件会根据用户选择的测试等级,进行payload的筛选。以sql注入插件为例,可以将其payload分为三个级别,第一级别用于发现漏洞出现概率较高且隐蔽性较差的漏洞,如单引号、双引号、and1=1、and1=2等;第二级别用于发现出现概率一般且较隐蔽的漏洞,如’)and1=1or(‘xy、or1=1、’orderby3--等;第三级别用于发现出现概率较低但是隐藏较深的漏洞,如’))and1=1or((‘xy、;updatet1setcontent='aaaaaaaaa'。如用户选择测试等级为二,那么注入级别为一和级别为二的payload,级别为三的payload不会发送检测。

无论是主动检测插件还是模糊检测插件,各个插件皆相互独立,不依赖其他插件的检测结果,因此,插件可以并行运行,缩短检测时间。

漏洞复测系统获取漏洞检测系统发现的漏洞,根据用户需要,复测漏洞的修复情况,并通过输出复测报告等方式,告知用户漏洞修复情况。

具体过程如下:

1、漏洞复测系统获取漏洞检测系统发现的网站漏洞。

2、根据用户的复测需求,触发复测过程,复测该用户网站的漏洞。

对于通用漏洞检测模块发现的漏洞,再次调用对应的检测插件进行检测。

对于常规漏洞检测模块发现的漏洞,根据漏洞详情等确定漏洞的检测方式,根据原始请求、漏洞对应的测试数据、漏洞详情等信息,重新构造可触发漏洞的数据包。发送该数据包,进行再次检测。在发送少量数据包的情况下复测漏洞。

3、某网站的所有漏洞都复测完成之后,通过漏洞复测报告等方式,向用户展示已修复漏洞的情况、未修复漏洞的检测方法及修复建议等信息,使用户可以实时跟踪自己网站的修复情况。

复测过程的触发有两种方式,分别为时间触发方式和事件触发方式。时间触发方式为当上一次漏洞的检测时间超过了用户设定的复测周期时,触发对用户漏洞的复测。事件触发方式为当用户通过在页面上点击“复测”按钮等方法,向服务器发送复测请求时,触发对用户漏洞的复测。

基于上述实施例,本申请还提供了一种网站脆弱性的检测装置,该检测装置可以包括存储器和处理器,其中,该存储器中存有计算机程序,该处理器调用该存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然,该检测装置还可以包括各种必要的网络接口、电源以及其它零部件等。

本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行终端或处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

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

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

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

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