漏洞扫描方法、装置、设备及存储介质与流程

文档序号:31868905发布日期:2022-10-21 17:53阅读:201来源:国知局
漏洞扫描方法、装置、设备及存储介质与流程

1.本公开涉及网络安全技术领域,具体而言,涉及一种漏洞扫描方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.随着对万维网(world wide web,简写为web)安全的关注度的提高,在越来越多的行业领域已经开始频繁使用扫描器去评估其风险,以便提前发现安全隐患,及时进行安全加固以保障网站业务的正常持续运转。相关技术中的扫描器调用漏洞扫描插件进行检测,漏洞的检测流程都是在插件中实现的,在修改漏洞检测流程时可能需要修改整个漏洞扫描插件的代码,导致整个漏洞扫描方法的扩展性较差;而且,特定编程语言开发的漏洞扫描插件只能用在该语言开发的扫描器上,不同语言开发的插件无法进行兼容,因此通用性也较差。
3.如上所述,如何提高漏洞扫描方法的可扩展性和通用性成为亟待解决的问题。
4.在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解。


技术实现要素:

5.本公开的目的在于提供一种漏洞扫描方法、装置、设备及可读存储介质,至少一定程度上提高漏洞扫描方法的可扩展性和通用性。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
7.本公开实施例提供一种漏洞扫描方法,包括:漏洞扫描模块从调度分解模块获取待执行漏洞扫描任务及目标扫描工具信息;所述漏洞扫描模块根据所述目标扫描工具信息,从规则管理模块获取与所述目标扫描工具信息匹配的目标扫描规则代码,其中所述规则管理模块用于将采用第一语言的目标扫描规则转换为符合第二语言的语法的所述目标扫描规则代码,所述漏洞扫描模块采用所述第二语言;所述漏洞扫描模块根据所述目标扫描规则代码中描述的请求攻击载荷和请求构造规则,生成测试请求;所述漏洞扫描模块将所述测试请求发送至所述待执行漏洞扫描任务对应的目标扫描对象;所述漏洞扫描模块接收所述目标扫描对象响应所述测试请求返回的测试响应信息;所述漏洞扫描模块根据所述测试响应信息和所述目标扫描规则代码中描述的响应检测规则,获得所述目标扫描对象的漏洞扫描结果。
8.本公开实施例提供一种漏洞扫描装置,包括:任务接收单元,用于漏洞扫描模块从调度分解模块获取待执行漏洞扫描任务及目标扫描工具信息;规则获取单元,用于所述漏洞扫描模块根据所述目标扫描工具信息,从规则管理模块获取与所述目标扫描工具信息匹配的目标扫描规则代码,其中所述规则管理模块用于将采用第一语言的目标扫描规则转换为符合第二语言的语法的所述目标扫描规则代码,所述漏洞扫描模块采用所述第二语言;测试请求生成单元,用于所述漏洞扫描模块根据所述目标扫描规则代码中描述的请求攻击
载荷和请求构造规则,生成测试请求;测试请求发送单元,用于所述漏洞扫描模块将所述测试请求发送至所述待执行漏洞扫描任务对应的目标扫描对象;测试响应接收单元,用于所述漏洞扫描模块接收所述目标扫描对象响应所述测试请求返回的测试响应信息;漏洞鉴别单元,用于所述漏洞扫描模块根据所述测试响应信息和所述目标扫描规则代码中描述的响应检测规则,获得所述目标扫描对象的漏洞扫描结果。
9.根据本公开的一实施例,所述装置还包括:任务调度单元,用于所述调度分解模块获取初始漏洞扫描任务;任务分解单元,用于所述调度分解模块对所述初始漏洞扫描任务进行分解,获得所述目标扫描对象的请求链接、请求参数和初始扫描工具信息;连接请求生成单元,用于所述调度分解模块根据所述请求链接和所述请求参数,生成连接请求;连接请求发送单元,用于所述调度分解模块将所述连接请求发送至所述目标扫描对象;连接响应接收单元,用于所述调度分解模块接收所述目标扫描对象响应所述连接请求返回的连接响应信息;目标扫描工具确定单元,用于所述调度分解模块根据所述连接响应信息和所述初始扫描工具信息,获得所述目标扫描工具信息。
10.根据本公开的一实施例,所述目标扫描工具确定单元包括:执行规则获取单元,用于所述调度分解模块根据所述初始扫描工具信息,从所述规则管理模块获取与所述初始扫描工具信息匹配的扫描工具执行规则代码,其中所述规则管理模块还用于将采用所述第一语言的扫描工具执行规则转换为符合第三语言的语法的所述扫描工具执行规则代码,所述调度分解模块采用所述第三语言;执行规则匹配单元,用于所述调度分解模块根据所述扫描工具执行规则代码中描述的匹配目标、匹配方式和匹配内容,以所述匹配方式将所述匹配内容与所述连接响应信息中所述匹配目标对应的字段进行匹配;扫描工具筛选单元,用于根据匹配结果和所述初始扫描工具信息对应的初始扫描工具确定目标扫描工具,以获得所述目标扫描工具对应的所述目标扫描工具信息。
11.根据本公开的一实施例,所述扫描工具筛选单元包括:属性参数获取单元,用于在所述匹配内容与所述连接响应信息中所述匹配目标对应的字段匹配成功时,获取所述扫描工具执行规则代码中描述的属性参数;扫描工具筛选单元,还用于在所述属性参数为允许时,确定所述目标扫描工具包括所述初始扫描工具;在所述属性参数为不允许时,确定所述目标扫描工具不包括所述初始扫描工具。
12.根据本公开的一实施例,所述扫描工具筛选单元,还用于在所述匹配内容与所述连接响应信息中所述匹配目标对应的字段匹配不成功时,确定所述目标扫描工具包括所述初始扫描工具。
13.根据本公开的一实施例,所述待执行漏洞扫描任务包括所述请求链接和所述请求参数;其中,所述测试请求生成单元,还用于所述漏洞扫描模块根据所述请求构造规则,基于所述请求攻击载荷对所述请求链接中所述请求参数对应的字段进行修改,生成所述测试请求。
14.根据本公开的一实施例,所述响应检测规则包括判定漏洞存在的字符;其中,所述漏洞鉴别单元还用于:所述漏洞扫描模块在所述测试响应信息中检测到所述判定漏洞存在的字符时,获得所述目标扫描对象的漏洞扫描结果为存在漏洞;所述漏洞扫描模块在所述测试响应信息中未检测到所述判定漏洞存在的字符时,获得所述目标扫描对象的漏洞扫描结果为不存在漏洞。
15.根据本公开的一实施例,所述装置还包括:分布式版本控制单元,用于所述规则管理模块获取初始版本扫描规则;创建所述初始版本扫描规则的镜像文件;获取修改后的镜像文件;将所述修改后的镜像文件与所述初始版本扫描规则进行合并,获得所述目标扫描规则。
16.本公开实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器中并可在所述处理器中运行的可执行指令,所述处理器执行所述可执行指令时实现如上述任一种方法。
17.本公开实施例提供一种计算机可读存储介质,其上存储有计算机可执行指令,所述可执行指令被处理器执行时实现如上述任一种方法。
18.本公开实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
19.本公开的实施例提供的漏洞扫描方法,以漏洞扫描模块为执行主体,从调度分解模块获取待执行漏洞扫描任务及目标扫描工具信息,根据目标扫描工具信息从规则管理模块获取与目标扫描工具信息匹配的目标扫描规则代码,然后根据目标扫描规则代码中描述的请求攻击载荷和请求构造规则生成测试请求,并将测试请求发送至待执行漏洞扫描任务对应的目标扫描对象后,接收目标扫描对象响应测试请求返回的测试响应信息,再根据测试响应信息和目标扫描规则代码中描述的响应检测规则获得目标扫描对象的漏洞扫描结果。通过采用第二语言的漏洞扫描模块执行生成并发送测试请求、接收并分析测试响应信息的流程,可将扫描规则代码与请求构造及发送、响应接收与检测的过程解耦合,并通过规则管理模块将采用第一语言的目标扫描规则转换为符合第二语言的语法的目标扫描规则代码,利用规则管理模块将扫描规则代码统一转换为符合漏洞扫描模块的语言的代码,从而可实现在修改漏洞检测流程时仅需修改扫描规则代码,且可兼容不同编程语言开发的扫描规则,提高了漏洞扫描方法的可扩展性和通用性。
20.应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
21.通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。
22.图1示出本公开实施例中一种系统结构的示意图。
23.图2示出本公开实施例中一种漏洞扫描方法的流程图。
24.图3是根据一示例性实施例示出的一种漏洞扫描系统架构的示意图。
25.图4根据一示例性实施例示出了yaml描述的规则的组成及流转示意图。
26.图5是根据一示例性实施例示出的一种任务分解方法的流程图。
27.图6示出了图5中所示的步骤s512在一实施例中的处理过程示意图。
28.图7是根据一示例性实施例示出的一种规则管理方法的流程图。
29.图8根据一示例性实施例示出了一种git管理界面示意图。
30.图9根据一示例性实施例示出了一种多人协作管理插件的流程示意图。
31.图10示出了git仓库在合并时进行自动测试的一个范例。
32.图11是根据一示例性实施例示出的一种漏洞扫描流程示意图。
33.图12是根据一示例性实施例示出的一种漏洞扫描装置的框图。
34.图13是根据一示例性实施例示出的另一种漏洞扫描装置的框图。
35.图14示出本公开实施例中一种电子设备的结构示意图。
具体实施方式
36.现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施例使得本公开将更加全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
37.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。
38.此外,在本公开的描述中,除非另有明确的规定和限定,“连接”等术语应做广义理解,例如,可以是电连接或可以互相通讯;可以是直接相连,也可以通过中间媒介间接相连。“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
39.云安全(cloud security)是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
40.云安全主要研究方向包括:1.云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机系统安全、用户数据的安全存储与隔离、用户接入认证、信息传输安全、网络攻击防护、合规审计等;2.安全基础设施的云化,主要研究如何采用云计算新建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能力及风险控制能力;3.云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,如防病毒服务等。
41.如上所述,相关技术中扫描器调用漏洞扫描插件进行检测的方法具有以下缺点:
42.1.特定语言的插件不具有通用性,不便于拓展使用。
43.例如,鲁瓦(lua,一种脚本语言)版本的漏洞检测插件只能用在lua语言编写的漏洞扫描器上,在这个技术方案中,开发语言限制了插件的开发,不同语言开发的插件无法进行兼容。再例如,派森(python,一种计算机编程语言)版本的插件只能在python扫描器框架
下使用;go版本的扫描插件只能在go语言版本的扫描器框架下使用,如果python框架的扫描器想要拓展漏洞检测规则,则需要一个同时会两种语言的人进行转换,因此人力成本比较大,不易拓展。
44.2.编写插件对编写者提出了更高的要求,编码能力要求高。
45.在相关技术中,漏洞的检测流程从请求构造、请求发送到漏洞检测,都是在漏洞扫描插件中实现,这导致编写漏洞检测插件需要编写者熟悉扫描器对应的编程语言和扫描器的接口规范,如果不了解这些内容,就没办法写出可用性高的插件交给扫描器进行漏洞检测。例如,相关技术中lua版本的扫描器只能使用lua语言编写的漏洞扫描插件。因此对编写插件的编写者的编码能力要求较高,开发成本较大。
46.3.漏洞扫描插件太过于耦合,扩展性不够强。
47.在相关技术中,漏洞的检测流程都是在漏洞扫描插件中实现的,导致整个漏洞扫描插件太过于臃肿,例如,插件中的请求构造的规则是与代码放在一起的,要修改插件的检测流程就得去修改代码,甚至有可能牵一发而动全身,前面改了后,后面整个都要进行修改,导致漏洞扫描插件的可扩展性较差。
48.因此,本公开提供了一种漏洞扫描方法,通过漏洞扫描模块从调度分解模块获取待执行任务、从规则管理模块获取目标扫描规则代码,执行测试请求构造及发送、响应接收与检测流程,将扫描规则代码与请求构造及发送、响应接收与检测的过程解耦合,并利用规则管理模块将扫描规则代码统一转换为符合漏洞扫描模块的语言的代码,从而可实现在修改漏洞检测流程时仅需修改扫描规则代码,且可兼容不同编程语言开发的扫描规则,提高了漏洞扫描方法的可扩展性和通用性,降低开发成本。
49.图1示出了可以应用本公开的漏洞扫描方法、漏洞扫描装置的示例性系统架构10。
50.如图1所示,系统架构10可以包括终端设备102、网络104、服务器106和数据库108。终端设备102可以是具有显示屏并且支持输入、输出的各种电子设备,包括但不限于智能手机、平板电脑、笔记本电脑、膝上型便携计算机、台式计算机、可穿戴设备、虚拟现实设备、智能音箱、智能手表等智能家居等等。网络104用以在终端设备102和服务器106之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。服务器106可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。数据库108可以为置于服务器上的大型数据库软件,也可以为安装在计算机上的小型数据库软件,用于存储数据。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本技术在此不做限制。
51.用户可以使用终端设备102通过网络104与服务器106和数据库108交互,以接收或发送数据等。例如用户使用终端设备102通过网络104将漏洞扫描规则代码上传到服务器106上,然后通过终端设备102上的规则管理软件对从漏洞扫描规则进行维护。又例如用户使用终端设备102通过网络104向执行漏洞扫描流程的服务器106上传漏洞扫描任务,然后通过网络104从数据库108中获取漏洞扫描结果。再例如服务器106可为任务目标web服务器,用户可通过终端设备102上的漏洞扫描软件向服务器106发送超文本传输协议(hyper text transfer protocol,http)请求,然后接收服务器106对于该请求的响应,以进行漏洞
检测。
52.在服务器106也可通过网络104从数据库108接收数据或向数据库108发送数据等。例如服务器106可为后台处理服务器,用于将处理漏洞扫描任务的结果通过网络104发送至数据库108进行存储。又例如服务器106可用于从数据库108中获取历史漏洞扫描结果进行分析。
53.应该理解,图1中的终端设备、网络、服务器和数据库的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络、服务器和数据库。
54.图2是根据一示例性实施例示出的一种漏洞扫描方法的流程图。如图2所示的方法例如可以应用于上述系统的服务器,也可以应用于上述系统的终端设备。
55.参考图2,本公开实施例提供的方法20可以包括以下步骤。
56.在步骤s202中,漏洞扫描模块从调度分解模块获取待执行漏洞扫描任务及目标扫描工具信息。
57.在一些实施例中,用于实现漏洞扫描的漏洞扫描系统可包括调度分解模块、漏洞扫描模块、规则管理模块和数据持久化模块。其中,漏洞扫描模块为图2的漏洞扫描方法的执行主体;调度分解模块用于将通过应用程序编程接口(application programming interface,api)提交到漏洞扫描系统的初始漏洞扫描任务进行调度、分解处理,获得待执行漏洞扫描任务及目标扫描工具信息并发送至漏洞扫描模块。漏洞扫描系统的架构的具体实施方式可参照图3。
58.在一些实施例中,用户提交的初始漏洞扫描任务中包括任务目标扫描对象的连接方式和指定的扫描工具信息,但用户指定的扫描工具信息中可能包括不适用于该任务目标扫描对象的扫描工具。调度分解模块在对初始漏洞扫描任务进行调度、分解处理时,可对用户指定的扫描工具进行筛选,获得目标扫描工具信息。调度分解模块对初始漏洞扫描任务进行调度的具体实施方式可参照图3,对任务进行分解处理的具体实施方式可参照图5及图6。
59.在步骤s204中,漏洞扫描模块根据目标扫描工具信息,从规则管理模块获取与目标扫描工具信息匹配的目标扫描规则代码,其中规则管理模块用于将采用第一语言的目标扫描规则转换为符合第二语言的语法的目标扫描规则代码,漏洞扫描模块采用第二语言。
60.在一些实施例中,例如,规则管理模块可以包括规则解析器和项目管理仓库,采用项目管理仓库对漏洞扫描工具进行管理,规则解析器用于将漏洞扫描工具解析为符合漏洞扫描模块的语言语法的扫描规则代码和符合的调度分解模块的语言语法的扫描工具执行规则代码。规则管理模块的架构及其管理的规则数据流转的具体实施方式可参照图3及图4。项目管理仓库对漏洞扫描工具进行管理的具体实施方式可参照图7至图10。
61.在一些实施例中,例如,第一语言可为以数据为中心、更适合做配置文件的yaml(yaml ain`t markup language,yaml不是一个标记语言)件,第二语言可为lua语言。
62.在步骤s206中,漏洞扫描模块根据目标扫描规则代码中描述的请求攻击载荷和请求构造规则,生成测试请求。
63.在一些实施例中,例如,待执行漏洞扫描任务可以包括请求链接和请求参数。请求生成就是依据目标扫描规则中的请求攻击载荷和请求构造规则修改原始任务中的请求,从而生成测试请求,即漏洞扫描模块根据请求构造规则基于请求攻击载荷对请求链接中请求
参数对应的字段进行修改。其中“修改”操作可以为根据待执行漏洞扫描任务中的请求参数进行对应字段的修改、替换、插入等操作,具体实施方式可参照下述简化版的漏洞扫描规则。
64.在另一些实施例中,例如,待执行漏洞扫描任务中可以不包括自定义请求参数,目标扫描规则中配置了默认的检测位置,可采用默认的检测位置构造测试请求。
65.在步骤s208中,漏洞扫描模块将测试请求发送至待执行漏洞扫描任务对应的目标扫描对象。
66.在步骤s210中,漏洞扫描模块接收目标扫描对象响应测试请求返回的测试响应信息。
67.步骤s208至步骤s210的具体实施方式可参照下述简化版的漏洞扫描规则。
68.在步骤s212中,漏洞扫描模块根据测试响应信息和目标扫描规则代码中描述的响应检测规则,获得目标扫描对象的漏洞扫描结果。向目标扫描对象发送这个请求数据,而后目标扫描对象会根据请求来返回一个响应数据,漏洞鉴别模块就是根据这个响应数据来判断是否存在安全风险。目标扫描对象例如为任务目标服务器。
69.在一些实施例中,响应检测规则可以包括判定漏洞存在的字符,漏洞扫描模块在测试响应信息中检测到判定漏洞存在的字符时,获得目标扫描对象的漏洞扫描结果为存在漏洞。漏洞扫描模块在测试响应信息中未检测到判定漏洞存在的字符时,获得目标扫描对象的漏洞扫描结果为不存在漏洞。
70.在一些实施例中,目标扫描规则代码中可以描述了多个规则,在执行时可循环调用这些规则进行漏洞扫描,具体实施方式可参照图11。
71.在一些实施例中,例如,以一个简化版的漏洞扫描规则为例,来描述一下这个过程。首先定义规则如表1:
72.表1
[0073][0074]
在定义好规则之后,漏洞扫描模块开始调用该规则进行检测,用户为扫描器提供了一个网站(任务目标)让漏洞扫描模块进行检测,比如它的访问路径(url)是http://www.xxx.com/index.php?user=admin(该路径仅用来举例说明)。
[0075]
提交扫描任务之后,扫描器分析http://www.xxx.com/index.php?user=admin这个目标地址,存在一个get参数user,根据上述的规则定义,漏洞扫描模块的请求生成模块
开始构造请求。
[0076]
原始地址:http://www.xxx.com/index.php?user=admin。
[0077]
经过构造后的地址:http://www.xxx.com/index.php?user={{2222*3333}}。
[0078]
在上述定义规则中,预设的攻击向量为“{{2222*3333}}”,检测位置是get参数,payload与原参数关系是替换。从原始请求中,请求生成模块可以分析出,任务中的地址,存在一个get参数user,它的值是admin,那么就把admin这个原参数值进行替换,换成规则中预设的攻击向量,也就是{{2222*3333}}。
[0079]
请求生成完毕后,就向任务目标服务器发送请求了,比如正常的请求,当user=admin的时候,服务器返回响应数据“admin是管理员”,扫描器根据规则构造并发送的请求,会返回一个响应“7405926不是管理员”。在规则中,设定了判断漏洞是否存在的字符为7405926,当服务器返回这个响应的时候,漏洞鉴别模块就可以认为,任务目标服务器匹配了这个规则,也就存在安全风险。而这个规则的本质就是,发送的参数中的2222*3333这个算式被计算出结果了,也就说明这里可以执行代码,存在安全风险。
[0080]
根据本公开实施例提供的漏洞扫描方法,通过漏洞扫描模块从调度分解模块获取待执行任务、从规则管理模块获取目标扫描规则代码,执行测试请求构造及发送、响应接收与检测流程,将扫描规则代码与请求构造及发送、响应接收与检测的过程解耦合,并利用规则管理模块将扫描规则代码统一转换为符合漏洞扫描模块的语言的代码,从而可实现在修改漏洞检测流程时仅需修改扫描规则代码,且可兼容不同编程语言开发的扫描规则,提高了漏洞扫描方法的可扩展性和通用性,降低开发成本,进而能够快速提升扫描器的漏洞发现能力,具有很好的实用价值。
[0081]
图3是根据一示例性实施例示出的一种漏洞扫描系统架构的示意图。如图3所示,漏洞扫描系统可包括调度分解模块302、漏洞扫描模块304、规则管理模块306和数据持久化模块308。调度分解模块302可以包括扫描调度器3024、子调度器3026和分解器3028。其中,调度分解模块302接收通过api提交的初始漏洞扫描任务后,扫描调度器3024根据系统资源配置,将任务传递给子调度器3026;子调度器3026再将任务交给分解器3028进行处理,在任务分解过程中,通过扫描规则管理模块306提供规则信息,对初始漏洞扫描任务进行了初步筛选等操作,根据规则信息验证初始漏洞扫描任务需要调用哪些规则进行扫描。
[0082]
规则管理模块306可以包括规则解析器3062和项目管理仓库3066,以第一语言为yaml为例,规则解析器3062可以为yaml规则解析器(yaml_parser),其中(yaml)漏洞扫描工具3064以文件的形式存在,使用项目管理仓库3066进行管理。例如项目管理仓库3066可以为git仓库,git仓库为开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,可进行多人协同操作。yaml_parser用来读取git仓库中的yaml扫描工具,然后解析出对应的规则信息,传递给漏洞扫描系统的其他模块使用。
[0083]
yaml_parser在漏洞扫描系统架构中的定位可以为翻译器,是将遵循yaml语法的规则文件转换为漏洞扫描模块304、调度分解模块302可以理解的代码语言。以用lua语言实现的调度分解模块(worker)302为例,这其中的yaml_parser使用了lua开源的yaml解析库lyaml实现了对yaml文件的解析。yaml描述的扫描工具可用三大基本结构来表示扫描所需的信息:
[0084]
1)扫描工具基本信息,包括插件的介绍、漏洞信息、作者、编写时间等,每个扫描工
具只存在一个。
[0085]
2)扫描工具执行条件(即对应上述扫描工具执行规则),包含检测(任务)目标的指纹信息等,用于限定在什么情况下可以执行该扫描工具的检测。
[0086]
3)漏洞检测规则(即对应上述目标扫描规则代码),这个是漏洞检测扫描工具的主要内容,主要包括请求攻击载荷(payload),请求构造的规则、响应检测的规则。
[0087]
在整个漏洞扫描系统中,不同的模块可以用到yaml描述的规则中的不同部分。图4根据一示例性实施例示出了yaml描述的规则的组成及流转示意图。如图3、图4所示,yaml描述的扫描工具的yaml规则402可分为扫描工具执行条件4022和漏洞检测规则4024。扫描工具执行条件4022即为调度分解模块302进行扫描工具筛选的依据,通过规则解析器3062传输至分解器3028。漏洞检测规则4024可包括请求攻击载荷40242、请求构造规则40244、响应检测规则40246。请求攻击载荷40242和请求构造规则40244通过规则解析器3062经过任务接收模块3042传输至请求生成模块3044用于生成测试请求。响应检测规则40246通过规则解析器3062经过任务接收模块3042传输至漏洞鉴别模块3046,用于进行漏洞判断。
[0088]
在一些实施例中,例如使用yaml描述的规则样例如下:
[0089]
leak_id:120068
[0090]
leak_name:struts2_057_detect
[0091]
leak_name_cn:struts s2-057漏洞
[0092]
leak_desc:在structs 2.3-2.3.34structs 2.5-2.5.16版本中,如果配置文件中namespace配置不当,当访问action类型为重定向(redirect action,chain,postback)时,会根据url生成的namespace生成一个跳转地址location,location会进行ognl计算,造成ognl注入。
[0093]
user:coltonli
[0094]
type:normal_scan
[0095]
status:running
[0096]
risk_level:high_risk
[0097]
fix_link:将struts升级到最新版本。
[0098]
attributes:
[0099]
allow:
[0100]-match_content:.jsp$|.do$|.action$
[0101]
match_target:task_uri
[0102]
match_type:4
[0103]-match_content:jsessionid
[0104]
match_target:resp_header#set-cookie
[0105]
match_type:4
[0106]-match_content:apache-coyote
[0107]
match_target:resp_header#server
[0108]
match_type:4
[0109]
deny:{}
[0110]
test_cases:
[0111]-case_id:1200680001
[0112]
input:$%7b23333*23333%7d
[0113]
target:’544428889’[0114]
arg_encode:1
[0115]
arg_operate:4
[0116]
detect_pos:128
[0117]
depth:8
[0118]
其中,leak_id为上述漏洞id,leak_name为漏洞名称,leak_desc为漏洞描述,user为作者,type为扫描类型,status为状态,risk_level为漏洞风险等级,attributes为具体的规则,allow&deny为上述的属性参数“允许”&“不允许”,match_content、match_target、match_type即为图6中描述的匹配内容、匹配目标和匹配方式,test_cases为测试样例信息,其中包括:input为输入值,target为检测值,depth为深度(即目录层数),arg_encode为编码次数,case_id为用例id,sub_type为payload与原参数关系(例如加双引号等),detect_pos为检测位置(可预设),arg_operate为操作次数。
[0119]
经过yaml_parser进行转换之后,会生成符lua语法的代码,供漏洞扫描系统的其他模块进行调用。以上述规则样例为例,转换后代码如下:
[0120]
_m.g_plugin_test_cases={
[0121]
normal_scan={
[0122]
{allow={
[0123]
{
[0124]
match_target:”task_uri”,
[0125]
match_content:”.jsp$|.do$|.action$”,
[0126]
match_type:4
[0127]
},
[0128]
{
[0129]
match_target:”resp_header#set-cookie”,
[0130]
match_content:”jsessionid”[0131]
match_type:4
[0132]
},
[0133]
{
[0134]
match_target:“resp_header#server”,
[0135]
match_content:”apache-coyote”,
[0136]
match_type:4
[0137]
}
[0138]
},
[0139]
plugin_name:”struts2_057_detect”,
[0140]
test_cases={
[0141]
{
[0142]
input=”$%7b23333*23333%7d”,
[0143]
depth=8,
[0144]
arg_encode=1,
[0145]
case_id:1200680001,
[0146]
sub_type=
””
,
[0147]
detect_pos=128
[0148]
arg_operate=4
[0149]
}
[0150]
},
[0151]
deny={
[0152]
},
[0153]
plugin_id:120068
[0154]
}
[0155]
}
[0156]
}
[0157]
yaml漏洞扫描工具可根据owasp top10的常规漏洞和cve漏洞的检测流程获得。其中owasp(open web application security project,开发web应用安全项目)是一个在线社区,主要在web应用程序安全领域中提供文章、方法论、文档、工具和技术等。owasp top 10列出了公认的最有威胁性的web应用安全漏洞。cve(common vulnerabilities&exposures,公共漏洞和暴露)为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出公共的名称。使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具很难整合在一起。这样就使得cve成为了安全信息共享的“关键字”。
[0158]
对于yaml漏洞扫描工具的管理,可采用git项目管理仓库对漏洞扫描工具进行管理,具体实施方式可参照图7至图10。
[0159]
漏洞扫描模块304可以包括任务接收模块3042、请求生成模块3044、请求发起模块3048和漏洞鉴别模块3046。其中任务接收模块3042就是接收任务分解后的结果,将任务信息和对应的规则信息读取过来。在实际的扫描阶段,漏洞鉴别模块3046会循环调用目标扫描工具中的扫描规则,依据规则中描述的请求payload和请求构造规则。请求生成模块3044会生成用来测试的请求包,请求发起模块3048拿到请求包,向任务目标服务器发送请求并获得响应,然后将其传给漏洞鉴别模块3046,而后漏洞鉴别模块3046依据响应检测规则中描述的判断漏洞是否存在的条件,代入到响应中进行验证,并将验证结果返回,存储到数据库中。数据持久化模块308可通过数据库实现,可以由一个或多个数据库组成,用来持久化存储系统各个阶段的运行信息,包括任务扫描状态、扫描结果等。
[0160]
根据本公开实施例提供的漏洞扫描系统,将漏洞检测流程集成到了扫漏洞扫描系统架构中,并使用yaml表示漏洞检测的规则,作为漏洞扫描工具,将执行代码与检测规则分离开,提高了插件本身的扩展性。编写者只需了解yaml插件的结构,就可以为该扫描器编写漏洞扫描插件,无需为编写插件去学习对应的编程语言,从而降低了插件编写的门槛,让更多的人可以参与到扫描器插件的编写中,方便了扫描器插件的快速扩展。
[0161]
图5是根据一示例性实施例示出的一种任务分解方法的流程图。如图5所示的方法
的执行主体例如可以为图2和/或图3中的调度分解模块,可以应用于上述系统的服务器,也可以应用于上述系统的终端设备。
[0162]
参考图5,本公开实施例提供的方法50可以包括以下步骤。
[0163]
在步骤s502中,获取初始漏洞扫描任务。用户通过api提交的初始漏洞扫描任务中,可以包括目标扫描对象的请求链接、(用户自定义的)请求参数以及(用户指定的)用于进行漏洞扫描的工具标识(identification,id)(即初始扫描工具信息)等信息。
[0164]
在一些实施例中,例如,请求链接可以为任务目标web站点的统一资源定位符(uniform resource locator,url)。请求参数可包括多种参数,例如获取(get)数据、传送(post)数据、请求头中的自定义参数(如发送请求的应用程序名称(user-agent,用户-机构))等。用户自定义的请求参数具有最高优先级,在漏洞扫描模块生成测试请求时优先使用用户自定义的请求参数。规则管理模块中管理的扫描工具设置有id,用于解析、管理时进行识别。
[0165]
在步骤s504中,对初始漏洞扫描任务进行分解,获得目标扫描对象的请求链接、请求参数和初始扫描工具信息。
[0166]
在步骤s506中,根据请求链接和请求参数,生成连接请求。
[0167]
在步骤s508中,将连接请求发送至目标扫描对象。
[0168]
在步骤s510中,接收目标扫描对象响应连接请求返回的连接响应信息。
[0169]
调度分解模块302中的分解器3028可对初始漏洞扫描任务进行分解获得这些信息后,首先根据请求链接和自定义请求参数,构造一个http请求,并发送给任务目标服务器,可验证是否能够访问该站点。并且,在http请求-响应过程中,分解器3028可以解析获得的请求信息(例如包括请求方法、请求头、请求体等)和响应信息(例如包括响应头、响应体等),可以从响应信息中获得任务目标指纹信息,用于步骤s512进行用户指定的漏洞扫描规则的初步筛选。
[0170]
在一些实施例中,例如,若未接收到目标扫描对象对连接请求的响应信息,则无需后续漏洞扫描步骤,即为初始漏洞扫描任务进行了初步筛选,避免了目标扫描对象无法连接却仍进行测试导致的资源浪费。
[0171]
在一些实施例中,例如,具体的请求及响应信息可如下所示:
[0172]
请求头:
[0173]
host:zxczxc-252891199.cos.ap-nanjing.myqcloud.com
[0174]
user-agent:mozilla/5.0(macintosh;inter mac os x 10.15;rv:56.0)gecko/20100101firefox/56.0
[0175]
accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[0176]
accept-language:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=-.3
[0177]
accept-encoding:gzip,deflate
[0178]
connection:close
[0179]
upgrade-insecure-requests:1
[0180]
其中,host为接受请求的服务器地址,可以是ip端口号,也可以是域名;user-agent为发送请求的应用程序名称;connection为指定与连接相关的属性;accept为通知服
务端可以发送的编码格式;accept-encoding为通知服务端可以发送的数据压缩格式;accept-language为通知服务端可以发送的语言;upgrade-insecure-requests:1表示能读懂服务器发过来的上述信息,并且以后发请求时不用http而用https。
[0181]
请求方法可为get或post,get或post数据可为空,也可用默认值请求参数或自定义请求参数。
[0182]
响应头:
[0183]
http/1.1 503 forbidden
[0184]
content-type:application/xml
[0185]
content-length:497
[0186]
connection:close
[0187]
date:tue,16mar 2021 09:07:42gmt
[0188]
server:tencent-cos
[0189]
x-cos-request-id:njalmdclnwvfmzg0zmu0mdlfmjm2mdjfotfyza wma==
[0190]
x-cos-trace-id:
[0191]
ogvmyzzimmqzyja2ownhodk0ntrkmtbiowvmmdaxodc0owrkzjk0zdmlnmilm2e2mtrly2mzzdhmnmi5mwilotbjyze2mjaxn2mlmzjiotdkzjmxmdvlytzjn2fimmi0otlknmizzwmlyzewmjhiotk0njrmzdyzotuyn2fmzdu
[0192]
响应体:
[0193]
《?xml version=’1.0’encoding=’utf-8’?》
[0194]
《error》
[0195]
《code》accessdenied《/code》
[0196]
《message》access denide.《message》
[0197]
《servertime》2021-03-16t09:07:42z《/servertime》
[0198]
《resource》
[0199]
zxczxc-1252891199.cos.ap-nanjing.myqcloud.com《/resource》
[0200]
《resquestid》
[0201]
njalmdclnwvfmzg0zmu0mdlfmjm2mdjfotfyzawma==《/resquestid》
[0202]
《traceid》
[0203]
ogvmyzzimmqzyja2ownhodk0ntrkmtbiowvmmdaxodc0owrkzjk0zdmlnmilm2e2mtrly2mzzdhmnmi5mwilotbjyze2mjaxn2mlmzjiotdkzjmxmdvlytzjn2fimmi0otlknmizzwmlyzewmjhiotk0njrmzdyzotuyn2fmzdu=《/traceid》
[0204]
《/error》
[0205]
其中,响应头中的server为服务器信息,该信息可为任务目标的指纹信息。
[0206]
在步骤s512中,根据连接响应信息和初始扫描工具信息,获得目标扫描工具信息。通过扫描规则管理模块306提供规则执行条件信息,根据连接响应信息中的任务目标的指纹信息,对初始扫描工具进行初步筛选,根据规则执行条件信息验证初始漏洞扫描任务需要调用哪些扫描工具进行扫描,具体实施方式可参照图6。
[0207]
根据本公开实施例提供的任务分解方法,通过对获得的初始漏洞扫描任务进行初始化和分解,根据获得请求链接、请求参数生成并向目标扫描对象发送连接请求,然后根据
响应信息对初始漏洞扫描任务进行初步筛选,从而避免了目标扫描对象无法连接却仍进行测试导致的资源浪费的技术问题。
[0208]
图6示出了图5中所示的步骤s512在一实施例中的处理过程示意图。如图6所示,本公开实施例中,上述步骤s512可以进一步包括以下步骤。
[0209]
步骤s602,根据初始扫描工具信息,从规则管理模块获取与初始扫描工具信息匹配的扫描工具执行规则代码,其中规则管理模块还用于将采用第一语言的扫描工具执行规则转换为符合第三语言的语法的扫描工具执行规则代码,调度分解模块采用第三语言。当初始漏洞扫描任务在任务分解模块中完成初始化之后,进行任务的初步筛选过程。任务分解模块根据扫描工具id从规则管理模块中获取漏洞扫描工具的具体规则信息,任务分解模块所需的扫描工具执行规则信息即为图4中的扫描工具执行条件4022。调度分解模块采用的第三语言可与漏洞扫描模块采用第二语言为相同编程语言,也可与第二语言为不同编程语言。
[0210]
步骤s604,根据扫描工具执行规则代码中描述的匹配目标、匹配方式和匹配内容,以匹配方式将匹配内容与连接响应信息中匹配目标对应的字段进行匹配。扫描工具执行规则代码可由三部分组成,分别为匹配目标、匹配方式和匹配内容,这三部分分别描述了用什么来匹配、怎么匹配和匹配什么。
[0211]
步骤s606,根据匹配结果和初始扫描工具信息对应的初始扫描工具确定目标扫描工具,以获得目标扫描工具对应的目标扫描工具信息。
[0212]
在一些实施例中,例如,可根据匹配结果对初始扫描工具进行筛选,从初始扫描工具中选出目标扫描工具。
[0213]
步骤s6062,在匹配内容与连接响应信息中匹配目标对应的字段匹配成功时,获取扫描工具执行规则代码中描述的属性参数。如图4所示,在扫描工具的规则402中,有一部分用来描述任务分解时的规则的扫描工具执行条件4022,即属性参数,属性参数可分为两种,分别是允许(allow)和不允许(deny),其中allow表示仅匹配到allow配置才会将该扫描工具用于该目标扫描对象(即任务目标,例如web服务器),deny表示匹配到deny配置则不会将该扫描工具用于该目标扫描对象。该属性可根据扫描工具是否适合任务目标服务器进行配置,即该服务器是否需要进行此种漏洞扫描,如果不适合则不用该扫描工具进行扫描,可节省计算资源。
[0214]
步骤s60622,在属性参数为允许时,确定目标扫描工具包括初始扫描工具。确定目标扫描工具包括初始扫描工具时,可将初始扫描工具到加入要执行的安全扫描工具列表,漏洞扫描模块可从调度分解模块获得该列表,即获得目标扫描工具信息。
[0215]
步骤s60624,在属性参数为不允许时,确定目标扫描工具不包括初始扫描工具。
[0216]
步骤s6064,在匹配内容与连接响应信息中匹配目标对应的字段匹配不成功时,确定目标扫描工具包括初始扫描工具。
[0217]
在另一些实施例中,例如,根据匹配结果对初始扫描工具进行筛选时,若初始扫描工具的属性均为deny,可根据连接响应信息中的任务目标指纹信息从规则管理模块中确定合适的目标扫描工具。
[0218]
在一些实施例中,例如,可配置扫描工具执行规则如表2:
[0219]
表2
[0220][0221]
上述规则表明,当响应请求中响应头的server的值等于“nginx”(一种服务器类型),就认为匹配成功,当这个规则在allow下面的时候,就意味可以使用这个规则对应的漏洞扫描工具扫描任务目标服务器;反之,如果这个规则配置在deny下面,就不能使用这个漏洞扫描工具扫描任务目标服务器。
[0222]
根据本公开实施例提供的扫描工具筛选方法,通过根据从规则管理模块获取与初始扫描工具信息匹配的扫描工具执行规则根据初始扫描工具确定目标扫描工具,可避免采用不适用于任务目标的指定的扫描工具执行漏洞扫描任务,节省了计算资源。
[0223]
图7是根据一示例性实施例示出的一种规则管理方法的流程图。如图7所示的方法的执行主体例如可以为图2中的规则管理模块和/或图3中的项目管理仓库3066,可以应用于上述系统的服务器,也可以应用于上述系统的终端设备。
[0224]
参考图7,本公开实施例提供的方法70可以包括以下步骤。
[0225]
在步骤s702中,获取初始版本扫描规则。
[0226]
在步骤s704中,创建初始版本扫描规则的镜像文件。
[0227]
在步骤s706中,获取修改后的镜像文件。
[0228]
在步骤s708中,将修改后的镜像文件与初始版本扫描规则进行合并,获得目标扫描规则。
[0229]
在一些实施例中,例如,项目管理仓库3066(即分布式版本控制工具)可为git仓库,实现扫描工具的存储。图8根据一示例性实施例示出了一种git管理界面示意图。如图8所示,第一栏为可进行操作的菜单栏,包括帮助、添加修改记录、添加证书、添加指南等等。下方为扫描插件(即为上述漏洞扫描工具)列表,列表中包括扫描工具名称、最近更新时间、最新提交内容等等。
[0230]
在一些实施例中,例如,可通过git仓库的合并(merge)和提交(commit)命令实现上述步骤s702至步骤s708。图9根据一示例性实施例示出了一种多人协作管理插件的流程示意图。如图9所示,整个git仓库进行多人协作的过程可以简化如下:对于git插件仓库,存在一个的主(master)分支,主分支头9014相当于一个有效的文件,漏洞扫描模块使用的就是这个master主分支的文件。如果b想要进行修改(s902),就需要先创建(s904)自己的一个分支b,这个分支b可以理解为主分支以前提交的插件信息9002的一个镜像文件,然后在这个文件上进行修改,使用commit命令把修改的地方提交到git仓库的b分支上(s906),而要想让这个修改生效,就需要合并到主分支,这里就使用了merge命令,把b分支上修改的地方合并到主分支9004,在这个过程会经历审核、测试过程,保证这个修改不会影响正常的功能。合并之后,修改就在master主分支上生效了。之后如果a想要进行修改,就需要先创建(s908)自己的一个分支a,然后在这个创建的镜像文件上进行修改,使用commit命令把修改的地方提交到git仓库的a分支上(s910),而要想让这个修改生效也需要合并到主分支,这
里就使用了merge命令,把a分支上修改的地方合并到主分支9006。以上就是使用git仓库进行多人协作的一个简化版的过程。
[0231]
在一些实施例中,例如,图10示出了git仓库在merge时进行自动测试的一个范例。如图10所示,第一栏表示分支向主分支的合并的标识,第一栏下方提示了合并锁定、正在进行的检查流程、提交操作、正在运行的测试名称等等。
[0232]
根据本公开实施例提供的扫描工具筛选方法,采用git分布式版本控制工具对扫描工具进行管理,不仅能够对扫描工具进行存储,而且有效地协调了多人协作功能,使用git进行管理、协同,提高了对扫描工具的处理效率,极大的节省了插件的拓展的成本。
[0233]
图11是根据一示例性实施例示出的一种漏洞扫描流程示意图。如图11所示,在漏洞扫描模块执行扫描任务时(s1102),首先获取待执行漏洞扫描任务(s1104),然后获取目标扫描工具的规则代码,遍历其中的规则执行漏洞检测流程,即从第一条规则开始(s1106),依次执行生成测试请求(s1108)、发送请求并获得响应(s1110)、分析响应与漏洞鉴别(s1112)、存储漏洞检测结果(s1114),然后判断是否存在下一条规则(s1116),若存在下一条规则则返回步骤s1108,若不存在则结束流程(s1118)。
[0234]
图12是根据一示例性实施例示出的一种漏洞扫描装置的框图。如图12所示的装置例如可以应用于上述系统的服务器端,也可以应用于上述系统的终端设备。
[0235]
参考图12,本公开实施例提供的装置120可以包括任务接收单元1202、规则获取单元1204、测试请求生成单元1206、测试请求发送单元1208、测试响应接收单元1210和漏洞鉴别单元1212。
[0236]
任务接收单元1202可用于漏洞扫描模块从调度分解模块获取待执行漏洞扫描任务及目标扫描工具信息。
[0237]
规则获取单元1204可用于漏洞扫描模块根据目标扫描工具信息,从规则管理模块获取与目标扫描工具信息匹配的目标扫描规则代码,其中规则管理模块用于将采用第一语言的目标扫描规则转换为符合第二语言的语法的目标扫描规则代码,漏洞扫描模块采用第二语言。
[0238]
测试请求生成单元1206可用于漏洞扫描模块根据目标扫描规则代码中描述的请求攻击载荷和请求构造规则,生成测试请求;测试请求发送单元,用于漏洞扫描模块将测试请求发送至待执行漏洞扫描任务对应的目标扫描对象。
[0239]
测试请求发送单元1208可用于漏洞扫描模块将测试请求发送至待执行漏洞扫描任务对应的目标扫描对象。
[0240]
测试响应接收单元1210可用于漏洞扫描模块接收目标扫描对象响应测试请求返回的测试响应信息。
[0241]
漏洞鉴别单元1212可用于漏洞扫描模块根据测试响应信息和目标扫描规则代码中描述的响应检测规则,获得目标扫描对象的漏洞扫描结果。
[0242]
图13是根据一示例性实施例示出的另一种漏洞扫描装置的框图。如图13所示的装置例如可以应用于上述系统的服务器端,也可以应用于上述系统的终端设备。
[0243]
参考图13,本公开实施例提供的装置130可以包括任务调度单元13012、任务分解单元13014、连接请求生成单元13015、连接请求发送单元13016、连接响应接收单元13017、目标扫描工具确定单元13018、任务接收单元1302、规则获取单元1304、测试请求生成单元
1306、测试请求发送单元1308、测试响应接收单元1310、漏洞鉴别单元1312和分布式版本控制单元1314,其中,目标扫描工具确定单元13018可以包括:执行规则获取单元130182、执行规则匹配单元130184、扫描工具筛选单元130186,扫描工具筛选单元130186可以包括属性参数获取单元1301862。
[0244]
任务调度单元13012可用于调度分解模块获取初始漏洞扫描任务。
[0245]
任务分解单元13014可用于调度分解模块对初始漏洞扫描任务进行分解,获得目标扫描对象的请求链接、请求参数和初始扫描工具信息。
[0246]
连接请求生成单元13015可用于调度分解模块根据请求链接和请求参数,生成连接请求。
[0247]
连接请求发送单元13016可用于调度分解模块将连接请求发送至目标扫描对象。
[0248]
连接响应接收单元13017可用于调度分解模块接收目标扫描对象响应连接请求返回的连接响应信息。
[0249]
目标扫描工具确定单元13018可用于调度分解模块根据连接响应信息和初始扫描工具信息,获得目标扫描工具信息。
[0250]
执行规则获取单元130182可用于调度分解模块根据初始扫描工具信息,从规则管理模块获取与初始扫描工具信息匹配的扫描工具执行规则代码,其中规则管理模块还用于将采用第一语言的扫描工具执行规则转换为符合第三语言的语法的扫描工具执行规则代码,调度分解模块采用第三语言。
[0251]
执行规则匹配单元130184可用于调度分解模块根据扫描工具执行规则代码中描述的匹配目标、匹配方式和匹配内容,以匹配方式将匹配内容与连接响应信息中匹配目标对应的字段进行匹配。
[0252]
扫描工具筛选单元130186可用于根据匹配结果和初始扫描工具信息对应的初始扫描工具确定目标扫描工具,以获得目标扫描工具对应的目标扫描工具信息。
[0253]
属性参数获取单元1301862可用于在匹配内容与连接响应信息中匹配目标对应的字段匹配成功时,获取扫描工具执行规则代码中描述的属性参数。
[0254]
扫描工具筛选单元130186还可用于在属性参数为允许时,确定目标扫描工具包括初始扫描工具;在属性参数为不允许时,确定目标扫描工具不包括初始扫描工具。
[0255]
扫描工具筛选单元130186还可用于在匹配内容与连接响应信息中匹配目标对应的字段匹配不成功时,确定目标扫描工具包括初始扫描工具。
[0256]
任务接收单元1302可用于漏洞扫描模块从调度分解模块获取待执行漏洞扫描任务及目标扫描工具信息。待执行漏洞扫描任务包括请求链接和请求参数。
[0257]
规则获取单元1304可用于漏洞扫描模块根据目标扫描工具信息,从规则管理模块获取与目标扫描工具信息匹配的目标扫描规则代码,其中规则管理模块用于将采用第一语言的目标扫描规则转换为符合第二语言的语法的目标扫描规则代码,漏洞扫描模块采用第二语言。
[0258]
测试请求生成单元1306可用于漏洞扫描模块根据目标扫描规则代码中描述的请求攻击载荷和请求构造规则,生成测试请求;测试请求发送单元,用于漏洞扫描模块将测试请求发送至待执行漏洞扫描任务对应的目标扫描对象。
[0259]
测试请求生成单元1306还可用于漏洞扫描模块根据请求构造规则,基于请求攻击
载荷对请求链接中请求参数对应的字段进行修改,生成测试请求。
[0260]
测试请求发送单元1308可用于漏洞扫描模块将测试请求发送至待执行漏洞扫描任务对应的目标扫描对象。
[0261]
测试响应接收单元1310可用于漏洞扫描模块接收目标扫描对象响应测试请求返回的测试响应信息。
[0262]
漏洞鉴别单元1312可用于漏洞扫描模块根据测试响应信息和目标扫描规则代码中描述的响应检测规则,获得目标扫描对象的漏洞扫描结果。响应检测规则包括判定漏洞存在的字符。
[0263]
漏洞鉴别单元1312还可用于漏洞扫描模块在测试响应信息中检测到判定漏洞存在的字符时,获得目标扫描对象的漏洞扫描结果为存在漏洞;漏洞扫描模块在测试响应信息中未检测到判定漏洞存在的字符时,获得目标扫描对象的漏洞扫描结果为不存在漏洞。
[0264]
分布式版本控制单元1314可用于规则管理模块获取初始版本扫描规则;创建初始版本扫描规则的镜像文件;获取修改后的镜像文件;将修改后的镜像文件与初始版本扫描规则进行合并,获得目标扫描规则。
[0265]
本公开实施例提供的装置中的各个单元的具体实现可以参照上述方法中的内容,此处不再赘述。
[0266]
图14示出本公开实施例中一种电子设备的结构示意图。需要说明的是,图14示出的设备仅以计算机系统为示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0267]
如图14所示,设备1400包括中央处理单元(cpu)1401,其可以根据存储在只读存储器(rom)1402中的程序或者从存储部分1408加载到随机访问存储器(ram)1403中的程序而执行各种适当的动作和处理。在ram 1403中,还存储有设备1400操作所需的各种程序和数据。cpu1401、rom 1402以及ram 1403通过总线1404彼此相连。输入/输出(i/o)接口1405也连接至总线1404。
[0268]
以下部件连接至i/o接口1405:包括键盘、鼠标等的输入部分1406;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1407;包括硬盘等的存储部分1408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1409。通信部分1409经由诸如因特网的网络执行通信处理。驱动器1410也根据需要连接至i/o接口1405。可拆卸介质1411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1410上,以便于从其上读出的计算机程序根据需要被安装入存储部分1408。
[0269]
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1409从网络上被下载和安装,和/或从可拆卸介质1411被安装。在该计算机程序被中央处理单元(cpu)1401执行时,执行本公开的系统中限定的上述功能。
[0270]
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便
携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0271]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0272]
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括任务接收单元、规则获取单元、测试请求生成单元、测试请求发送单元、测试响应接收单元和漏洞鉴别单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,任务接收单元还可以被描述为“从调度分解模块获取待执行漏洞扫描任务及目标扫描工具信息的单元”。
[0273]
本公开实施例还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备实现:
[0274]
漏洞扫描模块从调度分解模块获取待执行漏洞扫描任务及目标扫描工具信息;漏洞扫描模块根据目标扫描工具信息,从规则管理模块获取与目标扫描工具信息匹配的目标扫描规则代码,其中规则管理模块用于将采用第一语言的目标扫描规则转换为符合第二语言的语法的目标扫描规则代码,漏洞扫描模块采用第二语言;漏洞扫描模块根据目标扫描规则代码中描述的请求攻击载荷和请求构造规则,生成测试请求;漏洞扫描模块将测试请求发送至待执行漏洞扫描任务对应的目标扫描对象;漏洞扫描模块接收目标扫描对象响应测试请求返回的测试响应信息;漏洞扫描模块根据测试响应信息和目标扫描规则代码中描述的响应检测规则,获得目标扫描对象的漏洞扫描结果。
[0275]
本公开实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计
算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
[0276]
以上具体地示出和描述了本公开的示例性实施例。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1