掌桥专利:专业的专利平台
掌桥专利
首页

Web漏洞扫描方法、系统、装置、存储介质和计算机设备

文献发布时间:2023-06-19 09:27:35



技术领域

本发明属于计算机网络技术领域,具体涉及一种Web漏洞扫描方法、系统、装置、存储介质和计算机设备。

背景技术

Web技术作为网络的一项重要应用,它可以提供娱乐、信息、电子商务等各种服务。但是随之而来的安全问题也日益突出,各大著名网站都曾经遭受“黑客”的恶意攻击,给运营商造成了巨大的损失。在Web应用的迅速发展的同时,Web漏洞及其漏洞利用技术也随之迅速发展。

基于Web安全的重要性,针对Web应用的开发和维护过程进行渗透测试成为一个不可或缺的部分。从攻击者的角度进行渗透测试将有助于发现并识别出一些隐性存在的安全漏洞和风险点,用于验证经过安全保护后的网络是否真实的达到了预定安全目标、遵循了安全策略,有助于帮助提高系统的健壮性。渗透测试目前已经成为系统整体安全性评估的一个重要组成部分。

现代企业的计算机网络系统庞大而且复杂,其中还在不断发生更新、修改、删除、迁移等变化,单纯依赖安全专家来实施安全测试不切实际。所以依靠渗透测试工具辅助测试是渗透测试不可或缺的一部分。通过高效自动化的漏洞扫描工具,对WEB站点进行初步探测,进而对web站点的安全性进行初步评估,可以给安全专家相对清晰的渗透方向,大大提升效率。

因此,本发明旨在依据SecBat三阶段自动测试模型(“爬虫获取数据——实施模拟攻击——解析响应数据”),构建常见漏洞扫描系统,降低人工渗透测试的工作量,辅助渗透测试,而这种测试显得尤其重要。

发明内容

本发明的目的在于提供具体涉及一种Web漏洞扫描方法、系统、装置、存储介质和计算机设备以降低人工渗透测试的工作量,辅助渗透测试。

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

一种Web漏洞扫描方法,优选,所述方法包括:

通过网络爬虫爬取的URL,构造数据包,并将所述数据包发送给插件,并基于所述插件进行漏洞扫描;

向Web应用服务器发送请求,获取对所述服务器的响应信息;

对所述响应信息分析,并判断所述漏洞是否存在于所述服务器中,得到安全隐患信息;

根据所述安全隐患信息生成报告文件。

如上所述的一种Web漏洞扫描方法,优选,所述通过网络爬虫爬取URL的步骤包括:

设计高效的爬虫程序,用于提高爬虫的爬全率和爬虫质量;

确定爬虫的爬取策略,通过比较宽度优先遍历、深度优先遍历和最佳优先策略的优缺点,确定宽度优先的爬取策略;

定义爬虫深度,避免爬虫陷入一条路径不能结束,提高爬取URL的全面性;

URL去重,通过改进布隆过滤器算法得到双重布隆过滤器算法,降低误报率。

如上所述的一种Web漏洞扫描方法,优选,所述并将所述数据包发送给插件,用于漏洞扫描的步骤包括:

通过对扫描器目录件夹中的*.py文件进行扫描得到所述插件;

将所述插件目录加入到环境变量sys.path;

将扫描好的URL结果集和网页源码传递给所述插件进行解析;

所述插件使用爬虫模块发送的URL结果集和网页源码进行漏洞扫描工作。

如上所述的一种Web漏洞扫描方法,优选,所述根据所述安全隐患信息生成报告文件的步骤具体为,

依据扫描出来的漏洞的危险程度以及漏送数量,根据漏送评分系统给被检测Web站点进行安全系数评分,并基于此生成所述报告文件。

一种Web漏洞扫描系统,优选,所述系统包括扫描主体系统、扫描插件系统和数据库系统;

所述数据库系统与所述扫描主体系统以及所述扫描插件系统实现数据交互;

所述扫描主体系统用于管理所述扫描插件系统;

所述扫描主体系统基于所述数据库系统导出扫描报告。

如上所述的一种Web漏洞扫描系统,优选,所述系统还包括网络系统;

所述网络系统包括Web服务器、测试机和路由器。

一种Web漏洞扫描装置,优选,所述装置包括插件模块、报告生成模块、扫描插件库模块;

所述插件模块分别与所述报告生成模块与所述扫描插件库模块电连接;

所述报告生成模块包括报告导出模块与所述信息收集模块;所述报告生成模块用于导出扫描报告;

所述插件模块包括插件定义模块、插件检测模块以及插件调用模块。

如上所述的一种Web漏洞扫描装置,优选,所述插件库模块具体还包括:

SQL注入漏洞检测插件;用于向可能存在漏洞的页面提交不同的数据库查询结果,分析页面返回结果,达到对SQL注入漏洞的检测目的;

跨站脚本攻击检测插件:用于向可能存在漏洞的页面提交带有跨站脚本攻击载荷特殊字符的URL根据返回页面中是否存在攻击载荷的特殊字符,达到检测跨站脚本攻击的目的;

Webshell密码爆破插件:用于在向服务器中提交数据时用“&”符号并列提交多个参数,达到检测速率翻倍的效果;

备份文件的扫描插件:用于对网站中各个路径下特定的文件名进行探测,达到检测备份文件或压缩包等敏感文件的目的;

邮箱地址扫描插件:用于使用正则表达式对网页实体内容进行匹配,达到将目标网站的网页中存在的邮箱地址检测出来的目的。

一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上所述的方法的步骤。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上所述方法的步骤。

与最接近的现有技术相比,本发明提供的技术方案具有如下优异效果:

本发明将Web漏洞扫描器的整体架构分为主体模块和扫描插件模块两部分;主体模块用于渗透技术中信息收集的工作,扫描插件模块用于对不同Web漏洞进行检测,实现了Web应用漏洞扫描器可以对常见Web漏洞的检测,在渗透工作中可以对测试人员带来一定的帮助。

附图说明

构成本申请的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。其中:

图1为本发明实施例的Web应用漏洞扫描系统数据库的ER图;

图2为本发明实施例的Web漏洞扫描环境拓扑图;

图3为本发明实施例的Web应用漏洞扫描的基本结构示意图;

图4为本发明实施例的Web漏洞扫描方法流程图。

具体实施方式

下面将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

在本发明的描述中,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不能理解为对本发明的限制。本发明中使用的术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接;可以是直接相连,也可以通过中间部件间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。

根据本发明的具体实施例,如图1至图4所示,本发明的Web应用漏洞扫描器为了方便扫描数据的记录与管理,需要引入系统数据库对数据进行妥善的保管。数据库的主要模块包含Web应用漏洞扫描器主体模块的信息记录、各漏洞插件扫描结果的记录和扫描报告输出的模块。扫描器主体模块的记录包括服务器端口开放状态、网站路径等;漏洞插件扫描系统的记录包括SQL注入漏洞注入点以及相应payload的记录,XSS漏洞出现的URL以及相应payload的记录,Webshell存在的路径以及Webshell密码的记录,备份文件的路径,邮箱地址扫描记录的结果等。扫描报告输出模块主要是整合扫描器主体模块和漏洞扫描模块的记录,对报告进行打印输出。

根据本发明的具体实施例,如图2所示,该网络拓扑图也可以用来评测环境网络。既漏洞靶场为本地搭建环境,无需进行CDN检测。

在一个实施例中,漏洞检测方法为,通过网络爬虫爬取的URL,构造数据包,并将数据包发送给插件,并基于插件进行漏洞扫描;向Web应用服务器发送请求,获取对服务器的响应信息;对响应信息分析,并判断漏洞是否存在于服务器中,得到安全隐患信息;根据安全隐患信息生成报告文件。

在一个实施例中常用的信息收集手段有:

收集服务器的真实IP、使用的操作系统类型、版本、开放的端口,是否使用防火墙,何种版本,查明防火墙是否有已存在的漏洞等。

在一个实施例中,应用指纹识别,主要分为五类指纹:网络层、主机层、服务层、应用层和语言层的指纹。网络层指纹主要包括网关、防火墙、VPN、CDN、DNS路由器等基础设施的指纹;主机层指纹包括操作系统信息、软件防火墙,以及主机上各种对外提供服务的软件的指纹;服务层指纹包括Web服务、FTP服务、SSH服务等指纹;应用层指纹包括各种建站程序、CMS、开源框架等指纹;语言层指纹主要包括识别服务器端用了哪种脚本语言的信息。

在一个实施例中,使用Whois查询网站的相关信息。随着Whois的功能越来越强大,可以查询到的信息越来越多:如网站的域名注册商、域名所有人、域名管理员的联系方式、域名创建时间等,以便进行社会工程学攻击,Whois中还的信息还有域名服务器IP地址、DNS服务器地IP址等。

在一个实施例中,在网站被授权可以进行渗透测试工作后,网站中的子域名也在测试范围内。查询网站服务器中是否有其他网站也部署于相同的服务器上(该网站一般称为旁站),如果同样被授权,可以通过测试旁站中是否有漏洞,如存在的话可以通过旁站的漏洞对目标进行渗透。

在一个实施例中,使用搜索引擎,通过Google Hacking对目标网站进行针对化搜索,查看网站中是否有泄露出来的文件,查询网站中存在的敏感信息,对弱口令进行扫描。

在一个实施例中,通过爬虫或目录字典对网站目录结构进行扫描,查找网站后台管理页面,搜寻网站中的测试文件、备份文件或压缩包,该类文件中可能存在敏感信息或网站源码。

在一个实施例中,通过网络爬虫爬取URL的步骤包括:设计高效的爬虫程序,用于提高爬虫的爬全率和爬虫质量;确定爬虫的爬取策略,通过比较宽度优先遍历、深度优先遍历和最佳优先策略的优缺点,确定宽度优先的爬取策略;定义爬虫深度,避免爬虫陷入一条路径不能结束,提高爬取URL的全面性;URL去重,通过改进布隆过滤器算法得到双重布隆过滤器算法,降低误报率。

在一个实施例中,在URL去重方面,爬虫使用基于内存的哈希表去重方法。在爬取过程中,URL是以字符串的形式存储的,占用字节数比较多。而md5哈希算法可以将长度很大的URL经过运算压缩到128bit的大小,也就是16字节的长度,这样可以极大的减少存储URL的开销。在URLManager.py中定义了哈希表。在爬取到新的URL时,先将该URL经过md5运算得到URL的哈希值,然后在哈希表中查找是否有该URL的哈希值。如果不存在,则将新URL的哈希值插入哈希表,同时将URL插入old_URLs结果集中,直至遍历完所有的URL。这种去重方法效果非常精确,不会漏掉一个重复的URL。因为URL数据时直接在内存中进行操作,所以基于内存的URL去重的运算速度非常快;

在一个实施例中,并将数据包发送给插件,用于漏洞扫描的步骤包括:通过对扫描器目录件夹中的*.py文件进行扫描得到插件;将插件目录加入到环境变量sys.path;将扫描好的URL结果集和网页源码传递给插件进行解析;插件使用爬虫模块发送的URL结果集和网页源码进行漏洞扫描工作。

在一个实施例中,根据安全隐患信息生成报告文件的步骤具体为,依据扫描出来的漏洞的危险程度以及漏送数量,根据漏送评分系统给被检测Web站点进行安全系数评分,并基于此生成报告文件。

在一个实施例中,系统包括扫描主体系统、扫描插件系统和数据库系统;数据库系统与扫描主体系统以及扫描插件系统实现数据交互;扫描主体系统用于管理扫描插件系统;扫描主体系统基于数据库系统导出扫描报告。

在一个实施例中,系统还包括网络系统;网络系统包括Web服务器、测试机和路由器。

在一个实施例中,装置包括插件模块、报告生成模块、扫描插件库模块;插件模块分别与报告生成模块与扫描插件库模块电连接;

报告生成模块包括报告导出模块与信息收集模块;报告生成模块用于导出扫描报告;插件模块包括插件定义模块、插件检测模块以及插件调用模块。

在一个实施例中,插件库模块具体还包括:SQL注入漏洞检测插件;用于向可能存在漏洞的页面提交不同的数据库查询结果,分析页面返回结果,达到对SQL注入漏洞的检测目的;跨站脚本攻击检测插件:用于向可能存在漏洞的页面提交带有跨站脚本攻击载荷特殊字符的URL根据返回页面中是否存在攻击载荷的特殊字符,达到检测跨站脚本攻击的目的;Webshell密码爆破插件:用于在向服务器中提交数据时用“&”符号并列提交多个参数,达到检测速率翻倍的效果;备份文件的扫描插件:用于对网站中各个路径下特定的文件名进行探测,达到检测备份文件或压缩包等敏感文件的目的;邮箱地址扫描插件:用于使用正则表达式对网页实体内容进行匹配,达到将目标网站的网页中存在的邮箱地址检测出来的目的。

在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行Web漏洞检测方法的步骤。

在一个实施例中,提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行Web漏洞检测方法的步骤。

上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述发明披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。

同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。

此外,本领域技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。

计算机可读信号介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读信号介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。

本申请各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括朝向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。

此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备安装所描述的系统。

同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。

一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本申请一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。

针对本申请引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本申请作为参考。与本申请内容不一致或产生冲突的申请历史文件除外,对本申请权利要求最广范围有限制的文件(当前或之后附加于本申请中的)也除外。需要说明的是,如果本申请附属材料中的描述、定义、和/或术语的使用与本申请所述内容有不一致或冲突的地方,以本申请的描述、定义和/或术语的使用为准。

最后,应当理解的是,本申请中所述实施例仅用以说明本申请实施例的原则。其他的变形也可能属于本申请的范围。因此,作为示例而非限制,本申请实施例的替代配置可视为与本申请的教导一致。相应地,本申请的实施例不仅限于本申请明确介绍和描述的实施例。

相关技术
  • Web漏洞扫描方法、系统、装置、存储介质和计算机设备
  • 一种Web漏洞扫描方法、装置、系统、设备及存储介质
技术分类

06120112172126