发明内容
本发明实施例所要解决的技术问题在于,提供一种Web站点漏洞扫描方法和装置。可解决现有技术对网站的每个有效URL不加选择地进行每种漏洞类型遍历的检测,导致扫描效率低下、耗时过长的问题。
为了解决上述技术问题,本发明第一方面提供了一种Web站点漏洞扫描方法,包括:
获取待测网站的测试对象集合中的目标测试对象,所述目标测试对象包括目标URL统一资源定位符和所述目标URL指向的页面;
提取所述目标测试对象中待测漏洞的漏洞特征,并根据所述漏洞特征生成待测漏洞特征向量;
计算预置的待测漏洞标准向量与所述待测漏洞特征向量之间的相似度;
当所述相似度小于预置的阈值时,不对所述目标测试对象进行检测所述待测漏洞的操作。
在第一种可能的实现方式中,所述获取待测网站的测试对象集合中的目标测试对象之前包括:
将所述待测网站域名与预置的经验种子库中的种子拼接生成组合URL集合;
将所述组合URL集合和所述待测网站导航页面中包括的URL加入到种子URL集合中;
将根据所述种子URL集合提取到的所述待测网站每一个URL和对应的页面保存至所述测试对象集合。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
将所述测试对象集合中的URL加入到所述预置的经验种子库中。
结合第一方面至第一方面的第二种可能的实现方式中的任一种,在第三种可能的实现方式中,还包括:
根据预置的样本网站采用矢量空间模型VSM方法计算所述待测漏洞标准向量。
结合第一发明的第三种可能的实现方式,在第四种可能的实现方式中,所述根据预置的样本网站采用矢量空间模型VSM计算所述待测漏洞标准向量具体包括:
获取所述样本网站的测试对象集合中的所述待测漏洞的样本特征向量;
确定所述样本特征向量中各个向量的权重;
根据所述权重和所述样本特征向量计算出所述待测漏洞的待测漏洞标准向量。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述计算预置的待测漏洞标准向量与所述待测漏洞特征向量之间的相似度包括:
计算所述预置的待测漏洞向量和待测漏洞特征向量的夹角的余弦值作为二者之间的相似度。
本发明第二方面提供了一种Web漏洞扫描装置,包括:
测试对象获取模块,用于获取待测网站的测试对象集合中的目标测试对象,所述目标测试对象包括目标URL和所述目标URL指向的页面;
特征生成模块,用于提取所述目标测试对象中待测漏洞的漏洞特征,并根据所述漏洞特征生成待测漏洞特征向量;
相似度计算模块,用于计算预置的待测漏洞标准向量与所述待测漏洞特征向量之间的相似度;
漏洞检测筛选模块,用于当所述相似度小于预置的阈值时,不对所述目标测试对象进行检测所述待测漏洞的操作。
在第一种可能的实现方式中,还包括:
配置模块,用于将所述待测网站域名与预置的经验种子库中的种子拼接生成组合URL集合;将所述组合URL集合和所述待测网站导航页面中包括的URL加入到种子URL集合中;将根据所述种子URL集合提取到的所述待测网站每一个URL和对应的页面保存至所述测试对象集合。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
更新模块,用于将所述测试对象集合中的URL加入到所述预置的经验种子库中。
结合第二方面至第二方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
标准向量计算模块,用于根据预置的样本网站采用矢量空间模型VSM方法计算所述待测漏洞标准向量。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述标准向量计算模块包括;
样本向量获取单元,用于获取所述样本网站的测试对象集合中的所述待测漏洞的样本特征向量;
权重确定单元,用于确定所述样本特征向量中各个向量的权重;
标准向量计算单元,用于根据所述权重和所述样本特征向量计算出所述待测漏洞的待测漏洞标准向量。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述相似度计算模块包括:
计算单元,用于计算预置的待测漏洞向量和待测漏洞特征向量的夹角的余弦值作为二者之间的相似度。
实施本发明实施例,具有如下有益效果:
对每个URL及页面内容进行漏洞相关度分析,计算出对应每种漏洞能够的相关度,对URL页面及内容进行安全漏洞的检测和确认,URL于漏洞类型相关度大的,该URL才进行相关漏洞的检测和确认,可以避免大量无用、耗时的漏洞检测和确认,在很大程度上能提高安全扫描效率,节省硬件和网络资源,提高检索结果的查准率和质量,保证安全扫描的实时性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本发明实施例的一种Web漏洞扫描方法的流程示意图,该方法包括:
步骤101、获取待测网站的测试对象集合中的目标测试对象。
具体的,所述测试对象集合为待测网站中所有的URL和URL指向的对象的集合,测试对象集合的采集方法可以为使用网络爬虫收集待测网站中的站内URL和页面,也可以采用其他方法,本发明不作限制。从测试对象集合中获取一个目标测试对象,目标测试对象包括目标URL和所述目标URL指向的页面。
步骤102、提取所述目标测试对象中待测漏洞的漏洞特征,并根据所述漏洞特征生成漏洞特征向量。
具体的,每个目标测试对象中包括不同的漏洞的漏洞特征,漏洞特征从两方面进行提取,一方面为目标URL本身特征的提取,另一方面为目标URL指向的页面的内容提取。例如目标URL中有“?”字符,该特征对SQL(StructuredQueryLanguage,结构化查询语言,简称SQL)注入漏洞关系比较大,因此作为SQL注入漏洞的一个特征,所述目标URL指向的页面中含有查询接口,该特征也可以作为注入漏洞的一个特征。以SQL注入漏洞为例,提取目标测试对象中SQL注入漏洞的N个漏洞特征,生成N维待测漏洞特征向量记为U=(U1,U2,U3,...,Un),U为SQL注入漏洞在目标测试对象中的特征向量。
步骤103、计算预置的待测漏洞标准向量与所述待测漏洞特征向量之间的相似度。
步骤104、当所述相似度小于预置的阈值时,不对所述目标测试对象进行检测所述待测漏洞的操作。
具体的,以检测SQL注入漏洞为例,计算出来的相似度值越大则表明目标测试对象和SQL注入漏洞之间的相似度越高,当小于预置的阈值时,则不需要对目标测试对象进行SQL注入漏洞的检测,这样可以避免对目标测试对象的非相关的漏洞类型进行检测,提高了Web网站的扫描效率。
实施本发明的实施例,对每个URL及页面内容进行漏洞相关度分析,计算出对应每种漏洞能够的相关度,对URL页面及内容进行安全漏洞的检测和确认,URL于漏洞类型相关度大的,该URL才进行相关漏洞的检测和确认,可以避免大量无用、耗时的漏洞检测和确认,在很大程度上能提高安全扫描效率,节省硬件和网络资源,提高检索结果的查准率和质量,保证安全扫描的实时性。
参见图2,为本发明实施例的一种Web漏洞扫描方法的另一流程示意图,包括:
步骤201、将所述待测网站域名与预置的经验种子库中的种子拼接成组合URL集合。
具体的,根据网络爬虫抓取网站链接URL的原理,爬虫存在固有的缺陷,只能提取到网站页面内容中包含的链接URL,而有些重要的入口URL,并不会出现在页面上,但是确实可能存在,例如后台管理模块的入口URL按照安全规范是不能在待测网站的任何页面上出现,使得最终的Web网站依然存在安全隐患。经验种子库中包括一些网络爬虫无法爬取到的URL的种子,种子以字符串的形式表示,例如admin为经验种子库中的一个种子,将该种子与待测网站的域名,如http://www.huawei.com进行拼接生成组合URL为http://www.huawei.com/admin,组合URL集合中至少包括一个组合URL。
步骤202、将所述组合URL集合和所述到处网站导航页面中包括的URL加入到种子URL集合中。
具体的,待测网站的导航主页包含了丰富的子模块入口链接URL,预分析导航主页可以获取大量有用的URL,将导航主页中的URL和步骤201得到的组合URL集合加入到种子URL集合中,网络爬虫能从种子URL集合开始爬取待测站点的所有的URL和页面,收集完待测网站所有的URL和对应的页面后,剔除无用的URL和重复的URL,将剔除后的URL加入到预置的经验种子库中,以便下次重复利用,可以提高收集URL和对应页面的速度。
步骤203、将根据所述种子URL集合中提取到的所述待测网站每一个URL和对应的页面保存至所述测试对象集合。
具体的,保存至测试对象集合的URL和对应的页面组成一一映射的关系。
步骤204、获取待测网站的测试对象集合中的目标测试对象。
具体的,所述测试对象集合为待测网站中所有的URL和URL指向的对象的集合,测试对象集合的采集方法可以为使用网络爬虫收集待测网站中的站内URL和页面,也可以采用其他方法,本发明不作限制。从测试对象集合中获取一个目标测试对象,目标测试对象包括目标URL和所述目标URL指向的页面。
步骤205、提取所述目标测试对象中待测漏洞的漏洞特征,并根据所述漏洞特征生成待测漏洞特征向量。
具体的,每个目标测试对象中包括不同的漏洞的漏洞特征,漏洞特征从两方面进行提取,一方面为目标URL本身特征的提取,另一方面为目标URL指向的页面的内容提取。例如目标URL中有“?”字符,该特征对SQL(StructuredQueryLanguage,结构化查询语言,简称SQL)注入漏洞关系比较大,因此作为SQL注入漏洞的一个特征,所述目标URL指向的页面中含有查询接口,该特征也可以作为注入漏洞的一个特征。以SQL注入漏洞为例,提取目标测试对象中SQL注入漏洞的N个漏洞特征,生成N维待测漏洞特征向量记为U=(U1,U2,U3,...,Un),U为SQL注入漏洞在目标测试对象中的特征向量。
步骤206、根据预置的样本网站采用向量空间模型方法计算所述待测漏洞标准向量。
具体的,采用向量空间模型方法,将从样本网站中提取到的n维样本特征向量写成T=(T1,T2,...,Tn),采用TF-IDF算法对样本网站中的n维样本特征向量进行统计分析,最后确定每个特征项的权重W。特征项Tj在“URL对象”Di中的TF-IDF值定义为:
Wi,j=TFi,j*log(N/DFi,j)
其中TFi,j是特征Tj在第i个样本网站Di中出现的次数,DFi,j表示样本网站集合D中包含特征Tj的样本数量,N表示中的样本网站的数量。把提取到的n维样本特征向量的权重写成W=(W1,W2,...,Wn),计算标准漏洞S,S=W*T,每个漏洞类型都会得到相应的待测漏洞标准向量。
步骤207、计算所述预置的待测漏洞向量和待测漏洞特征向量的夹角的余弦值作为二者之间的相似度。
具体的,获取到待测漏洞标准向量之后,就可以进行待测网站中目标测试对象与待测漏洞的相关度计算,首先对待测网站每一目标测试对象提取特征,提取过程和步骤205一样,把提取到的n维待测网站的目标测试对象的特征向量写成U=(U1,U2,...,Un)。针对待测网站目标测试对象,计算U和S两个向量的夹角的余弦值来表示该目标测试对象于该漏洞的相关度,计算出来的值在0-1之间,值越大说明相似度越高,也就是说明该URL和漏洞的相关性很大。计算公式如下:
计算出目标对象与待测漏洞相关度之后,对于相关度大于预置的阈值的目标测试对象,进行下一步的检测该待测漏洞的操作,相关度小于预置的阈值的目标测试对象就不进行检测该待测漏洞的操作。对于阈值的选择,可以用户自定义,本发明不作限制。
实施本发明的实施例,对每个URL及页面内容进行漏洞相关度分析,计算出对应每种漏洞能够的相关度,对URL页面及内容进行安全漏洞的检测和确认,URL于漏洞类型相关度大的,该URL才进行相关漏洞的检测和确认,可以避免大量无用、耗时的漏洞检测和确认,在很大程度上能提高安全扫描效率,节省硬件和网络资源,提高检索结果的查准率和质量,保证安全扫描的实时性。
参见图3,为本发明实施例的一种Web网站漏洞扫描装置的结构示意图,该装置包括:
测试对象获取模块11,用于获取待测网站的测试对象集合中的目标测试对象,所述目标测试对象包括目标URL和所述目标URL指向的页面。
具体的,所述测试对象集合为待测网站中所有的URL和URL指向的对象的集合,测试对象集合的采集方法可以为使用网络爬虫收集待测网站中的站内URL和页面,也可以采用其他方法,本发明不作限制。测试对象获取模块11从测试对象集合中获取一个目标测试对象,目标测试对象包括目标URL和所述目标URL指向的页面。
特征生成模块12,用于提取所述目标测试对象中待测漏洞的漏洞特征,并根据所述漏洞特征生成待测漏洞特征向量。
具体的,每个目标测试对象中包括不同的漏洞的漏洞特征,特征生成模块12对漏洞特征从两方面进行提取,一方面为目标URL本身特征的提取,另一方面为目标URL指向的页面的内容提取。例如目标URL中有“?”字符,该特征对SQL(StructuredQueryLanguage,结构化查询语言,简称SQL)注入漏洞关系比较大,因此作为SQL注入漏洞的一个特征,所述目标URL指向的页面中含有查询接口,该特征也可以作为注入漏洞的一个特征。以SQL注入漏洞为例,提取目标测试对象中SQL注入漏洞的N个漏洞特征,生成N维待测漏洞特征向量记为U=(U1,U2,U3,...,Un),U为SQL注入漏洞在目标测试对象中的特征向量。
相似度计算模块13,用于计算预置的待测漏洞标准向量与所述待测漏洞特征向量之间的相似度。
漏洞检测筛选模块14,用于当所述相似度小于预置的阈值时,不对所述目标测试对象进行检测所述待测漏洞的操作。
具体的,以检测SQL注入漏洞为例,计算出来的相似度值越大则表明目标测试对象和SQL注入漏洞之间的相似度越高,当漏洞检测筛选模块14判断相似度小于预置的阈值时,则不需要对目标测试对象进行SQL注入漏洞的检测,这样可以避免对目标测试对象的非相关的漏洞类型进行检测,提高了Web网站的扫描效率。
实施本发明的实施例,对每个URL及页面内容进行漏洞相关度分析,计算出对应每种漏洞能够的相关度,对URL页面及内容进行安全漏洞的检测和确认,URL于漏洞类型相关度大的,该URL才进行相关漏洞的检测和确认,可以避免大量无用、耗时的漏洞检测和确认,在很大程度上能提高安全扫描效率,节省硬件和网络资源,提高检索结果的查准率和质量,保证安全扫描的实时性。
进一步的,参见图4-图6,为本发明实施例的一种Web网站漏洞扫描装置的另一结构示意图,除包括测试对象获取模块11、特征生成模块12、相似度计算模块13和漏洞检测筛选模块14外,还包括:
配置模块15,用于将所述待测网站域名与预置的经验种子库中的种子拼接生成组合URL集合;将所述组合URL集合和所述待测网站导航页面中包括的URL加入到种子URL集合中;将根据所述种子URL集合提取到的所述待测网站每一个URL和对应的页面保存至所述测试对象集合。
具体的,根据网络爬虫抓取网站链接URL的原理,爬虫存在固有的缺陷,只能提取到网站页面内容中包含的链接URL,而有些重要的入口URL,并不会出现在页面上,但是确实可能存在,例如后台管理模块的入口URL按照安全规范是不能在待测网站的任何页面上出现,使得最终的Web网站依然存在安全隐患。经验种子库中包括一些网络爬虫无法爬取到的URL的种子,种子以字符串的形式表示,例如admin为经验种子库中的一个种子,配置模块15将该种子与待测网站的域名,如http://www.huawei.com进行拼接生成组合URL为http://www.huawei.com/admin,组合URL集合中至少包括一个组合URL。待测网站的导航主页包含了丰富的子模块入口链接URL,预分析导航主页可以获取大量有用的URL,配置模块15将导航主页中的URL和步骤201得到的组合URL集合加入到种子URL集合中,网络爬虫能从种子URL集合开始爬取待测站点的所有的URL和页面,收集完待测网站所有的URL和对应的页面后,剔除无用的URL和重复的URL,将剔除后的URL加入到预置的经验种子库中,以便下次重复利用,可以提高收集URL和对应页面的速度。
更新模块16,用于将所述测试对象集合中的URL加入到所述预置的经验种子库中。
标准向量计算模块17,用于根据预置的样本网站采用矢量空间模型VSM方法计算所述待测漏洞标准向量。
其中,标准向量计算模块17包括;
样本向量获取单元171,用于获取所述样本网站的测试对象集合中的所述待测漏洞的样本特征向量;
权重确定单元172,用于确定所述样本特征向量中各个向量的权重;
标准向量计算单元173,用于根据所述权重和所述样本特征向量计算出所述待测漏洞的待测漏洞标准向量。
相似度计算模块13包括:
计算单元131,用于计算预置的待测漏洞向量和待测漏洞特征向量的夹角的余弦值作为二者之间的相似度。
实施本发明的实施例,对每个URL及页面内容进行漏洞相关度分析,计算出对应每种漏洞能够的相关度,对URL页面及内容进行安全漏洞的检测和确认,URL于漏洞类型相关度大的,该URL才进行相关漏洞的检测和确认,可以避免大量无用、耗时的漏洞检测和确认,在很大程度上能提高安全扫描效率,节省硬件和网络资源,提高检索结果的查准率和质量,保证安全扫描的实时性。
参见图7,为本发明的一种Web漏洞扫描装置的又一结构示意图,包括处理器61、存储器62、输入装置63和输出装置64,桌面服务器中的处理器61的数量可以是一个或多个,图7以一个处理器为例。本发明的一些实施例中,处理器61、存储器62、输入装置63和输出装置64可通过总线或其他方式连接,图7中以总线连接为例。
其中,存储器62中存储一组程序代码,且处理器61用于调用存储器62中存储的程序代码,用于执行以下操作:
获取待测网站的测试对象集合中的目标测试对象,所述目标测试对象包括目标URL统一资源定位符和所述目标URL指向的页面;
提取所述目标测试对象中待测漏洞的漏洞特征,并根据所述漏洞特征生成待测漏洞特征向量;
计算预置的待测漏洞标准向量与所述待测漏洞特征向量之间的相似度;
当所述相似度小于预置的阈值时,不对所述目标测试对象进行检测所述待测漏洞的操作。
进一步的,在本发明的一些实施例中,处理器61还用于执行:
将所述待测网站域名与预置的经验种子库中的种子拼接生成组合URL集合;
将所述组合URL集合和所述待测网站导航页面中包括的URL加入到种子URL集合中;
将根据所述种子URL集合提取到的所述待测网站每一个URL和对应的页面保存至所述测试对象集合。
进一步的,在本发明的一些实施例中,处理器61还用于执行:
将所述测试对象集合中的URL加入到所述预置的经验种子库中。
在本发明的一些实施例中,处理器61还用于执行:
根据预置的样本网站采用矢量空间模型VSM方法计算所述待测漏洞标准向量。
在本发明的一些实施例中,处理器61具体用于执行:
获取所述样本网站的测试对象集合中的所述待测漏洞的样本特征向量;
确定所述样本特征向量中各个向量的权重;
根据所述权重和所述样本特征向量计算出所述待测漏洞的待测漏洞标准向量。
在本发明的一些实施例中,处理器61具体用于执行:
计算所述预置的待测漏洞向量和待测漏洞特征向量的夹角的余弦值作为二者之间的相似度。
实施本发明的实施例,对每个URL及页面内容进行漏洞相关度分析,计算出对应每种漏洞能够的相关度,对URL页面及内容进行安全漏洞的检测和确认,URL于漏洞类型相关度大的,该URL才进行相关漏洞的检测和确认,可以避免大量无用、耗时的漏洞检测和确认,在很大程度上能提高安全扫描效率,节省硬件和网络资源,提高检索结果的查准率和质量,保证安全扫描的实时性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。