一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

漏洞测试方法及装置与流程

2022-06-05 15:28:10 来源:中国专利 TAG:


1.本技术涉及计算机领域,特别涉及一种漏洞测试方法及装置。


背景技术:

2.传统的漏洞测试依赖于漏洞扫描器(vulnerability scanner)实现。漏洞扫描器是一种计算机程序,用于评估计算机,网络或应用程序是否存在已知漏洞。例如,漏洞扫描器能够识别和检测由于基于网络的资产(例如防火墙,路由器,web服务器,应用程序服务器等)中的错误配置或有缺陷的编程而导致的漏洞。通常漏洞扫描器会根据预先设定的配置信息,如ip地址或者域名等等,向测试目标发起漏洞测试。
3.现有漏洞扫描器测试时效率较低,测试效果不佳。


技术实现要素:

4.本技术实施例提供了一种漏洞测试方法及装置,能够提升测试效果。所述技术方案如下。
5.第一方面,提供了一种漏洞测试方法,在该方法中,通过网关设备获取终端与服务器之间传输的第一报文,所述网关设备部署于所述终端与所述服务器之间,所述第一报文包括第一字段,所述服务器用于向其他设备提供服务;根据所述第一报文包括的第一字段的内容识别所述服务器的服务描述信息,所述服务描述信息包括服务所属的应用类型、提供服务所基于的协议类型、提供服务所基于的资源路径统一资源定位器(uniform resource locator,url)、或提供服务的版本标识;获取所述服务描述信息对应的测试载荷,所述测试载荷是用于测试所述服务对应的漏洞的字符串;通过所述网关设备向所述服务器发送测试报文,所述测试报文是根据所述测试载荷生成的;通过所述网关设备接收来自所述服务器的针对于所述测试报文的响应报文;如果所述响应报文包括所述测试载荷对应的预期结果,确定所述服务器存在所述漏洞,所述预期结果表示所述测试载荷执行成功。
6.第一方面介绍的方法中,通过在终端与服务器进行交互的过程中,利用部署在终端与服务器之间的网关设备来获取终端与服务器交互的报文,根据报文中字段的内容自动地识别出服务器提供服务的一些具体信息,例如应用类型、协议类型、url或者版本等,利用识别出的信息获得相应的测试载荷,利用测试载荷构造测试报文,根据服务器针对测试报文的响应报文从而发现服务器上存在的漏洞。由于利用网关设备上通过的报文识别服务器提供服务的具体信息从而对服务器漏洞测试,一方面提高了漏洞测试效率,另一方面测试的目标更加精细,因此能够显著提升漏洞测试效果。
7.可选地,所述根据所述第一报文包括的第一字段的内容识别所述服务器的服务描述信息,包括:根据所述第一字段的内容查询服务识别库,所述服务识别库中用于保存第一字段中的字符串与服务描述信息的对应关系;如果所述第一字段的内容与所述服务识别库中的目标字符串满足匹配条件,将所述服务识别库中所述目标字符串对应的服务描述信息确定为所述服务器的服务描述信息。
8.基于上述可选方式,有助于提高服务识别的准确性。
9.可选地,所述通过所述网关设备向所述服务器发送测试报文,包括:通过所述网关设备获取所述终端与所述服务器之间传输的第二报文;如果所述第二报文包括所述服务器的url,使用所述测试载荷替换所述第二报文中指定字段的内容,从而生成所述测试报文;通过所述网关设备向所述服务器发送生成的测试报文。
10.基于上述可选方式,能够在客户端请求目标服务器提供服务的情况下,触发针对目标服务器的漏洞测试流程,从而对实时传输的流量进行检测,同时主动发起测试的频率较低,检测目标较为宽泛。
11.可选地,所述第二报文为来自于所述终端、以所述服务器为目的方的请求报文。
12.可选地,所述指定字段为url字段、超文本传输协议(hyper text transfer protocol,http)头字段、http体字段或者载荷字段。
13.可选地,所述使用所述测试载荷替换所述第二报文中指定字段的内容之前,所述方法还包括:以所述第二报文中的所述url为查询索引,查询载荷配置库,得到所述测试载荷以及说明信息,所述载荷配置库用于保存查询索引、测试载荷、说明信息之间的对应关系,所述说明信息用于指示所述测试载荷用于替换所述指定字段的内容;根据所述说明信息确定所述指定字段。
14.可选地,所述通过所述网关设备向所述服务器发送测试报文,包括:根据所述测试载荷、所述服务器的地址以及所述服务器的url生成测试报文,所述测试报文的载荷字段包括所述测试载荷,所述测试报文的目的地址字段包括所述服务器的地址,所述测试报文的url字段包括所述服务器的url;通过所述网关设备向所述服务器发送生成的所述测试报文。
15.基于上述可选方式,能够更快速地发起漏洞测试,支持应急响应的场景。
16.可选地,所述服务描述信息还包括提供服务所基于的容器类型、提供服务所基于的数据库类型、提供服务所基于的脚本语言中的至少一项。
17.基于上述可选方式,有助于更加清晰地描述目标服务器提供的服务,根据服务描述信息便于更精确加载相应的测试载荷,使得漏洞测试的对象更加精准,从而提升漏洞测试效果。
18.可选地,所述第一报文为来自于所述终端、以所述服务器为目的方的请求报文,或者,所述第一报文为来自于所述服务器、以所述终端为目的方的响应报文。
19.可选地,所述第一字段包括互联网协议(internet protocol,ip)地址字段、域名字段、url字段、状态码字段、网络传输协议的标识字段、端口号字段、载荷字段中的至少一项。
20.基于上述可选方式,灵活地定义了测试载荷在测试报文中的很多种携带位置,在实际使用过程中能够根据业务需求选择测试载荷的具体携带位置。
21.第二方面,提供了一种漏洞测试装置,该漏洞测试装置具有实现上述第一方面或第一方面任一种可选方式的功能。该漏洞测试装置包括至少一个单元,至少一个单元用于实现上述第一方面或第一方面任一种可选方式所提供的方法。
22.在一些实施例中,漏洞测试装置中的单元通过软件实现,漏洞测试装置中的单元是程序模块。在另一些实施例中,漏洞测试装置中的单元通过硬件或固件实现。第二方面提
供的漏洞测试装置的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
23.第三方面,提供了一种测试服务器,该测试服务器包括处理器和通信接口,该处理器用于执行程序代码,使得该测试服务器执行上述第一方面或第一方面任一种可选方式所提供的方法,所述通信接口用于接收或发送报文。第三方面提供的测试服务器的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
24.第四方面,提供了一种网关设备,该网关设备包括处理器和通信接口,该处理器用于执行程序代码,使得该网关设备执行上述第一方面或第一方面任一种可选方式所提供的方法,所述通信接口用于接收或发送报文。第四方面提供的网关设备的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
25.第五方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器读取以使测试服务器或网关设备执行上述第一方面或第一方面任一种可选方式所提供的方法。
26.第六方面,提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序指令,当所述计算机程序指令被计算机加载并执行时,使得所述计算机执行上述第一方面或第一方面任一种可选方式所提供的方法。
27.第七方面,提供了一种芯片,当该芯片在测试服务器上运行时,使得测试服务器执行上述第一方面或第一方面任一种可选方式所提供的方法。
28.第八方面,提供了一种芯片,当该芯片在网关设备上运行时,使得网关设备执行上述第一方面或第一方面任一种可选方式所提供的方法。
29.第九方面,提供了一种网络系统,该网络系统包括测试服务器以及网关设备,该测试服务器与网关设备通过网络相连,该网络系统用于执行上述第一方面或第一方面任一种可选方式所述的方法。
附图说明
30.图1是本技术实施例提供的一种应用场景的示意图;
31.图2是本技术实施例提供的一种测试服务器或网关设备的结构示意图;
32.图3是本技术实施例提供的一种漏洞测试方法的流程图;
33.图4是本技术实施例提供的一种漏洞测试方法的流程图;
34.图5是本技术实施例提供的一种漏洞测试方法的流程图;
35.图6是本技术实施例提供的一种漏洞测试装置的结构示意图。
具体实施方式
36.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
37.漏洞测试是网络安全领域中的重要技术。通过漏洞测试,能够发现基于网络的资产(例如防火墙,路由器,web服务器,应用程序服务器等)上存在的漏洞,以便根据发现的漏洞及时更正网络安全漏洞和系统中的错误配置,从而有效地避免黑客利用漏洞发起网络攻击行为,实现防范于未然。
38.传统的漏洞测试依赖于漏洞扫描器实现。在研究过程中发现,使用漏洞扫描器进行漏洞测试时效率较低,而且测试的效果难以保证。主要原因是并不清楚测试目标提供服务的具体信息,比如不清楚测试目标的提供的服务所属的应用类型、测试目标的系统版本、测试目标的资源路径,无法将测试任务快速拆解为细粒度的测试目标,只能将人工设定的互联网协议(internet protocol,ip)地址或者域名作为测试目标进行粗粒度的测试。因此,传统的漏洞扫描器技术使用成本较高,测试效率低下,精确程度不足,测试效果不佳。
39.而本技术实施例提供了一种基于网关实现高效率漏洞测试的方案。本技术方案能够应用在现网应急及应用安全测试等场景中,能够快速实现安全漏洞测试,降低安全应急响应时间、以及应用安全测试时间,提升安全测试效率。相对于传统的漏洞扫描器技术而言,本技术方案在使用成本及精确效果等方面均能够大幅度提升。在实际数据中测试,可100%实现测试目标资源覆盖,特有场景下,无需人工参与,即可多进程、高效率、高产出方式完成安全漏洞测试任务。
40.下面,从应用场景、硬件装置、软件装置、方法流程等多个角度,对本技术方案进行详细介绍。
41.参见附图1,附图1是本技术实施例的典型应用场景100的示意图。附图1所示的场景100包括网关设备110、终端130以及至少一个业务服务器150。可选地,附图1所示的场景100还包括测试服务器120。下面对附图1所示的场景中的各个设备分别进行介绍。
42.(1)终端130
43.终端130例如是服务器、主机、个人计算机、手机或者工作站等。在一些实施例中,终端130安装了浏览器软件或者应用客户端,终端130通过浏览器软件或者应用客户端发送请求报文,从而访问业务服务器150。
44.(2)业务服务器150
45.业务服务器150用于向终端130或者其他设备提供服务。例如,业务服务器150为网页服务器,业务服务器150用于响应来自终端130中浏览器软件的超文本传输协议(hyper text transfer protocol,http)请求,生成并返回http响应,从而为终端130提供访问网页所需的资源。又如,业务服务器150为其他应用服务器,例如游戏服务器、文件服务器、数据库服务器、搜索引擎服务器、即时通信服务器等等,业务服务器150用于响应来自终端130中应用客户端的业务处理请求,从而为应用程序提供后台服务。
46.(3)网关设备110
47.网关设备110部署于终端130与业务服务器150之间。在对业务服务器150进行漏洞测试的过程中,网关设备110用于获取终端130与业务服务器150之间交互的报文、向业务服务器150发送测试报文、接收来自业务服务器150的针对于测试报文的响应报文。网关设备110例如部署在企业网与互联网之间。企业网包括交换机以及业务服务器150。业务服务器150与交换机相连。交换机用于转发业务服务器150与网关设备110之间传输的数据。
48.(4)测试服务器120
49.测试服务器120与网关设备110通过网络相连。测试服务器120用于与网关设备110进行交互从而支持漏洞测试的流程。例如,测试服务器120用于进行服务识别、测试载荷的传递以及对响应报文的验证。
50.值得说明的一点是,附图1是对网关设备110与测试服务器120分离设置的举例说
明。在另一些实施例中,网关设备110与测试服务器120物理上集成在一起。例如,测试服务器120为网关设备110内部的功能模块。比如说,测试服务器120的物理实体是一个业务板,通过在网关设备110中设置该业务板,使得网关设备110集成了漏洞测试的功能。
51.在附图1所示的应用场景中,网关设备110能够充当业务服务器150与终端130之间的通信桥梁,在业务服务器150与终端130之间交互的过程中,网关设备110负责转发业务服务器150与终端130之间交互的报文。具体地,业务服务器150与终端130以请求和应答的方式通信。业务服务器150对终端130发送的一次请求进行处理的流程包括以下步骤1至步骤6。
52.步骤1、用户在终端130上执行操作。终端130响应于用户的操作,通过浏览器或其他客户端访问业务服务器150上的互联网应用服务(例如搜索引擎服务、即时通信应用等)。
53.步骤2、终端130向业务服务器150发送请求报文。其中,请求报文对应的协议例如为http或其他协议。请求报文由终端130发出,到达网关设备110处。
54.步骤3、网关设备110接收到请求报文后,对请求报文的内容进行解析,确定请求报文的发送方为终端130,请求报文的目的方为业务服务器150,则将请求报文转发至业务服务器150。
55.步骤4、业务服务器150接收到请求报文后,对请求报文进行处理。业务服务器150根据处理结果生成响应报文,向终端130返回响应报文。
56.步骤5、在响应报文从业务服务器150发送到终端130的过程中,响应报文会经过网关设备110。网关对响应报文解析处理后,将响应报文原路转发到终端130。
57.步骤6、终端130收到响应报文后,完成一次请求应答流程。
58.参见附图2,附图2示出了本技术一个示例性实施例提供的设备200的结构示意图,附图2所示设备200例如为附图1所示的应用场景中的网关设备110或者测试服务器120。设备200包括至少一个处理器201、通信总线202、存储器203以及至少一个通信接口204。
59.处理器201例如是通用中央处理器(central processing unit,cpu)、网络处理器(network processer,np)、图形处理器(graphics processing unit,gpu)、神经网络处理器(neural-network processing units,npu)、数据处理单元(data processing unit,dpu)、微处理器或者一个或多个用于实现本技术方案的集成电路。例如,处理器201包括专用集成电路(application-specific integrated circuit,asic),可编程逻辑器件(programmable logic device,pld)或其组合。pld例如是复杂可编程逻辑器件(complex programmable logic device,cpld)、现场可编程逻辑门阵列(field-programmable gate array,fpga)、通用阵列逻辑(generic array logic,gal)或其任意组合。
60.通信总线202用于在上述组件之间传送信息。通信总线202可以分为地址总线、数据总线、控制总线等。为便于表示,附图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
61.存储器203例如是只读存储器(read-only memory,rom)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,ram)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光
碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器203例如是独立存在,并通过通信总线202与处理器201相连接。存储器203也可以和处理器201集成在一起。
62.通信接口204使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口204包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,wlan)接口,蜂窝网络通信接口或其组合等。
63.在具体实现中,作为一种实施例,处理器201可以包括一个或多个cpu,如附图2中所示的cpu0和cpu1。
64.在具体实现中,作为一种实施例,设备200可以包括多个处理器,如附图2中所示的处理器201和处理器205。这些处理器中的每一个可以是一个单核处理器(single-cpu),也可以是一个多核处理器(multi-cpu)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
65.在具体实现中,作为一种实施例,设备200还可以包括输出设备和输入设备。输出设备和处理器201通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,lcd)、发光二级管(light emitting diode,led)显示设备、阴极射线管(cathode ray tube,crt)显示设备或投影仪(projector)等。输入设备和处理器201通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
66.在一些实施例中,存储器203用于存储执行本技术方案的程序代码210,处理器201可以执行存储器203中存储的程序代码210。也即是,设备200可以通过处理器201以及存储器203中的程序代码210,来实现下述方法实施例提供的方法。
67.本技术实施例的设备200可对应于下述各个方法实施例中的网关设备或者测试服务器,并且,该设备200中的处理器201、通信接口204等可以实现上述各个方法实施例中网关设备或者测试服务器所具有的功能和/或所实施的各种步骤和方法。为了简洁,在此不再赘述。
68.下面结合附图3对本技术实施例提供的漏洞测试方法进行介绍。附图3是本技术实施例提供的漏洞测试方法300的流程图。
69.方法300涉及两类服务器,一类服务器扮演着测试目标的角色,另一类服务器扮演着等提供测试载荷等相关配置的角色。为了区分描述,方法300用“目标服务器”、“测试服务器”分别指代这两类不同的服务器。
70.可选地,方法300涉及的网关设备、终端、目标服务器以及测试服务器的部署场景如附附图1所示。例如,结合附图1来看,方法300中的网关设备为附图1中的网关设备110,方法300中的终端为附图1中的终端130,方法300中的目标服务器为附图1中的业务服务器150,方法300中的测试服务器为附图1中的测试服务器120。
71.附图3是以网关设备与测试服务器是两个单独的硬件设备为例进行说明的。在网关设备与测试服务器以合设的方式集成在同一台硬件设备(如集成在网关设备上)的情况下,以下测试服务器执行的步骤实际上是网关设备执行的。
72.附图3中的网关设备、终端、目标服务器以及测试服务器具备附图2所示的硬件结构。
73.请参照附图3,本技术实施例提供的漏洞测试方法包括步骤s310至步骤s370。
74.步骤s310、测试服务器通过网关设备获取终端与目标服务器之间传输的第一报文。
75.在终端与目标服务器之间传输报文的过程中,网关设备作为终端与目标服务器之间通信的桥梁,终端或者目标服务器发送的报文会到达网关设备,网关设备能够得到报文。为了区分描述不同的报文,用“第一报文”、“第二报文”分别描述不同的报文。
76.第一报文的类型包括多种情况。在一些实施例中,第一报文为来自于终端、以目标服务器为目的方的请求报文。终端生成并发送第一报文,网关设备接收来自于终端的第一报文。在另一些实施例中,第一报文为来自于目标服务器、以终端为目的方的响应报文。目标服务器生成并发送第一报文,网关设备接收来自于目标服务器的第一报文。在另一些实施例中,第一报文包括请求报文和响应报文。
77.步骤s320、测试服务器根据第一报文包括的第一字段的内容识别目标服务器的服务描述信息。
78.第一报文包括第一字段。第一字段包括ip地址字段、域名字段、统一资源定位器(uniform resource locator,url)字段、状态码字段、网络传输协议的标识字段、端口号字段、载荷字段中的至少一项。ip地址字段的内容为ip地址。域名字段的内容为域名。url字段的内容为url。状态码字段的内容为状态码。网络传输协议的标识字段的内容为网络传输协议的标识。端口号字段的内容为端口号。载荷字段的内容为载荷。
79.服务描述信息用于描述目标服务器提供的服务。具体地,服务描述信息包括目标服务器提供的服务所属的应用类型、目标服务器提供服务所基于的协议类型、目标服务器提供服务所基于的资源路径url、或目标服务器提供服务的版本(version)标识。应用类型例如为weblogic(一种应用服务器软件)或者apache(一种网页服务器软件)等。协议类型例如为服务消息块(server message block,smb,一种文件共享传输协议)、http、远程桌面协议(remote desktop protocol,rdp)、安全外壳协议(secure shell,ssh)等。资源路径url包括端口号以及url中的至少一项。版本标识例如为提供服务的版本号。例如,版本标识为1.0、2.0。
80.在一些实施例中,服务描述信息还包括提供服务所基于的容器类型、提供服务所基于的数据库类型、提供服务所基于的脚本语言中的至少一项。容器类型例如为apache、tomcat等。脚本语言例如为超文本预处理器(hypertext preprocessor,php)、java服务器页面(javaserver page,jsp)等。
81.在一些实施例中,由网关设备执行步骤s320。具体地,网关设备获得第一报文之后,网关设备解析第一报文中第一字段,得到第一字段中的内容。网关设备根据第一字段中的内容识别服务描述信息。
82.本实施例通过提供步骤s320能够达到以下两方面的效果。
83.一方面,有助于漏洞测试时快速拆解出单一测试目标。具体地,现有的漏洞扫描器自定义程度较为困难,通常扫描目标局限为ip地址、域名等。而步骤s320由于利用报文中字段的内容,识别出目标服务器在应用类型、协议类型、资源路径url、版本标识等各种维度的
信息,有助于将测试目标精细到服务特定的应用类型、协议类型、url、版本,使得漏洞测试的对象更加精准。
84.另一方面,由于识别出目标服务器在应用类型、协议类型、资源路径url、版本标识等各种维度的信息,从而清晰地描述目标服务器提供的服务,根据服务描述信息便于更精确加载相应的测试载荷,从而提升漏洞测试效果。
85.步骤s330、测试服务器获取服务描述信息对应的测试载荷。
86.测试载荷是用于测试服务对应的漏洞的字符串。目标服务器解析测试载荷的过程中,会将该字符串转换为相应的命令。该命令用于模拟针对目标服务器提供的服务的攻击。如果目标服务器成功执行该指令,表示目标服务器存在服务对应的漏洞;如果目标服务器拒绝执行该指令,表示目标服务器不存在服务对应的漏洞。
87.例如,测试载荷包括whoami。在计算机领域,whoami是一个能够在很多操作系统上找到的命令。whoami是一连串单词“who am i?”(我是谁?)的串联。如果计算机执行whoami命令,会打印当前用户的有效用户名。本实施例中,通过构造包含whoami的测试报文,模拟了一个未授权用户尝试在服务器执行系统命令whoami。对于服务器来说,不应该存在未授权情况下,任何人或程序能够在服务器执行系统命令whoami。因此,将包含whoami的测试报文发送给目标服务器之后,如果目标服务器针对测试报文返回了执行whoami命令查找到的用户名(例如root、admin、administrator这些用户名),说明目标服务器存在漏洞。
88.又如,测试载荷包括/ws_utc/config.do。/ws_utc/config.do用于测试weblogic服务对应的漏洞。该漏洞具体为通过ws_utc/config.do路径,向weblogic中未授权访问页面上传webshell。
89.步骤s340、测试服务器通过网关设备向目标服务器发送测试报文。
90.在一些实施例中,网关设备根据测试载荷生成测试报文,向目标服务器发送生成的测试报文,使得测试载荷随着测试报文传输到目标服务器。
91.测试报文的类型包括多种情况。在一些实施例中,测试报文为请求(request)报文。例如,测试报文为http请求(http request)报文。比如说,测试报文为http获取(get)请求报文或者http提交(post)请求报文。或者,测试报文为使用get、post之外的其他请求方法的http请求报文。
92.在一些实施例中,测试报文包括测试载荷。测试载荷在测试报文中的携带位置包括多种情况。例如,测试报文包括指定字段,测试报文中指定字段的内容包括测试载荷。换句话说,测试载荷携带在测试报文中的指定字段。可选地,测试报文的指定字段中一部分内容为测试载荷,指定字段中另一部分内容为除测试载荷之外的内容(如url或者正常的业务数据)。
93.下面通过情况一至情况四,对包含测试载荷的指定字段举例说明。
94.情况一、包含测试载荷的指定字段为url字段。
95.在情况一下,使用url字段携带测试载荷。测试报文中url字段的内容包括测试载荷。例如,测试报文包括get/login.php?a=whoami http/1.1。get是测试报文中请求方法字段的内容。/login.php?a=whoami是测试报文中url字段的内容。其中,whoami是url字段中的测试载荷。http/1.1是测试报文中协议版本字段的内容。
96.情况二、包含测试载荷的指定字段为http头(http header)字段。
97.在情况二下,使用http头字段携带测试载荷。测试报文中http头字段的内容包括测试载荷。例如,指定字段具体为http头字段中的主机(host)字段、cookie字段等。换句话说,使用http头字段中的host字段、cookie字段携带测试载荷。
98.情况三、包含测试载荷的指定字段为http体(http body)字段。
99.在情况三下,使用http体字段携带测试载荷。测试报文中http体字段的内容包括测试载荷。
100.情况四、包含测试载荷的指定字段为载荷(payload)字段。
101.在情况四下,使用载荷字段携带测试载荷。测试报文中载荷字段的内容包括测试载荷。测试报文中载荷字段的内容包括测试载荷。
102.通过上述情况一至情况四,灵活地定义了测试载荷在测试报文中的很多种携带位置,在实际使用过程中能够根据业务需求选择测试载荷的具体携带位置。
103.步骤s350、目标服务器接收来自网关设备的测试报文,目标服务器针对测试报文生成响应报文。
104.目标服务器收到测试报文之后,目标服务器根据测试报文获得测试载荷。例如,目标服务器从测试报文的指定字段获得测试载荷。目标服务器对测试载荷进行解析,并针对测试载荷作出响应,从而生成响应报文。在一些实施例中,在测试报文为http请求报文的情况下,响应报文为http响应(response)报文。
105.步骤s360、目标服务器向网关设备发送针对于测试报文的响应报文。
106.步骤s370、测试服务器通过网关设备接收来自目标服务器的针对于测试报文的响应报文。
107.步骤s380、如果响应报文包括测试载荷对应的预期结果,测试服务器确定目标服务器存在漏洞。
108.预期结果表示测试载荷执行成功。例如,测试载荷为whoami,whoami对应的预期结果为目标服务器执行whoami命令查找到的用户名。例如,whoami对应的预期结果包含:root、admin、administrator等关键字。如果响应报文包括root、admin或者administrator,则确定目标服务器存在漏洞。
109.本实施例提供了一种基于网关实现漏洞测试的方法,通过在终端与服务器进行交互的过程中,利用部署在终端与服务器之间的网关设备来获取终端与服务器交互的报文,根据报文中字段的内容自动地识别出服务器提供服务的一些具体信息,例如应用类型、协议类型、url或者版本等,利用识别出的信息获得相应的测试载荷,利用测试载荷构造测试报文,根据服务器针对测试报文的响应报文从而发现服务器上存在的漏洞。由于利用网关设备上通过的报文识别服务器提供服务的具体信息从而对服务器漏洞测试,一方面提高了漏洞测试效率,另一方面测试的目标更加精细,因此能够显著提升漏洞测试效果。
110.附图3所示的漏洞测试方法包括被动的方式以及主动的方式。被动的方式是指在客户端请求目标服务器提供服务的情况下,触发针对目标服务器的漏洞测试流程,具体参见下述实现方式一。主动的方式是指由网关设备主动发起针对目标服务器的漏洞测试流程,具体参见下述实现方式二。
111.实现方式一、当终端与服务器之间传输的流量通过网关设备时,网关设备对收到的报文进行替换从而发送测试报文。
112.例如,实现方式一具体包括下述步骤a至步骤c。
113.步骤a、通过网关设备获取终端与目标服务器之间传输的第二报文。
114.具体地,在终端与服务器之间传输报文的过程中,报文会经过网关设备。网关设备在转发报文的过程中会判断报文中是否包含目标服务器提供服务所基于的url。以网关设备收到的报文包括第二报文和第三报文为例,网关设备分别判断第二报文和第三报文是否包含目标服务器的url。网关设备确定第二报文包含目标服务器提供服务所基于的url,则针对第二报文执行以下步骤b。网关设备确定第三报文不包含目标服务器提供服务所基于的url,则正常转发第三报文。
115.步骤b、如果第二报文包括目标服务器的url,使用测试载荷替换第二报文中指定字段的内容,从而生成测试报文。
116.在一些实施例中,第二报文为来自于终端、以目标服务器为目的方的请求报文。例如,第二报文的目的ip地址字段包括目标服务器的ip地址。第二报文的域名字段包括目标服务器的域名。第二报文的源ip地址字段包括终端的ip地址。
117.在一些实施例中,第二报文为http报文。例如,第二报文为http请求(http request)报文。例如,第二报文为http get请求报文或者http post请求报文。又如,第二报文为使用get、post之外的其他请求方法的http请求报文。
118.在一些实施例中,使用测试载荷替换第二报文中指定字段的一部分内容,并保持指定字段的另一部分内容为原有内容,从而将测试载荷与指定字段的部分内容拼接为指定字段的全部内容。在采用这种方式时,测试报文中指定字段的内容包括测试载荷以及指定字段的原有内容。例如,指定字段为url字段,如果通过网关设备的报文包括目标服务器的url,则网关设备将报文中的url与测试载荷进行替换拼接,从而得到测试报文。
119.例如,目标服务器上提供服务的url为www.test.com/login.php?a=。服务对应的测试载荷为whoami,如果网关设备在流量中发现且匹配有www.test.com/login.php?a=xxx的http请求报文(第二报文),则用测试载荷whoami替换http请求报文中www.test.com/login.php?a=xxx中的xxx,并保持http请求报文中www.test.com/login.php?a=xxx中www.test.com/login.php?a=不变。替换后的http请求报文的url字段的内容为www.test.com/login.php?a=whoami。
120.步骤c、通过网关设备向目标服务器发送生成的测试报文。
121.例如,网关设备生成测试报文后,网关设备根据第二报文的目的ip地址查询路由表项,按照第二报文对应的转发路径将测试报文转发至目标服务器,使得测试报文按照原有的转发路径转发至目标服务器。
122.可选地,在方式一中网关设备只向目标服务器发送生成的测试报文,不再转发第二报文;可替换地,网关设备在向目标服务器发送生成的测试报文的情况下,也可以正常转发第二报文。
123.通过上述实现方式一,能够对实时传输的流量进行检测,同时主动发起测试的频率较低,检测目标较为宽泛。
124.实现方式二、网关设备主动构造和发送测试报文。
125.在实现方式二中,由网关设备充当测试报文的发起方。当需要进行漏洞测试(如接收到来自测试服务器的测试请求)时,网关设备根据测试载荷、目标服务器的地址以及目标
服务器的url生成测试报文。网关设备向目标服务器发送生成的测试报文。其中,测试报文的载荷字段包括测试载荷,测试报文的url字段包括目标服务器的url。
126.通过上述实现方式二,能够更快速地发起漏洞测试,支持应急响应的场景。例如,当网络中不存在向目标服务器传输的流量时,通过执行上述实现方式二,从而立即进行测试。
127.下面对实现漏洞测试相关的一些功能模块进行介绍。
128.在一些实施例中,漏洞测试相关的功能模块包括服务识别库、信息记录库、载荷配置库以及载荷响应验证模块。下面通过(1)至(4)对这些功能模块分别具体介绍。
129.(1)服务识别库
130.服务识别库支持上述方法300中识别服务描述信息的功能。服务识别库用于保存报文中出现的字符串与服务描述信息的对应关系。服务识别库包括至少一个表项。服务识别库中每一个表项包括两类内容。一类内容是报文中可能出现的字符串,例如ip地址、域名、url、状态码、网络传输协议的标识、端口号、载荷中的至少一项,这类内容在查询服务识别库的过程中能够充当查询索引。另一类内容是服务描述信息。
131.例如,请参考下表1,表1是对服务识别库中的表项的举例说明。表1中的每个表项包括url、状态码、端口号以及服务所属的应用类型。其中,url、状态码以及端口号是对报文中出现的字符串的举例说明,应用类型是对服务描述信息的举例说明。如果报文中url字段的内容为/console/login/loginform.jsp,状态码字段的内容为200,端口号字段的内容为7001,通过查询表1所示的表项,能够识别出服务所属的应用类型为weblogic服务。
132.表1
133.url状态码端口号应用类型/console/login/loginform.jsp2007001weblogic/wls-wsat/coordinatorporttype2007001weblogic/_async/asyncresponseservice2007001weblogic
134.又如,请参考下表2,表2也是对服务识别库中的表项的举例说明。表2中的表项包括tcp载荷、端口号以及服务所属的应用类型。其中,tcp载荷以及端口号是对报文中出现的字符串的举例说明,服务所属的应用类型是对服务描述信息的举例说明。如果报文中载荷字段的内容包括ssh-2.0-openssh_7.2p2 ubuntu-4ubuntu2.8,端口号字段的内容为7001,通过查询表2所示的表项,能够识别出服务所属的应用类型为ssh服务。
135.表2
[0136][0137]
(2)信息记录库
[0138]
信息记录库用于保存服务器与针对服务器识别出的服务描述信息之间的对应关系。例如,服务识别库中每一个表项包括两类内容。一类内容是服务器的标识,如服务器的ip地址、服务器的名称、服务器上端口的端口号;另一类内容是服务器的服务描述信息。可选地,信息记录库为关系型数据库;或者,信息记录库为非关系型数据库。
[0139]
例如,请参考下表3,表3是对服务识别库中的表项的举例说明。表3中的表项包括服务器的ip地址、端口号、协议类型以及服务所属的应用类型。其中,ip地址以及端口号是对服务器的标识的举例说明,协议类型以应用类型是对服务描述信息的举例说明。
[0140]
表3
[0141]
服务器的ip地址端口号协议类型应用类型192.168.1.37001httpweblogic
[0142]
(3)载荷配置库
[0143]
载荷配置库支持上述方法300中获取测试载荷的功能。述载荷配置库用于保存查询索引、测试载荷、说明信息之间的对应关系。载荷配置库包括至少一个表项。载荷配置库中每一个表项包括三类内容。一类内容是测试载荷,另一类内容是测试载荷对应的查询索引,另一类内容是关于测试载荷的说明信息。
[0144]
查询索引用于在载荷配置库中查询对应的测试载荷。查询索引与服务描述信息具有全部或部分相同的内容。例如,查询索引为应用类型、协议类型、url或版本标识。
[0145]
说明信息用于指示测试载荷用于替换指定字段的内容。通过在载荷配置库中保存关于测试载荷的说明信息,能够通过查询载荷配置库中的说明信息来确定指定字段。例如,在使用测试载荷对第二报文进行替换的过程中,网关设备以第二报文中的url为查询索引,查询载荷配置库,得到测试载荷以及说明信息。根据说明信息确定指定字段。
[0146]
例如,载荷配置库包括如下表4所示的表项。如果报文中url字段的内容是www.test.com/login.php?a=xxx,以www.test.com/login.php?a=为查询索引,通过查询表4所示的表项,得到测试载荷为whoami,测试载荷的说明信息为替换url字段中a参数的内容,从而确定要使用whoami替换报文中url字段中a参数的内容,也即是将www.test.com/login.php?a=xxx修改为www.test.com/login.php?a=whoami。在这个例子中,url字段即为测试载荷要替换的指定字段。
[0147]
表4
[0148]
查询索引测试载荷说明信息www.test.com/login.php?a=whoami替换url字段中a参数的内容weblogic/ws_utc/config.do替换http体(http body)字段的内容
[0149]
在一些实施例中,载荷配置库还用于保存测试载荷对应的预期结果。例如,载荷配置库中的每条表项除了包括测试载荷、查询索引以及说明信息这三类信息之外,还包括测试载荷对应的预期结果。例如,载荷配置库包括如下表5所示的表项。
[0150]
表5
[0151]
查询索引测试载荷说明信息预期结果www.test.com/login.php?a=whoami替换url字段root、admin、administrator
[0152]
通过使用载荷配置库保存预期结果,在执行附图3所示的漏洞测试方法的过程中,能够查询载荷配置库从而获得测试载荷对应的预期结果。例如,目标服务器上提供服务的url为www.test.com/login.php?a=,网关设备以www.test.com/login.php?a=为查询索引,通过查询表5所示的表项,得到测试载荷为whoami,测试载荷对应的预期结果为root、admin、administrator。
[0153]
在一些实施例中,载荷配置库中每一个表项采用键值对的形式存储。键值对中的
键(key)为查询索引。键值对中的值(value)包括测试载荷、说明信息以及预期结果。
[0154]
在一些实施例中,以上服务识别库以及载荷配置库通过网管人员的配置操作设置。例如,网管人员在服务识别库预先配置各种服务描述信息,网管人员在载荷配置库预先配置各种测试载荷对应的预期结果,从而根据配置操作获得服务识别库以及载荷配置库。
[0155]
(4)载荷响应验证模块
[0156]
载荷响应验证模块用于根据响应报文的内容验证目标服务器上是否存在服务对应的漏洞。具体地,载荷响应验证模块判断响应报文的内容是否包含测试载荷对应的预期结果,如果响应报文的内容包含测试载荷对应的预期结果,则载荷响应验证模块确定目标服务器上存在服务对应的漏洞;如果响应报文的内容不包含测试载荷对应的预期结果,则载荷响应验证模块确定目标服务器上不存在服务对应的漏洞。在一些实施例中,载荷响应验证模块查询载荷配置库,从而获得测试载荷对应的预期结果。
[0157]
以上介绍的各个功能模块能够在网关设备与测试服务器之间任意分配。在一些实施例中,以上介绍的各个功能模块全部设置在测试服务器中;在另一些实施例中,以上介绍的各个功能模块全部设置在网关设备中;在另一些实施例中,以上介绍的各个功能模块中一部分功能模块设置在网关设备,另一部分功能模块设置在测试服务器,换句话说,网关设备与测试服务器分别承担方法300中不同的功能。网关设备与测试服务器通过进行交互来协作执行方法300。
[0158]
下面,对如何利用以上介绍的各个功能模块实现方法300进行说明。
[0159]
其中,网关设备以及测试服务器的实现方式包括合设和分设。在采用分设的方式时,网关设备与测试服务器分别对应于两个单独的硬件设备。采用合设的方式时,网关设备与测试服务器集成在同一台硬件设备中。
[0160]
下面结合附图4,对采用分设的方式时如何部署上述各个功能模块以及如何通过上述各个功能模块进行漏洞测试举例说明,具体参见方式a;结合附图5,对采用合设的方式时如何部署上述各个功能模块以及如何通过上述各个功能模块进行漏洞测试举例说明,具体参见方式b。
[0161]
方式a、测试服务器与网关设备之间进行交互从而执行漏洞测试。
[0162]
具体地,服务识别库、信息记录库、载荷配置库以及载荷响应验证模块部署在测试服务器中。例如,请参考附图4,测试服务器包括服务识别库401、信息记录库402、载荷配置库403、载荷响应验证模块405以及载荷下发模块404。其中,服务识别库401、信息记录库402、载荷配置库403、载荷响应验证模块405请参考上述(1)至(4)的介绍。载荷下发模块404用于将载荷配置库403中的测试载荷下发至网关设备。方式a中漏洞测试的流程包括以下步骤s41至步骤s49。
[0163]
步骤s41、因特网的流量通过网关设备进入目标服务器。
[0164]
步骤s42、网关设备访问测试服务器中预置的服务识别库401,通过查询服务识别库401识别服务描述信息。
[0165]
例如,网关设备接收来自于终端或者服务器的第一报文,网关设备根据第一报文包括的第一字段的内容查询服务识别库401,从而识别服务器的服务描述信息。
[0166]
具体地,步骤s42包括步骤s421至步骤s422。
[0167]
步骤s421、网关设备根据第一报文包括的第一字段的内容查询测试服务器中的服
务识别库401。
[0168]
步骤s422、如果第一字段的内容与服务识别库401中的目标字符串满足匹配条件,网关设备将服务识别库401中目标字符串对应的服务描述信息确定为目标服务器的服务描述信息。
[0169]
目标字符串是服务识别库401中保存的字符串,具体是指与第一字段的内容满足匹配条件的字符串。
[0170]
例如,服务识别库401包括第一表项,第一表项包括第一字段中的字符串以及服务描述信息。在执行步骤s422的过程中,网关设备对第一字段的内容与第一表项中的字符串进行匹配,判断第一字段的内容与第一表项中的字符串是否满足匹配条件。如果第一字段的内容与第一表项中的字符串满足匹配条件,那么第一表项中的字符串即为目标字符串,网关设备会将第一表项中的服务描述信息确定为目标服务器的服务描述信息。如果第一字段的内容与第一表项中的字符串不满足匹配条件,则网关设备继续查询服务识别库401中除第一表项之外的其他表项。
[0171]
在一些实施例中,第一字段的内容与第一表项中的字符串满足匹配条件是指第一字段的内容与第一表项中的字符串相同。在另一些实施例中,第一字段的内容与第一表项中的字符串满足匹配条件是指第一字段的内容包括第一表项中的字符串。可选地,匹配条件根据对识别精度的需求确定。例如,当识别精度为高精度时,网关设备将第一字段的内容与第一表项中的字符串相同确定为匹配条件;当识别精度为低精度时,网关设备将第一字段的内容包括第一表项中的字符串确定为匹配条件。
[0172]
在一些实施例中,查询服务识别库401时采用全字段一一匹配的方式。具体地,第一字段包括ip地址字段、域名字段、url字段、状态码字段、网络传输协议的标识字段、端口号字段、载荷字段中的多项。服务识别库401中的每个表项包括多个字符串。在查询服务识别库401的过程中,网关设备使用第一字段的全部内容与表项中全部字符串分别进行匹配。如果第一字段的全部内容与第一表项中全部字符串分别满足匹配条件,网关设备会将第一表项中的服务描述信息确定为目标服务器的服务描述信息。
[0173]
例如,请参考上表1,采用url字段、状态码字段以及端口号字段这三个字段作为服务识别时使用的字段(第一字段)。报文中url字段的内容为/console/login/loginform.jsp,状态码字段的内容为200,端口号字段的内容为7001。根据/console/login/loginform.jsp、200以及7001,查询服务识别库401中表1所示的表项,确定/console/login/loginform.jsp与表1中第一条表项保存的url相同、且200与表1中第一条表项保存的状态码相同、且7001与表1中第一条表项保存的端口号相同,则确定服务所属的应用类型为表1中第一条表项保存的weblogic。
[0174]
步骤s43、网关设备将识别出的服务描述信息上送至测试服务器。测试服务器接收网关设备上送的服务描述信息,将服务描述信息记录至信息记录库402。
[0175]
步骤s44、测试服务器根据信息记录库402保存的内容查询载荷配置库403,从而确定测试载荷。
[0176]
举例来说,当需要对一台提供weblogic服务的内网服务器进行漏洞测试时,测试服务器根据内网服务器的ip地址查询信息记录库402,从信息记录库402中获得内网服务器提供weblogic服务所基于的url。测试服务器根据url查询载荷配置库403,从而获得url对
应的weblogic服务对应的测试载荷。
[0177]
通过执行上述步骤s43至步骤s44,由于利用信息记录库402存储服务描述信息。当需要进行漏洞测试时,从信息记录库402读取预先存储的服务描述信息,而无需在测试过程中对目标服务器临时进行主动探测以获知具体服务描述信息,从而提升测试效率。
[0178]
步骤s45、测试服务器中的载荷下发模块404生成并向网关设备发送测试请求。
[0179]
其中,测试请求用于指示网关设备根据测试载荷向服务器发送测试报文。测试请求包括测试载荷、目标服务器的地址、目标服务器提供服务所基于的url。例如,测试请求包括192.168.1.1/www.test.com、/login.php?a=、“whoami”。测试服务器通过发送测试请求,从而将测试载荷传递给网关设备。
[0180]
步骤s46、网关设备接收来自测试服务器的测试请求。网关设备从测试请求中获得测试载荷。网关设备根据测试载荷生成测试报文。网关设备向目标服务器发送测试报文。
[0181]
步骤s47、目标服务器接收来自网关设备的测试报文,目标服务器针对测试报文生成响应报文。目标服务器向网关设备发送响应报文。
[0182]
步骤s48、网关设备收到响应报文之后,网关设备对响应报文进行解析,得到响应报文的内容。网关设备将响应报文的内容发送至测试服务器。
[0183]
步骤s49、测试服务器接收响应报文的内容。测试服务器中的载荷响应验证模块405根据响应报文的内容确定漏洞测试结果。具体地,载荷响应验证模块405判断据响应报文是否包括测试载荷对应的预期结果。如果响应报文的内容包括测试载荷对应的预期结果,则测试服务器确定目标服务器存在服务对应的漏洞,即目标服务器存在安全问题。如果响应报文的内容不包括测试载荷对应的预期结果,则测试服务器确定目标服务器不存在服务对应的漏洞,即目标服务器不存在安全问题。
[0184]
方式b、网关设备本地执行漏洞测试。
[0185]
具体地,服务识别库401、信息记录库402、载荷配置库403以及载荷响应验证模块405部署在网关设备中。例如,请参考附图5,网关设备包括服务识别库401、信息记录库402、载荷配置库403以及载荷响应验证模块405。方式b中漏洞测试的流程包括以下步骤s51至步骤s59。步骤s51至步骤s59与上述步骤s41至步骤s49之间的区别主要在于执行主体的不同,步骤s51至步骤s59的细节可参考上述步骤s41至步骤s49的描述。
[0186]
步骤s51、因特网的流量通过网关设备进入目标服务器。
[0187]
步骤s52、网关设备根据本地预置的服务识别库401识别服务描述信息。
[0188]
例如,网关设备接收来自于终端或者服务器的第一报文,网关设备根据第一报文包括的第一字段的内容查询服务识别库401,从而识别服务器的服务描述信息。
[0189]
步骤s53、网关设备将识别出的服务描述信息保存至本地的信息记录库402。
[0190]
步骤s54、网关设备根据信息记录库402保存的内容查询载荷配置库403,从而确定测试载荷。
[0191]
步骤s56、网关设备根据测试载荷生成测试报文。网关设备向目标服务器发送测试报文。
[0192]
步骤s57、目标服务器接收来自网关设备的测试报文,目标服务器针对测试报文生成响应报文。目标服务器向网关设备发送响应报文。
[0193]
步骤s58、网关设备收到响应报文之后,网关设备对响应报文进行解析,得到响应
报文的内容。
[0194]
步骤s59、网关设备中的载荷响应验证模块405判断响应报文的内容是否包括测试载荷对应的预期结果。如果响应报文的内容包括测试载荷对应的预期结果,则网关设备确定目标服务器存在服务对应的漏洞。如果响应报文的内容不包括测试载荷对应的预期结果,则网关设备确定目标服务器不存在服务对应的漏洞。
[0195]
通过上述方式b,由于测试配置模块放置在网关内部实现,不需要单独配置物理设备,完整识别测试逻辑在网关内部实现,效率更高。
[0196]
下面结合一个实例,对漏洞测试的完整流程进行说明。
[0197]
在下述实例中,服务描述信息为目标服务器提供服务所基于的url,该url具体为www.test.com/login.php?a。测试载荷具体为whoami。测试报文为http请求报文,具体为http://www.test.com/login.php?a=whoami请求报文。针对于测试报文的响应报文为http响应报文。下述实例包括以下步骤s61至步骤s65。
[0198]
步骤s61、网关设备生成http://www.test.com/login.php?a=whoami请求报文。
[0199]
如果步骤s61采用上述实现方式一,即被动的方式,网关设备接收到来自于测试服务器的测试请求后,持续静默观测通过网关设备的流量。网关设备解析流量中中是否包含目标服务器提供服务所基于的url(www.test.com/login.php?a)。如果通过网关设备的流量未出现目标服务器提供服务所基于的url(www.test.com/login.php?a),则网关设备正常进行流量转发。如果网关设备在流量中发现且匹配有www.test.com/login.php?a=xxx的http请求,则网关设备使用whoami替换http请求中的url字段的部分内容,从而生成http://www.test.com/login.php?a=whoami请求报文。网关设备向目标服务器发送生成的http://www.test.com/login.php?a=whoami请求报文,使得目标服务器收到http://www.test.com/login.php?a=whoami请求报文。http://www.test.com/login.php?a=whoami请求报文内容如下,该请求报文url字段a参数对应的值为whoami。
[0200]
http://www.test.com/login.php?a=whoami请求报文
[0201]
get/login.php?a=whoami http/1.1
[0202]
host:www.test.com
[0203]
user-agent:mozilla/5.0(macintosh;intel mac os x 10.9;rv:50.0)gecko/20100101firefox/50.0
[0204]
accept:text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
[0205]
以上请求报文url字段a参数对应的值为whoami。
[0206]
如果步骤s61采用上述实现方式二,即主动的方式,网关设备确定测试载荷为whoami、目标服务器的url为www.test.com/login.php?a=,网关设备基于载荷协议构造内容如下所示的http请求报文,并主动向目标服务器发送构造出的http请求报文。
[0207]
http://www.test.com/login.php?a=whoami
[0208]
get/login.php?a=whoami http/1.1
[0209]
host:www.test.com
[0210]
user-agent:mozilla/5.0(macintosh;intel mac os x 10.9;rv:50.0)gecko/20100101firefox/50.0
[0211]
accept:text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
[0212]
步骤s62、目标服务器对网关设备转发来的http://www.test.com/login.php?a=whoami请求报文进行解析。
[0213]
步骤s63、目标服务器解析后作出响应,产生http响应报文。具体地,目标服务器对请求报文中a参数的值进行解析,得到whoami。对于存在漏洞的目标服务器而言,目标服务器解析whoami在后端代码执行过程中,执行whoami命令,返回http响应报文。http响应报文包括执行whoami命令查找到的用户名。例如,http响应报文的内容如下所示,http响应报文的body字段包括root。
[0214]
http/1.1 200ok
[0215]
date:sat,31dec 2005 23:59:59gmt
[0216]
content-type:text/html;charset=iso-8859-1
[0217]
content-length:122
[0218]
<html>
[0219]
<head>
[0220]
</head>
[0221]
<body>
[0222]
root
[0223]
</body>
[0224]
</html>
[0225]
步骤s64、网关设备收到目标服务器发送过来的http响应报文后,对http响应报文进行解析,得到http响应报文的内容。
[0226]
步骤s65、测试服务器或者网关设备对http响应报文的内容进行验证。具体验证方式为判断http响应报文的内容是否包括root、admin或者administrator等关键字,如果http响应报文的内容包括root、admin或者administrator等关键字,则确定载荷执行成功,服务端存在安全问题。例如针对如上所示的http响应报文而言,由于http响应报文包括root,则确定目标服务器存在漏洞。
[0227]
可选地,在步骤s61采用上述实现方式一的情况下,网关设备还执行以下步骤s66。在步骤s61采用上述实现方式二的情况下,网关设备不执行以下步骤s66。
[0228]
步骤s66、网关设备进行载荷验证之后,网关设备按照流量原始发送方向,将响应报文转发至相应的目的设备(如服务器或终端)。
[0229]
以下介绍本技术实施例提供的漏洞测试装置。以下介绍的漏洞测试装置具有上述图3、图4或图5所示方法中测试服务器或者网关设备的任意功能。
[0230]
图6示出了漏洞测试装置800的一种可能的结构示意图。图6所示的装置800例如实现图3所示方法中测试服务器或者网关设备的功能,或者,装置800实现图4所示方法中测试服务器或者网关设备的功能,或者,装置800实现图5所示方法中测试服务器或者网关设备的功能。可选地,图6所示装置800为附图1所示的应用场景中的网关设备110或者测试服务器120。可选地,图6所示装置800为图2中的设备200。
[0231]
请参考附图6,装置800包括获取单元801、处理单元802和发送单元803。装置800中
的各个单元全部或部分地通过软件、硬件、固件或者其任意组合来实现。装置800中的各个单元用于执行上述图3、图4或图5所示方法中测试服务器或者网关设备的相应功能。具体地,获取单元801用于支持装置800执行图3中的s310、s330以及s370。处理单元802用于支持装置800执行图3中的s320以及s380。发送单元803用于支持装置800执行图3中的s340。
[0232]
在一些实施例中,获取单元801、处理单元802或发送单元803还用于支持装置800执行本文所描述的技术中测试服务器或者网关设备执行的其它过程。例如,获取单元801用于支持装置800执行实现方式一中的步骤a、步骤s43中接收服务描述信息的过程、步骤s46中接收测试请求的过程、以及测试服务器或者网关设备执行的其他接收操作。处理单元802用于支持装置800执行实现方式一中的步骤b、实现方式二中生成测试报文的步骤、图4中的步骤s42、步骤s43中记录服务描述信息的过程、步骤s44、步骤s45或步骤s46中生成测试报文的过程、步骤s48中解析响应报文的过程、步骤s49中确定漏洞测试结果的过程、图5中的步骤s52、步骤s53、步骤s54、步骤s59、以及测试服务器或者网关设备执行的其他处理操作。发送单元803用于支持装置800执行实现方式一中的步骤c、实现方式二中发送测试报文的步骤、图4中的步骤s45、步骤s45或步骤s46中发送测试报文的过程、图5中的步骤s56、以及测试服务器或者网关设备执行的其他发送操作。具体执行过程请参考图3、图4或图5所示方法中相应步骤的详细描述,这里不再一一赘述。
[0233]
本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可选地有另外的划分方式。
[0234]
在一些实施例中,装置800中各个单元集成在一个单元中。例如,装置800中各个单元集成在同一个芯片上。该芯片包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口。处理单元802通过芯片中的处理电路实现。获取单元801通过芯片中的输入接口实现。发送单元803通过芯片中的输出接口实现。例如,该芯片通过一个或多个现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑器件(programmable logic device,pld)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本技术通篇所描述的各种功能的电路的任意组合实现。
[0235]
在另一些实施例中,装置800各个单元单独物理存在。在另一些实施例中,装置800一部分单元单独物理存在,另一部分单元集成在一个单元中。例如,在一些实施例中,处理单元802和发送单元803是同一个单元。在另一些实施例中,处理单元802和发送单元803是不同的单元。在一些实施例中,不同单元的集成采用硬件的形式实现,即,不同单元对应于同一个硬件。又如,不同单元的集成采用软件单元的形式实现。
[0236]
在装置800中通过硬件实现的情况下,装置800中处理单元802例如通过附图2所示的设备200中的处理器201实现。装置800中获取单元801、发送单元例如通过附图2所示的设备200中的通信接口204实现。
[0237]
在装置800中通过软件实现的情况下,装置800中各个单元例如为设备200中的处理器201读取存储器203中存储的程序代码210后生成的软件。例如,装置800为虚拟化设备。虚拟化设备包括而不限于虚拟机、容器、pod中的至少一种。在一些实施例中,装置800以虚拟机的形式,部署在硬件设备(如物理服务器)上。例如,基于通用的物理服务器结合网络功能虚拟化(network functions virtualization,nfv)技术来实现装置800。采用虚拟机的方式实现时,装置800例如为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅
读本技术即可结合nfv技术在通用物理服务器上虚拟出装置800。在另一些实施例中,装置800以容器(例如docker容器)的形式,部署在硬件设备上。例如,装置800执行上述方法实施例的流程被封装在镜像文件中,硬件设备通过运行镜像文件来创建装置800。在另一些实施例中,装置800以pod的形式,部署在硬件设备上。pod包括多个容器,每个容器用于实现装置800中的一个或多个单元。
[0238]
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0239]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
[0240]
本技术中术语“第一”、“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。例如,在不脱离各种示例的范围的情况下,第一报文可以被称为第二报文,并且类似地,第二报文可以被称为第一报文。第一报文和第二报文都可以是报文,并且在某些情况下,可以是单独且不同的报文。
[0241]
本技术中术语“至少一个”的含义是指一个或多个。
[0242]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本技术实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
[0243]
该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,dvd)、或者半导体介质(例如固态硬盘)等。前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0244]
以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献