用于文件上传漏洞的检测方法和检测装置转让专利

申请号 : CN202110397528.7

文献号 : CN113114680B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴鸿霖吕博良卓越姜城

申请人 : 中国工商银行股份有限公司

摘要 :

本公开提供了一种用于文件上传漏洞的检测方法,属于信息安全领域。所述方法包括:获取网站的访问请求;当所述访问请求为文件上传请求时,基于所述访问请求构造至少一个漏洞攻击报文;将所述漏洞攻击报文发送至所述网站,以获得所述网站针对所述漏洞攻击报文反馈的测试响应报文;比较所述测试响应报文与原始响应报文,其中,所述原始响应报文为所述网站针对所述访问请求反馈的响应报文;以及当比较结果表征所述测试响应报文与所述原始响应报文的差异性满足预定条件时,确定所述网站存在漏洞。本公开的实施例还提供了一种用于文件上传漏洞的检测装置、电子设备、及计算机可读存储介质。

权利要求 :

1.一种用于文件上传漏洞的检测方法,包括:

获取网站的访问请求;

当所述访问请求为文件上传请求时,基于所述访问请求构造至少一个漏洞攻击报文,其中,通过以下至少两种方式获得至少一个所述漏洞攻击报文:使用测试用文件扩展名替换所述访问请求的报文中的文件扩展名;根据所述访问请求的报文中的文件扩展名,生成与该文件扩展名对应的恶意代码,并将该恶意代码插入到所述访问请求的报文中的文件信息中;或者,根据所述访问请求的报文中的文件扩展名,生成一个文件大小大于预定值的具有该文件扩展名的上传文件,并以该上传文件替换所述访问请求的报文中的文件;

将所述漏洞攻击报文发送至所述网站,以获得所述网站针对所述漏洞攻击报文反馈的测试响应报文;

比较所述测试响应报文与原始响应报文的格式及大小,其中,所述原始响应报文为所述网站针对所述访问请求反馈的响应报文;以及当比较结果表征所述测试响应报文与所述原始响应报文的差异性满足预定条件时,确定所述网站存在漏洞,并根据所述漏洞攻击报文的获得方式,确定所述网站所存在的漏洞的类型和/或漏洞的内容;其中,所述预定条件包括所述测试响应报文与所述原始响应报文的格式一致,且所述测试响应报文和所述原始响应报文的差异度小于或等于阈值。

2.根据权利要求1所述的方法,其中,所述比较所述测试响应报文与原始响应报文还包括:在所述测试响应报文和所述原始响应报文的格式及大小均一致时,根据报文的格式计算所述差异度。

3.根据权利要求2所述的方法,其中,所述根据报文的格式计算所述差异度包括:当报文的格式为HTML时,根据所述测试响应报文和所述原始响应报文的DOM树和CSS‑DOM树的编辑距离计算所述差异度;

当报文的格式为XML时,根据所述原始响应报文和所述测试响应报文的DOM树的编辑距离计算所述差异度;或者当报文的格式为字符串或二进制数据时,根据所述原始响应报文和所述测试响应报文的SimHash值计算所述差异度。

4.根据权利要求2所述的方法,其中,所述方法还包括:

当比较结果表征所述测试响应报文和所述原始响应报文的格式或大小至少一项不一致时,确定所述网站不存在漏洞。

5.根据权利要求2所述的方法,其中,所述方法还包括:

当所述差异度大于所述阈值时,确定所述网站不存在漏洞。

6.根据权利要求1所述的方法,其中,在所述替换所述访问请求的报文中的文件扩展名之前,所述方法还包括:获取用于替换所述访问请求的报文中的文件扩展名的至少一个测试用文件扩展名,包括以如下至少一种方式获得所述测试用文件扩展名:收集漏洞测试的常用扩展名;

利用所述访问请求的报文中的文件扩展名,按照预定规则智能构造特殊扩展名;或者将所述访问请求的报文中的文件扩展名与所述常用扩展名和/或所述特殊扩展名组合,形成新的扩展名。

7.一种用于文件上传漏洞的检测装置,包括:

获取模块,用于获取网站的访问请求;

构造模块,用于当所述访问请求为文件上传请求时,基于所述访问请求构造至少一个漏洞攻击报文,其中,通过以下至少两种方式获得至少一个所述漏洞攻击报文:使用测试用文件扩展名替换所述访问请求的报文中的文件扩展名;根据所述访问请求的报文中的文件扩展名,生成与该文件扩展名对应的恶意代码,并将该恶意代码插入到所述访问请求的报文中的文件信息中;或者,根据所述访问请求的报文中的文件扩展名,生成一个文件大小大于预定值的具有该文件扩展名的上传文件,并以该上传文件替换所述访问请求的报文中的文件;

攻击模块,用于将所述漏洞攻击报文发送至所述网站,以获得所述网站针对所述漏洞攻击报文反馈的测试响应报文;

比较模块,用于比较所述测试响应报文与原始响应报文的格式及大小,其中,所述原始响应报文为所述网站针对所述访问请求反馈的响应报文;以及确定模块,用于当比较结果表征所述测试响应报文与所述原始响应报文的差异性满足预定条件时,确定所述网站存在漏洞,并及根据所述漏洞攻击报文的获得方式,确定所述网站所存在的漏洞的类型和/或漏洞的内容;其中,所述预定条件包括所述测试响应报文与所述原始响应报文的格式一致,且所述测试响应报文和所述原始响应报文的差异度小于或等于阈值。

8.一种电子设备,包括:

一个或多个存储器,存储有可执行指令;以及

一个或多个处理器,执行所述可执行指令,以实现根据权利要求1~6中任一项所述的方法。

9.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~6中任一项所述的方法。

说明书 :

用于文件上传漏洞的检测方法和检测装置

技术领域

[0001] 本公开属于信息安全技术领域;更具体地,涉及一种用于文件上传漏洞的检测方法和检测装置。

背景技术

[0002] 在现代互联网的web应用程序当中,为了提高业务效率,往往有上传文件的功能,但是这也会提高web应用受到攻击的风险,如果web应用存在文件上传漏洞,那么攻击者就
可以利用这个漏洞进行攻击,进而造成控制整个网站,甚至控制服务器的危害。

发明内容

[0003] 有鉴于此,本公开实施例提供了一种用于文件上传漏洞的检测方法、检测装置、电子设备、以及计算机可读存储介质。
[0004] 本公开实施例的一个方面提供了一种用于文件上传漏洞的检测方法。所述检测方法包括:获取网站的访问请求;当所述访问请求为文件上传请求时,基于所述访问请求构造至少一个漏洞攻击报文;将所述漏洞攻击报文发送至所述网站,以获得所述网站针对所述
漏洞攻击报文反馈的测试响应报文;比较所述测试响应报文与原始响应报文,其中,所述原始响应报文为所述网站针对所述访问请求反馈的响应报文;以及当比较结果表征所述测试
响应报文与所述原始响应报文的差异性满足预定条件时,确定所述网站存在漏洞。
[0005] 根据本公开的实施例,所述预定条件包括:所述测试响应报文和所述原始响应报文的格式一致,且所述测试响应报文和所述原始响应报文的差异度小于或等于阈值。
[0006] 根据本公开的实施例,所述比较所述测试响应报文与原始响应报文包括:比较所述测试响应报文和所述原始响应报文的格式及大小。
[0007] 根据本公开的实施例,所述比较所述测试响应报文与原始响应报文还包括:在所述测试响应报文和所述原始响应报文的格式及大小均一致时,根据报文的格式计算所述差
异度。
[0008] 根据本公开的实施例,所述根据报文的格式计算所述差异度包括:当报文的格式为HTML时,根据所述测试响应报文和所述原始响应报文的DOM树和CSS‑DOM树的编辑距离计算所述差异度;当报文的格式为XML时,根据所述原始响应报文和所述测试响应报文的DOM
树的编辑距离计算所述差异度;或者当报文的格式为字符串或二进制数据时,根据所述原
始响应报文和所述测试响应报文的SimHash值计算所述差异度。
[0009] 根据本公开的实施例,所述方法还包括:当比较结果表征所述测试响应报文和所述原始响应报文的格式或大小至少一项不一致时,确定所述网站不存在漏洞。
[0010] 根据本公开的实施例,所述方法还包括当所述差异度大于所述阈值时,确定所述网站不存在漏洞。
[0011] 根据本公开的实施例,当所述访问请求为文件上传请求时,基于所述访问请求构造至少一个漏洞攻击报文包括通过以下至少一种方式获得至少一个所述漏洞攻击报文:使
用测试用文件扩展名替换所述访问请求的报文中的文件扩展名;根据所述访问请求的报文
中的文件扩展名,生成与该文件扩展名对应的恶意代码,并将该恶意代码插入到所述访问
请求的报文中的文件信息中;或者根据所述访问请求的报文中的文件扩展名,生成一个文
件大小大于预定值的具有该文件扩展名的上传文件,并以该上传文件替换所述访问请求的
报文中的文件。
[0012] 根据本公开的实施例,在所述替换所述访问请求的报文中的文件扩展名之前,所述方法还包括获取用于替换所述访问请求的报文中的文件扩展名的至少一个测试用文件
扩展名,具体包括以如下至少一种方式获得所述测试用文件扩展名:收集漏洞测试的常用
扩展名;利用所述访问请求的报文中的文件扩展名,按照预定规则智能构造特殊扩展名;或者将所述访问请求的报文中的文件扩展名与所述常用测试扩展名和/或所述特殊扩展名组
合,形成新的扩展名。
[0013] 根据本公开的实施例,所述当所述测试响应报文与原始响应报文的差异性满足预定条件时,确定所述网站存在漏洞,包括根据所述漏洞攻击报文的获得方式,确定所述网站所存在的漏洞的类型。
[0014] 本公开实施例的另一方面,提供了一种用于文件上传漏洞的检测装置。所述装置包括获取模块、构造模块、攻击模块、比较模块以及确定模块。获取模块用于获取网站的访问请求。构造模块用于当所述访问请求为文件上传请求时,基于所述访问请求构造至少一
个漏洞攻击报文。攻击模块用于将所述漏洞攻击报文发送至所述网站,以获得所述网站针
对所述漏洞攻击报文反馈的测试响应报文。比较模块用于比较所述测试响应报文与原始响
应报文,其中,所述原始响应报文为所述网站针对所述访问请求反馈的响应报文。确定模块用于当比较结果表征所述测试响应报文与所述原始响应报文的差异性满足预定条件时,确
定所述网站存在漏洞。
[0015] 根据本公开的实施例,所述预定条件包括所述测试响应报文和所述原始响应报文的格式一致,且所述测试响应报文和所述原始响应报文的差异度小于或等于阈值。
[0016] 根据本公开的实施例,所述比较模块包括第一比较子模块。所述第一比较子模块用于比较所述测试响应报文和所述原始响应报文的格式及大小。
[0017] 根据本公开的实施例,所述比较模块还包括第二比较子模块。所述第二比较子模块用于在所述测试响应报文和所述原始响应报文的格式及大小均一致时,根据报文的格式
计算所述差异度。
[0018] 根据本公开的实施例,所述第二比较子模块还用于:当报文的格式为HTML时,根据所述测试响应报文和所述原始响应报文的DOM树和CSS‑DOM树的编辑距离计算所述差异度;当报文的格式为XML时,根据所述原始响应报文和所述测试响应报文的DOM树的编辑距离计
算所述差异度;或者当报文的格式为字符串或二进制数据时,根据所述原始响应报文和所
述测试响应报文的SimHash值计算所述差异度。
[0019] 根据本公开的实施例,所述确定模块还用于当比较结果表征所述测试响应报文和所述原始响应报文的格式或大小至少一项不一致时,确定所述网站不存在漏洞。
[0020] 根据本公开的实施例,所述确定模块还用于当所述差异度大于所述阈值时,确定所述网站不存在漏洞。
[0021] 根据本公开的实施例,所述构造模块包括扩展名替换子模块、恶意代码插入子模块、以及大文件生成子模块。其中,所述构造模块通过扩展名替换子模块、恶意代码插入子模块、或大文件生成子模块中的任意一个来获得至少一个所述漏洞攻击报文。扩展名替换
子模块用于使用测试用文件扩展名替换所述访问请求的报文中的文件扩展名。恶意代码插
入子模块用于根据所述访问请求的报文中的文件扩展名,生成与该文件扩展名对应的恶意
代码,并将该恶意代码插入到所述访问请求的报文中的文件信息中。大文件生成子模块用
于根据所述访问请求的报文中的文件扩展名,生成一个文件大小大于预定值的具有该文件
扩展名的上传文件,并以该上传文件替换所述访问请求的报文中的文件。
[0022] 根据本公开的实施例,所述构造模块还包括扩展名构造子模块。所述扩展名构造子模块用于在所述替换所述访问请求的报文中的文件扩展名之前,获取用于替换所述访问
请求的报文中的文件扩展名的至少一个测试用文件扩展名。具体地,扩展名构造子模块用
于以如下至少一种方式获得所述测试用文件扩展名:收集漏洞测试的常用扩展名;利用所
述访问请求的报文中的文件扩展名,按照预定规则智能构造特殊扩展名;或者将所述访问
请求的报文中的文件扩展名与所述常用测试扩展名和/或所述特殊扩展名组合,形成新的
扩展名。
[0023] 根据本公开的实施例,所述确定模块还用于根据所述漏洞攻击报文的获得方式,确定所述网站所存在的漏洞的类型。
[0024] 本公开实施例的另一方面,提供了一种电子设备。所述电子设备包括一个或多个存储器、以及一个或多个处理器。所述存储器存储有可执行指令。所述处理器执行所述可执行指令以实现如上所述的方法。
[0025] 本公开实施例的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
[0026] 本公开实施例的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
[0027] 上述一个或多个实施例具有如下优点或益效果:可以至少部分地实现对网站的文件上传漏洞的全流程自动化检测的技术效果,可有效提高文件上传漏洞的检测效率及准确
率。

附图说明

[0028] 通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
[0029] 图1示意性示出了根据本公开实施例的用于文件上传漏洞的检测方法和检测装置的系统架构;
[0030] 图2示意性示出了根据本公开实施例的用于文件上传漏洞的检测方法的流程图;
[0031] 图3示意性示出了根据本公开实施例的用于文件上传漏洞的检测方法的构思示意;
[0032] 图4示意性示出了根据本公开实施例的构造漏洞攻击报文的过程示意;
[0033] 图5示意性示出了根据本公开另一实施例的用于文件上传漏洞的检测方法的流程图;
[0034] 图6示意性示出了根据本公开再一实施例的用于文件上传漏洞的检测方法的流程图;
[0035] 图7示意性示出了根据本公开实施例的用于文件上传漏洞的检测装置的框图;
[0036] 图8示意性示出了图7所示的检测装置中构造模块的框图;
[0037] 图9示意性示出了根据本公开另一实施例的用于文件上传漏洞的检测装置的框图;
[0038] 图10示意性示出了图9所示的检测装置中文件上传测试案例自动执行模块的框图;
[0039] 图11示意性示出了图9所示的检测装置中文件上传测试结果智能分析模块的框图;
[0040] 图12示意性示出了图9所示的检测装置中测试结果反馈模块的框图;以及
[0041] 图13示意性示出了适于实现根据本公开实施例的检测方法和检测装置的电子设备的方框图。

具体实施方式

[0042] 以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
[0043] 本公开的实施例提供了一种用于文件上传漏洞的检测方法、检测装置、电子设备、以及计算机可读存储介质。该检测方法包括:获取网站的访问请求;当访问请求为文件上传请求时,基于访问请求构造至少一个漏洞攻击报文;将漏洞攻击报文发送至网站,以获得网站针对漏洞攻击报文反馈的测试响应报文;比较测试响应报文与原始响应报文,其中,原始响应报文为网站针对访问请求反馈的响应报文;以及当比较结果表征测试响应报文与原始响应报文的差异性满足预定条件时,确定网站存在漏洞。
[0044] 本公开的实施例可以至少部分地实现对网站的文件上传漏洞的全流程自动化检测,可有效提高文件上传漏洞的检测效率及准确率。
[0045] 本公开的各个实施例中,可以自动获取网站的文件上传请求,并根据文件上传请求自动构造至少一个漏洞攻击报文对网站进行攻击测试,可以一定程度上解决相关技术中
漏洞检测时局限于某个特定的环境、测试类型过于单一导致无法全量覆盖、漏洞漏报的问
题。
[0046] 本公开的各个实施例,可以通过比较测试响应报文与原始响应报文的差异性,自动判断漏洞攻击报文是否攻击成功,从而可以自动地判断出网站是否存在漏洞。以此方式
可以有效提高相关技术中手动测试效率低的问题,提高漏洞检测的准确率。
[0047] 需要说明的是,本公开实施例确定的用于文件上传漏洞的检测方法和检测装置可用于金融领域,也可用于除金融领域之外的任意领域,本公开对应用领域不做限定。
[0048] 图1示意性示出了根据本公开实施例的用于文件上传漏洞的检测方法和检测装置的系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他
设备、系统、环境或场景。
[0049] 如图1所示,该系统架构100可以包括测试人员101、浏览器或App102、检测装置103、以及目标应用服务器104。其中,目标应用服务器104可以为测试人员101通过浏览器或App102中浏览的网站提供后台管理服务。检测装置103可以执行根据本公开实施例的检测
方法,对目标应用服务器104所支持的网站的文件上传漏洞进行检测。
[0050] 本公开实施例适用于软件开发生命周期中的开发阶段、功能测试阶段和安全测试阶段。所以,测试人员101可以为开发人员、功能测试人员、安全测试人员等。
[0051] 测试人员101可以在通过浏览器或APP102发起访问请求11(例如,http请求)。该访问请求11一方面可以以常规访问网站的方式到达目标应用服务器104,另一方面该访问请
求11会被检测装置103获取到(例如,复制),然后由检测装置103根据该访问请求11构造漏
洞攻击报文12,并进行漏洞检测。
[0052] 目标应用服务器104在接收到访问请求11时,会反馈原始响应报文(图中未示出)。同时,目标应用服务器104在接收到漏洞攻击报文12时,也相应地反馈测试响应报文13。
[0053] 检测装置103可以执行根据本公开实施例的检测方法,一方面获取测试人员发起的访问请求11,并在该访问请求11为文件上传请求时构造漏洞攻击报文12,然后将漏洞攻
击报文12发送给目标应用服务器。另一方面,会获取到原始响应报文和测试响应报文13,并基于原始响应报文和测试响应报文13的比较,得到漏洞检测结果14,然后将漏洞检测结果
14反馈给浏览器或App102,以便测试人员查看。
[0054] 该检测装置103可以实现为下文所描述的检测装置700、检测装置900、电子设备1300、计算机可读存储介质、或者计算机程序中的任意一个或者任意多个的组合,具体根据实际需要确定,本公开不予限定。
[0055] 图2示意性示出了根据本公开实施例的用于文件上传漏洞的检测方法200的流程图。如图2所示,该检测方法200可以包括操作S210~操作S250。
[0056] 图3示意性示出了根据本公开实施例的用于文件上传漏洞的检测方法的构思示意。结合图3对该检测方法200说明如下。
[0057] 在操作S210,获取网站的访问请求30;
[0058] 在操作S220,当访问请求30为文件上传请求时,基于访问请求30构造至少一个漏洞攻击报文301、302、303。
[0059] 在操作S230,将漏洞攻击报文301/302/303(即,301~303中的每一个或任意一个)发送至网站,以获得网站针对漏洞攻击报文301/302/303反馈的测试响应报文311/312/
313。
[0060] 在操作S240,比较测试响应报文311/312/313与原始响应报文31,其中,原始响应报文31为网站针对访问请求30反馈的响应报文。
[0061] 在操作S250,当比较结果VS1/VS2/VS3表征测试响应报文311/312/313与原始响应报文31的差异性满足预定条件时,确定网站存在漏洞。
[0062] 根据本公开一实施例,该预定条件例如可以是测试响应报文311/312/313和原始响应报文31的格式一致,且测试响应报文311/312/313和原始响应报文30的差异度小于或
等于阈值。报文的格式可以通过报文的后缀名(诸如.html,.txt,或.xml等)来确定。
[0063] 具体地,当测试响应报文311/312/313和原始响应报文31的格式不一致是,说明网站能够区分出访问请求的报文30和漏洞攻击报文301/302/303,从而说明攻击不成功,网站不存在相应的漏洞。
[0064] 当测试响应报文311/312/313和原始响应报文31的格式一致时,可以直接比较测试响应报文311/312/313和原始响应报文31的差异度是否小于或等于阈值。若是则说明测
试响应报文311/312/313和原始响应报文31非常相似甚至相同,则认为网站难以区分出访
问请求的报文30和漏洞攻击报文301/302/303,从而说明攻击成功,网站存在相应的漏洞。
[0065] 在另一些实施例中,当测试响应报文311/312/313和原始响应报文31的格式一致时,可以先比较测试响应报文311/312/313和原始响应报文31的大小。当大小一致时再进一步判断测试响应报文311/312/313和原始响应报文31的差异度是否小于或等于阈值。而当
测试响应报文311/312/313和原始响应报文31的大小不一致(例如,数量级不同)时,说明网站能够区分出测试响应报文311/312/313和原始响应报文31,此时就可以确定网站不存在
相应的攻击漏洞,因而也不需要再进一步计算差异度。这样先根据格式和大小两个维度参
数快速直观判断报文的差异,可以提高检测效率。
[0066] 根据本公开的一个实施例,在当测试响应报文311/312/313和原始响应报文31的格式一致时,计算差异度时根据报文的格式不同计算方式可以不同。例如,当报文的格式为HTML时,根据测试响应报文和原始响应报文的DOM树和CSS‑DOM树的编辑距离计算差异度
(例如,分别计算两个报文的DOM树的编辑距离和CSS‑DOM树的编辑距离,然后加和得到差异度);再例如,当报文的格式为XML时,根据原始响应报文和测试响应报文的DOM树的编辑距离计算差异度。或者又例如,当报文的格式为字符串或二进制数据时,可以根据原始响应报文和测试响应报文的SimHash值计算差异度。
[0067] 根据本公开的实施例,通过测试响应报文311/312/313与原始响应报文31的比较,可以自动化、且更为准确地判断出漏洞攻击报文301/302/303是否攻击成功。进而,更为高效准确的确定出网站是否存在相应的漏洞。
[0068] 图4示意性示出了根据本公开实施例的操作S230中构造漏洞攻击报文的过程示意。
[0069] 同样结合图3说明如下。如图4所示,根据本公开实施例操作S230中当访问请求30为文件上传请求时,基于访问请求30构造至少一个漏洞攻击报文301、302、303时,例如可以是通过如下方式来实现的:使用测试用文件扩展名替换访问请求的报文30中的文件扩展名
(S401),得到漏洞攻击报文301;或者,根据访问请求的报文30中的文件扩展名,生成与该文件扩展名对应的恶意代码,并将该恶意代码插入到访问请求的报文中的文件信息中
(S402),从而得到漏洞攻击报文302;或者根据访问请求的报文30中的文件扩展名,生成一个文件大小大于预定值的具有该文件扩展名的上传文件,并以该上传文件替换访问请求的
报文中的文件(S403),从而得到漏洞攻击报文303。
[0070] 根据本公开的实施例,图4所示的构造过程中,在S401替换访问请求的报文30中的文件扩展名之前,还可以提前获取用于替换访问请求的报文30中的文件扩展名的至少一个
测试用文件扩展名。
[0071] 其中,获得测试用文件扩展名的方式可以有多种多样,此处示例如下。
[0072] 例如,可以收集漏洞测试的常用扩展名,诸如“.jsp”、“.php”、“.asp”、“.jsp%00”、“.php%00”、“.asp%00”等。
[0073] 又例如,可以利用访问请求的报文30中的文件扩展名,按照预定规则智能构造特殊扩展名。以当访问请求的报文中的文件扩展名为.png举例说明,可以智能构造特殊扩展
名如“.pNg”、“.PNG”、“.Png”、“.pnG”、、“.png.xxxx”、“.png/.”、“.php”、“.php..”、“.png.”、“.pngngg”等。该智能构造的过程的预定规则例如可以包括对扩展名.png的各个字符进行大小写变化、在前后添加特殊字符、或者字符重复出现等。
[0074] 再例如,可以将访问请求的报文30中的文件扩展名与常用测试扩展名和/或特殊扩展名组合,形成新的扩展名。继续以当访问请求的报文30中的文件扩展名为.png举例说
明,组合形成的新的扩展名,例如可以是“.png.jsp”、“.jsp.png”、“.jsp%00.png”、“.png.php”、“.php.png”、“.php%00.png”、“.png.asp”、“.asp.png”、“.asp%00.png”等等。
[0075] 在获得了这些扩展名之后,可以在S401中将访问请求的报文30中的请求体中用于描述文件信息的参数中的文件扩展名对应替换,从而每一次替换形成一个漏洞攻击报文
301。
[0076] 根据本公开过一实施例,操作S230中当测试响应报文311/312/313与原始响应报文31的差异性满足预定条件时,确定网站存在漏洞时,可以根据漏洞攻击报文311/312/313的获得方式,确定网站所存在的漏洞的类型。例如,根据漏洞攻击报文是通过图4中所示的S401~S403中的哪一种方式获得的和/或漏洞攻击报文的构造过程的规则或内容,来确定
网站所存在的具体的漏洞的类型是什么和/或漏洞的内容是什么,例如:没有控制文件扩展名中的大小写或者某些字符;或者,没有控制上传文件的大小;或者,没有恶意代码检测拦截机制等。从而可以得到更为详尽的漏洞检测结果,这样可以提供给测试人员更为详尽的
漏洞检测信息。以此方式,本公开实施例构造漏洞攻击报文的方式可以具有多样性,从而使得漏洞检测的类型和内容可以更为全面。
[0077] 图5示意性示出了根据本公开另一实施例的用于文件上传漏洞的检测方法的流程图。
[0078] 如图5所示,根据该实施例的检测方法500可以包括操作S210~操作S240、以及操作S251~操作S256。操作S210~操作S240与前述内容一致,此处不再赘述。继续结合图3说明如下。
[0079] 经过操作S210~操作S240通过漏洞攻击报文301/302/303攻击网站并获得对于漏洞攻击报文301/302/303反馈的测试响应报文311/312/313后,将测试响应报文311/312/
313与原始响应报文31进行比较。接下来根据比较结果VS1/VS2/VS3进行判断。
[0080] 首先在操作S251,判断测试响应报文和原始响应报文的格式是否一致。若格式不一致,说明网站能够明确区分出漏洞攻击报文301/302/303和访问请求的报文30,从而漏洞攻击报文301~303无法伪装成访问请求的报文30,因此可以执行操作S256,确定网站不存
在漏洞。若格式一致,则尚无法确定漏洞攻击报文301/302/303的伪装攻击行为是否成功,此时还需要进一步判断,此时可以继续执行操作S252。
[0081] 接着在操作S252,可以判断测试响应报文311/312/313和原始响应报文31的大小是否一致。若大小不一致(例如,二者的大小数量级不同),则同样说明网站能够明确区分出漏洞攻击报文301/302/303和访问请求的报文30,从而可以执行操作S256,确定网站不存在漏洞。若大小一致,则尚无法确定漏洞攻击报文的伪装攻击行为是否成功,此时还需要进一步判断,此时可以继续执行操作S253。
[0082] 接下来在操作S253,在测试响应报文311/312/313和原始响应报文31的格式及大小均一致时,根据报文的格式计算差异度。例如,当报文的格式为HTML时,根据测试响应报文311/312/313和原始响应报文31的DOM树和CSS‑DOM树的编辑距离计算差异度;当报文的
格式为XML时,根据原始响应报文31和测试响应报文311/312/313的DOM树的编辑距离计算
差异度;或者当报文的格式为字符串或二进制数据时,根据原始响应报文31和测试响应报
文311/312/313的SimHash值计算差异度。
[0083] 然后在操作S254,判断测试响应报文311/312/313和原始响应报文31的的差异度是否小于或等于阈值。若否,则同样说明网站能够明确区分出漏洞攻击报文301/302/303和访问请求的报文30,从而可以执行操作S256,确定网站不存在漏洞。若是,则可以看出网站对漏洞攻击报文301/302/303和访问请求的报文30的反馈信息基本一致(无论格式、大小还
是报文内部的信息的差异度),说明网站无法区分漏洞攻击报文301、302、303和访问请求的报文30,从而说明网站是存在漏洞的,即此时可以执行操作S255。
[0084] 接下来在操作S255,在报文格式一致,且计算得到的差异度小于或等于阈值时,确定网站存在漏洞。
[0085] 或者操作S256,在报文的格式或大小中至少一项不一致,或者计算得到的差异度大于阈值时,确定网站不存在漏洞。
[0086] 由此可见,根据本公开的实施例,考虑到根据报文的格式和大小比较容易获得且直观,因此可以先根据报文的格式和大小判断测试响应报文和原始响应报文的差异性,提
高了比较报文的效率。其中,可以当比较结果表征测试响应报文和原始响应报文的格式或
大小至少一项不一致时,确定网站不存在漏洞。
[0087] 进一步地,当从相比较的两个报文的格式和大小均一致,无法确定两个报文的差异性时,可以根据不同格式报文的格式对应计算报文的差异度。以此方式,可以使报文的差异性判断结果更加准确。当差异度小于或等于阈值时,确定网站存在漏洞。而当当差异度大于阈值时,确定网站不存在漏洞,使得对网站漏洞存在与否的结论更加可靠。
[0088] 图6示意性示出了根据本公开再一实施例的用于文件上传漏洞的检测方法600的流程图。
[0089] 如图6所示,该测试方法600可以包括步骤S1~S8。
[0090] S1,抓取报文:该步骤的作用是获取测试人员发起业务请求时的http报文,将此报文经过代理转发到检测装置。
[0091] S2,报文分类识别:该步骤的作用是对S1抓取报文步骤当中抓取的报文进行识别。
[0092] S3,确定抓取的报文是否为文件上传报文:如果是,则进入步骤S4;如果不是,则结束本流程。
[0093] S4,漏洞攻击报文生成:该步骤的作用是对文件上传报文生成一个或多个漏洞攻击报文,作为测试的准备。生成过程可以参考上文所描述的操作是230。
[0094] S5,测试发报:该步骤的作用是将漏洞攻击报文按照一定的顺序测试发报。
[0095] S6,结果分析:该步骤的作用是对于S5顺序测试发报步骤的发报结果进行分析,例如,参考上文所描述的操作S240。
[0096] S7,上传成功判断:该步骤的作用是判断是否上传成功,如果上传成功则进入S8结果储存并展示步骤,并结束本流程;如果上传失败则进入S8步骤后再重新进入S5顺序测试发报步骤。如果测试响应报文和原始响应报文的差异性满足预定条件,则说明漏洞攻击报
文上传成功。相反,则可以说明漏洞攻击报文上传失败。
[0097] S8,结果储存并展示:该步骤的作用是归类存储每次测试的攻击手段及测试结果,并在结果展示页面上展示,以提供给测试人员,方便测试人员了解网站漏洞控制情况。
[0098] 图7示意性示出了根据本公开实施例的用于文件上传漏洞的检测装置700的框图。
[0099] 如图7所示,根据本公开实施例的检测装置700可以包括获取模块710、构造模块720、攻击模块730、比较模块740以及确定模块750。该检测装置700可以是检测装置103的一个具体实施例,可以用于实现参考图2~图6所描述的检测方法。
[0100] 具体地,获取模块710用于获取网站的访问请求。
[0101] 构造模块720用于当访问请求为文件上传请求时,基于访问请求构造至少一个漏洞攻击报文。
[0102] 攻击模块730用于将漏洞攻击报文发送至网站,以获得网站针对漏洞攻击报文反馈的测试响应报文。
[0103] 比较模块740用于比较测试响应报文与原始响应报文,其中,原始响应报文为网站针对访问请求反馈的响应报文。
[0104] 确定模块750用于当比较结果表征测试响应报文与原始响应报文的差异性满足预定条件时,确定网站存在漏洞。根据本公开的一实施例,预定条件可以包括测试响应报文和原始响应报文的格式一致,且测试响应报文和原始响应报文的差异度小于或等于阈值。
[0105] 根据本公开一实施例,比较模块740可以包括第一比较子模块。第一比较子模块用于比较测试响应报文和原始响应报文的格式及大小。
[0106] 根据本公开另一实施例,比较模块740可以进一步还包括第二比较子模块。第二比较子模块用于在测试响应报文和原始响应报文的格式及大小均一致时,根据报文的格式计
算所述差异度。根据本公开再一实施例,所述第二比较子模块还用于:当报文的格式为HTML时,根据所述测试响应报文和所述原始响应报文的DOM树和CSS‑DOM树的编辑距离计算所述差异度;当报文的格式为XML时,根据所述原始响应报文和所述测试响应报文的DOM树的编
辑距离计算所述差异度;或者当报文的格式为字符串或二进制数据时,根据所述原始响应
报文和所述测试响应报文的SimHash值计算所述差异度。
[0107] 根据本公开一实施例,所述确定模块750还用于当比较结果表征所述测试响应报文和所述原始响应报文的格式或大小至少一项不一致时,确定所述网站不存在漏洞。
[0108] 根据本公开另一实施例,所述确定模块750还可以用于当所述差异度大于所述阈值时,确定所述网站不存在漏洞。
[0109] 根据本公开再一实施例,所述确定模块750还用于根据所述漏洞攻击报文的获得方式,确定所述网站所存在的漏洞的类型。
[0110] 图8示意性示出了图7所示的检测装置700中构造模块720的框图。
[0111] 如图8所示,根据该实施例构造模块720可以包括扩展名替换子模块721、恶意代码插入子模块722、以及大文件生成子模块723。所述构造模块700可以通过扩展名替换子模块
721、恶意代码插入子模块722、或大文件生成子模块723中的任意一个来获得至少一个所述漏洞攻击报文。进一步地,根据本公开一实施例,所述构造模块720还可以包括扩展名构造子模块724。
[0112] 具体地,扩展名替换子模块721用于使用测试用文件扩展名替换所述访问请求的报文中的文件扩展名。所述扩展名构造子模块724用于在所述替换所述访问请求的报文中
的文件扩展名之前,获取用于替换所述访问请求的报文中的文件扩展名的至少一个测试用
文件扩展名。根据本公开的实施例,扩展名构造子模块724用于以如下至少一种方式获得所述测试用文件扩展名:收集漏洞测试的常用扩展名;利用所述访问请求的报文中的文件扩
展名,按照预定规则智能构造特殊扩展名;或者将所述访问请求的报文中的文件扩展名与
所述常用测试扩展名和/或所述特殊扩展名组合,形成新的扩展名。
[0113] 恶意代码插入子模块722用于根据所述访问请求的报文中的文件扩展名,生成与该文件扩展名对应的恶意代码,并将该恶意代码插入到所述访问请求的报文中的文件信息
中。
[0114] 大文件生成子模块723用于根据所述访问请求的报文中的文件扩展名,生成一个文件大小大于预定值的具有该文件扩展名的上传文件,并以该上传文件替换所述访问请求
的报文中的文件。
[0115] 图9示意性示出了根据本公开另一实施例的用于文件上传漏洞的检测装置900的框图。
[0116] 如图9所示,该检测装置900可以包括文件上传报文判断模块901、文件上传测试案例自动执行模块902、文件上传测试结果智能分析模块903、以及测试结果反馈模块904。该检测装置900为检测装置103的一个具体实施例。
[0117] 文件上传报文判断模块901:测试人员发起业务功能,获取此时http报文,将此报文经过代理转发到检测装置,检测装置900中的文件上传报文判断模块901通过http报文的
特征,判断此报文是否涉及文件上传功能。例如,可以根据报文的请求行或请求体中的参数信息是否含有文件格式和类型的词等来判断。在识别出文件上传报文时,可以在给出识别
结果的同时,给出出报文中的请求体中的文件扩展名等信息。
[0118] 文件上传测试案例自动执行模块902:根据文件上传报文判断模块901的判断结果,自动筛选出涉及文件上传功能的报文。然后重新组装该报文得到漏洞攻击报文,然后将漏洞攻击报文自动发送给目标应用服务器。
[0119] 文件上传测试结果智能分析模块903:根据目标应用服务器针对漏洞攻击报文反馈的测试响应报文、与目标应用服务器103针对原始访问请求反馈的原始响应报文的比较,得到两个报文在格式、大小、HTML结构化相似度、XML等半结构化或字符串simhash值中某一方面的差异,判断网站是否存在文件上传漏洞。
[0120] 测试结果反馈模块904:记录文件上传测试结果智能分析模块903的检测结果,以网页的形式反馈给测试人员。
[0121] 图10示意性示出了图9所示的检测装置中文件上传测试案例自动执行模块902的框图。
[0122] 如图10所示,文件上传测试案例自动执行模块902可以包括基础案例库1001、智能匹配案例库1002和测试案例智能发报单元1003。
[0123] 基础案例库1001中主要存储了文件上传漏洞手工测试过程中常用的案例,例如常用扩展名,诸如“.jsp”、“.php”、“.asp”、“.jsp%00”、“.php%00”、“.asp%00”等;
[0124] 智能匹配案例库1002:根据访问请求的报文中的文件扩展名,自动生成对应至少一个测试用文件扩展名。测试用文件扩展名可以用来替换访问请求的报文中的文件扩展
名,以此方式来构造漏洞攻击报文。
[0125] 构造得到的漏洞攻击报文可以形成测试案例库。在一个实施例中,可以将测试案例库中可以根据漏洞攻击报文的获得方式分为“文件类型测试案例”和“文件大小测试案
例”两种。此处以.png为例对两种案例进行示例性说明。
[0126] 文件类型测试案例为通过如下方式1)、2)和3)获得:
[0127] 当访问请求的报文中的文件扩展名为.png时,可以智能构造特殊扩展名,例如“.pNg”、“.PNG”、“.Png”、“.pnG”、、“.png.xxxx”、“.png/.”、“.php”、“.php..”、“.png.”、“.pngngg”等;该智能构造的过程包括对扩展名.png的各个字符进行大小写变化、在前后添加特殊字符、或者字符重复出现等。通过这些特殊扩展名替换访问请求的报文中的文件扩
展名,所得到的漏洞攻击报文,属于文件类型测试案例的1)类测试案例。
[0128] 当访问请求的报文中的文件扩展名为.png时,可以将.png和基础案例库当中的常用扩展名组合,形成新的扩展名,例如“.png.jsp”、“.jsp.png”、“.jsp%00.png”、“.png.php”、“.php.png”、“.php%00.png”、“.png.asp”、“.asp.png”、“.asp%00.png”等等。通过这些特殊扩展名替换访问请求的报文中的文件扩展名所得到的漏洞攻击报文,属
于文件类型测试案例的2)类测试案例。
[0129] 当访问请求的报文中的文件扩展名为.png时,自动构造包含恶意内容的文件。例如将一段恶意php代码插入该访问请求的报文中的扩展名为.png的图片中,制作出后缀为
.png的图片木马,从而得到一个上传该图片木马的漏洞攻击报文,该漏洞攻击报文属于文
件类型测试案例中的3)类测试案例。
[0130] 文件大小测试案例可以是通过如下方式获得的:例如,当访问请求的报文中的文件扩展名为.png时,自动生成一个或多个文件大小大于预定值的.png文件。例如生成一个
大小为10GB、后缀为.png的图片文件,将此图片文件作为上传文件,从而得到一个漏洞攻击报文。
[0131] 测试案例智能发报单元1003:用于将通过智能匹配案例库1002中的测试案例发送到目标服务器。在发送时可以首先进行文件类型的文件上传漏洞测试。按照顺序从1)类测
试案例开始发送报文,并接收文件上传测试结果智能分析模块903发来的结果反馈,若收到上传成功的反馈,则停止文件类型测试案例发送,开始文件大小测试案例发送;若收到上传失败的提示,则按照1)‑>2)‑>3)类测试案例的顺序继续发送文件类型测试案例,直到收到上传成功的反馈或智能匹配案例库1002当中的测试案例全部顺序发送完毕,再开始文件
大小测试案例的发送;案例库当中的测试案例全部发送完毕之后,发送自动停止。
[0132] 图11示意性示出了图9所示的检测装置中文件上传测试结果智能分析模块903的框图。
[0133] 如图11所示,文件上传测试结果智能分析模块903可以包括测试方法记录单元1101、上传成功判断单元1102和上传失败重试反馈单元1103。
[0134] 测试方法记录单元1101:一般来说,针对访问请求的报文会构造多个漏洞攻击报文,从而会发起多次攻击测试,测试方法记录单元1101用于记录每一次测试攻击的攻击方
式。
[0135] 上传成功判断单元1102:上传成功判断单元1102接收目标应用服务器108传入的原始响应报文和测试响应报文,根据两个响应报文的差异性判断漏洞攻击报文中的文件是
否上传成功,如果成功则意味着存在漏洞风险,如果不成功则意味着网站不存在风险。首
先,可以判断原始响应报文和测试响应报文的格式及大小。在该实施例中,如报文的格式及大小不一致,则说明网站不存在风险。如报文的格式及大小一致,则进一步根据具体报文格式计算差异度,例如:对于HTML等结构化响应报文,根据原始响应报文和测试响应报文的
DOM树和CSS‑DOM树的编辑距离计算差异度,如果差异度小于阈值,则说明网站存在风险;对于XML等半结构化响应报文,根据原始响应报文和测试响应报文的DOM树的编辑距离计算差
异度,如过差异度小于阈值则说明网站存在风险;对于字符串、二进制数据等非结构化响应报文,根据原始响应报文和测试响应报文的SimHash值计算差异度,如果差异度小于给定阈值,则说明网站存在风险。
[0136] 上传失败重试反馈单元1103:按照上传成功判断单元1102的结果判断下一步操作,如果上传成功,则直接将测试方法记录单元1101的内容连同上传成功的结果一起发送
到测试结果反馈模块904;否则,将测试方法记录单元1101的内容连同上传失败的结果一起发送到测试结果反馈模块904的同时,向文件上传测试案例自动执行模块902发送同样的内
容,并提示需要更换案例或攻击手段重新检测。
[0137] 图12示意性示出了图9所示的检测装置中测试结果反馈模块904的框图。
[0138] 如图12所示,测试结果反馈模块904可以包括测试结果归类存储单元1201和测试结果显示单元1202。
[0139] 测试结果归类存储单元1201:用于将每次测试发送的漏洞攻击报文的攻击手段以及测试结果保存在数据库,以便测试人员进行查询、复现攻击手段等操作。
[0140] 测试结果显示单元1202:提供一个结果展示页面,便于测试人员直接查看。
[0141] 根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实
现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实
现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0142] 例如,获取模块710、构造模块720、攻击模块730、比较模块740、确定模块750、第一比较子模块、第二比较子模块、扩展名替换子模块721、恶意代码插入子模块722、、大文件生成子模块723、文件上传报文判断模块901、文件上传测试案例自动执行模块902、文件上传测试结果智能分析模块903、以及测试结果反馈模块904中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据
本公开的实施例,获取模块710、构造模块720、攻击模块730、比较模块740、确定模块750、第一比较子模块、第二比较子模块、扩展名替换子模块721、恶意代码插入子模块722、、大文件生成子模块723、文件上传报文判断模块901、文件上传测试案例自动执行模块902、文件上传测试结果智能分析模块903、以及测试结果反馈模块904中的至少一个可以至少被部分地
实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或
以其中任意几种的适当组合来实现。或者,获取模块710、构造模块720、攻击模块730、比较模块740、确定模块750、第一比较子模块、第二比较子模块、扩展名替换子模块721、恶意代码插入子模块722、、大文件生成子模块723、文件上传报文判断模块901、文件上传测试案例自动执行模块902、文件上传测试结果智能分析模块903、以及测试结果反馈模块904中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执
行相应的功能。
[0143] 图13示意性示出了适于实现根据本公开实施例的检测方法和检测装置的电子设备1300的方框图。图13示出的电子设备1300仅仅是一个示例,不应对本公开实施例的功能
和使用范围带来任何限制。
[0144] 如图13所示,根据本公开实施例的电子设备1300包括处理器1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(RAM)
1303中的程序而执行各种适当的动作和处理。处理器1301例如可以包括通用微处理器(例
如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1301还可以包括用于缓存用途的板载存储器。处理器1301可以包括用于执行
根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0145] 在RAM 1303中,存储有电子设备1300操作所需的各种程序和数据。处理器1301、ROM 1302以及RAM 1303通过总线1304彼此相连。处理器1301通过执行ROM 1302和/或RAM 
1303中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存
储在除ROM 1302和RAM 1303以外的一个或多个存储器中。处理器1301也可以通过执行存储
在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0146] 根据本公开的实施例,电子设备1300还可以包括输入/输出(I/O)接口1305,输入/输出(I/O)接口1305也连接至总线1304。电子设备1300还可以包括连接至I/O接口1305的以
下部件中的一项或多项:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
[0147] 根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施
例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质
1311被安装。在该计算机程序被处理器1301执行时,执行本公开实施例的系统中限定的上
述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0148] 本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/
系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被
执行时,实现根据本公开实施例的方法。
[0149] 根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或
者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的
ROM1302和/或RAM 1303和/或ROM 1302和RAM 1303以外的一个或多个存储器。
[0150] 本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行本公开实施例所提供的方法的程序代码,当计算机程序产品在电子设备上运
行时,该程序代码用于使电子设备实现本公开实施例所提供的用于文件上传漏洞的检测方
法。
[0151] 在该计算机程序被处理器1301执行时,执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0152] 在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分
发,并通过通信部分1309被下载和安装,和/或从可拆卸介质1311被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0153] 根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如
Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备
(例如利用因特网服务提供商来通过因特网连接)。
[0154] 附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际
上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组
合来实现。
[0155] 以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。