一种SQL注入检测方法及装置与流程

文档序号:12493733阅读:300来源:国知局
一种SQL注入检测方法及装置与流程

本申请涉及网络安全技术领域,尤其涉及一种SQL注入检测方法及装置。



背景技术:

SQL(Structured Query Language,结构化查询语言)注入漏洞是web应用安全中的常见漏洞。实际应用中,SQL注入检测方法也是SQL注入攻击方法,即是采用设定的SQL注入攻击方法对目标服务器进行攻击,根据目标服务器的反馈判定是否存在SQL注入漏洞。

现有技术中采用多个携带有SQL注入命令的HTTP(超文本传输协议,Hyper Text Transfer Protocol)请求实现对时间型的SQL注入漏洞的检测。且,针对检测漏洞用的HTTP请求,通常从域名(DNS,Domain Name System)解析或开始建立TCP(Transmission Control Protocol,传输控制协议)连接开始计时,到接收完所有响应数据结束计时,并将开始计时到结束计时之间的时间段作为延时HTTP请求的响应时间。然后,将该响应时间与预置时间进行对比,来确定是否存在SQL注入漏洞。

发明人在实现本发明的过程中发现,现有技术中的SQL注入检测的检测准确性较低,存在漏报及误报的现象。



技术实现要素:

本申请实施例提供了一种SQL注入检测方法及装置,用以解决现有技术中检测准确性较低,存在漏报及误报的现象等的问题。

一方面,本申请实施例提供一种SQL注入检测方法,包括:

在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端;

针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长;

根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。

另一方面,本申请实施例提供一种SQL注入检测装置,包括:

延时注入命令注入模块,用于在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端;

指定时长确定模块,用于针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长;

注入漏洞确定模块,用于根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。

另一方面,本申请实施例提供一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:

在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端;

针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长;

根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。

另一方面,本申请实施例还提供了一种电子设备,包括:至少一个处理器;以及存储器;其中,所述存储器存储有可被所述至少一个处理器执行的程序,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后通过通信接口发送给服务端;

针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长;

根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。

另一方面,本申请实施例提供一种计算机程序产品,包括存储在存储器上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行:

在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端;

针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长;

根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。

本申请有益效果如下:在本申请实施例提供的技术方案中,在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端;针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长;根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。其中,由于指定时长指从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,不是整个延时HTTP请求的响应时间,比现有技术能够减少HTTP请求处理过程中部分受网络波动的影响环节(例如域名解析所需的时间、建立TCP连接所需的时间,传输请求的数据所需的时间)所占用的时间,使得最终确定的响应时间更加准确,减少了漏报和误报,提高了SQL注入检测的准确性。

同时,发明人在实现本发明的过程中发现,在一种应用场景中,例如为了保证整体的扫描性能,扫描器都会设置一个HTTP请求的超时时间,并从一个HTTP请求发出开始计时,如果到设定的超时时间后,还没有接收完响应数据或者还没有收到响应,则认为该HTTP请求异常或者以设定时间作为该HTTP请求的响应时间,该响应时间用于进行SQL注入检测。由于响应数据的数据量大小不一,现有技术中往往会使用很大的超时时间来提高检测注入漏洞的准确性,导致整个SQL注入检测的耗时变得很长,尤其是注入漏洞真正存在的时候,整个检测耗时将变得非常长,导致漏洞检测效率低。

在本申请实施例中,当指定时长为从成功建立TCP连接开始到开始接收到响应数据所需的时长时,或者为从域名解析开始或从开始建立TCP连接到开始接收到响应数据所用的时长,可以消除响应数据的数据量大小不一对SQL注入检测的影响,那么在使用超时时间时,就不需要使用很大的超时时间,缩短了整个SQL注入检测的耗时,提高了检测效率。此外,由于本申请实施例采用的指定时长能够剔除HTTP请求处理过程中容易受网络波动影响的环节所占用的时间,故此本申请实施例能够减少网络波动的影响,进一步减少漏报和误报,提高SQL注入检测的准确性。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1所示为本申请实施例一提供的SQL注入检测方法流程示意图;

图2所示为本申请实施例二提供的SQL注入检测方法流程示意图;

图3所示为本申请实施例三提供的SQL注入检测装置结构图;

图4所示为本申请实施例五中提供的SQL注入检测方法的电子设备的硬件结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

实施例一:

如图1所述,为本申请实施例提供的方法的流程示意图,该方法包括以下步骤:

步骤101:在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端。

其中,延时注入命令中记录了需要执行的延时时间(即直接记录了延时时间的取值)或记录了表示特征表达式重复执行次数的影响因子(即间接指示了延时时间的取值)。

在间接指示延时时间取值的方式下,在至少一个HTTP请求中注入延时注入命令时,只需要设置重复执行次数的影响因子。则,将影响因子乘以设定系数得到重复执行次数,如:2*10000=20000次。执行数据库查询语句时,数据库会将重复执行20000次,从而造成目标服务器返回响应数据时在时间上的相应延迟。

步骤102:针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长。

其中,当目的地址为IP(Internet Protocol Address,互联网协议地址)时,所述指定时长可以指从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长。

当目的地址为域名时,所述指定时长可以是从域名解析开始到接收完响应数据所使用的时长中的部分时长,也可以是从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长。

具体实施时,可以根据实际需要确定本申请实施例对此不做限定。

当然,本申请实例中的“或”,可以是指用户可以根据实际需求选择其中的一个方案执行。而并不要求设备执行方案中提供两个选择。

步骤103:根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。

其中,在一个实施例中,所述指定时长具体包括以下时长中的任一种:

第一时长,为从开始建立TCP连接到开始接收到响应数据所用的时长;可以消除响应数据过大对检测结果的影响,提高检测的准确性。

第二时长,为从成功建立TCP连接开始到开始接收到响应数据所用的时长;

第三时长,为从成功建立TCP连接开始到接收完响应数据所用的时长;可以消除建立TCP连接对检测的影响,提高检测的准确性;

第四时长,在HTTP请求中的目的地址为域名情况下,从域名解析开始到开始接收到响应数据所用的时长。

具体来说,由于该指定时长比现有技术中的响应时间短,所以在SQL注入检测过程中受到高并发以及网络的影响较小,从而能够减少SQL注入检测的漏报和误报,提高SQL注入检测的准确性。并且,若该指定时长为第二时长,那么SQL注入检测能够避免成功建立TCP连接开始前的准备工作,例如域名解析以及TCP连接的耗时,也能够避免从接收到响应数据到接收完响应数据所用的时长,从而能够降低漏报和误报,提高检测的准确性,提高检测的效率。并且,当网络较差或波动较大以及请求的响应数据较大时,能够大幅度提高SQL注入检测的检出率并有效降低误报率,提高检测效率。

为便于理解,下面对本申请实施例提供的SQL注入检测方法作进一步说明,可包括以下内容:

其中,在一个实施例中,任意一个HTTP请求包括注入延时注入命令的延时HTTP请求,以及未携带延时注入命令的HTTP请求。在本申请实施例中,所述指定时长是针对任意一个HTTP请求的,并且针对未携带延时注入命令的HTTP请求确定的指定时长的开始时间与结束时间,与在针对延时HTTP请求时确定的相同。

其中,在一个实施例中,可以根据初始预设时长来确定预设时长。且该初始预设时长为针对每个未携带延时注入命令的HTTP请求的所述指定时长。也即,该初始预设时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长,并且该指定时长的开始时间与结束时间,与在针对延时HTTP请求时确定的相同。

具体实施时,预设时长的确定方法可以参照现有技术确定,那么步骤103的判断方法也可以参照现有技术执行,这里不再赘述。

具体实施时,可以将多个初始预设时长的平均值作为预设时长。也可以从多个初始预设时长中,选择出现频率最多的初始预设时长作为预设时长。

此外,发明人研究发现,在理想状态下,若重复发送同一HTTP请求。则每次发送后的响应时间均是相同的。而实际当中,受各种情况的影响,同一HTTP请求的响应时间会有差别,但是同一HTTP请求的响应时间应该落入一定的时间范围内。故此,若同一HTTP请求得到多个响应时间,则各响应时间与其出现的频率应该满足正态分布。故此,本申请实施例中,为了提高SQL注入检测的准确性,可以根据以下步骤确定预设时长:

步骤B1:发送至少一个未携带延时注入命令的HTTP请求给服务端。

其中,发送给服务端的未携带延时注入命令的HTTP请求,可以为一个也可以为多个,若仅仅通过一次未携带延时注入命令的HTTP请求得到预设时间受偶然误差的影响,得到的结果可能不够准确。所以,当发送多个请求给服务端时,可以得到多个预设时间,进而根据多个预设时间来确定出一个准确的预设时间,能够提高SQL注入检测的准确性。

步骤B2:针对每个未携带延时注入命令的HTTP请求,确定针对该未携带延时注入命令的HTTP请求的与所述指定时长对应的初始预设时长;其中,所述初始预设时长指从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长。

步骤B3:计算初始预设时长的均值和标准差。

例如:初始预设时长有100个,分别有30个0.30s、24个0.3 1s、24个0.29s、2个1.00s、20个0.32s,分布列如下表:

表1

计算均值μ(即期望值)和标准差σ:

μ=0.30*0.30+0.31*0.24+0.29*0.24+1.00*0.02+0.32*0.20=0.318;

σ2=1/n[(x1-μ)2+(x2-μ)2+……+(xn-μ)2]=

1/100[(0.30-0.318)2+(0.31-0.318)2+(0.29-0.318)2+(1.00-0.318)2+(0.32-0.318)2]=0.004663;

σ2开平方后得到σ≈0.068

步骤B4:计算在区间[μ-λσ,μ+λσ]内的初始预设时长的平均值;并将该平均值作为所述预设时长,其中μ表示均值,σ表示标准差,λ表示指定系数。

较佳的,λ=3,所以本实施例中,可以把[μ-3σ,μ+3σ]内的初始预设时长均值当做正常网络状态下的初始预设时长。

延用步骤B3中的例子,μ=0.318,σ≈0.068,计算求得[μ-3σ,μ+3σ]为[0.114,0.522],可知在该范围内的初始预设时长不存在异常的值。

计算在该区间内的初始预设时长平均值,最终求得预设时长为0.304s。

当然,在具体实施时,λ的值可以有多种,例如为0.29、0.31等,具体实施时,可以根据实际需要确定,均在本申请保护范围内,本实施例对此不做限定。

这样,根据正态分布来确定预设时长,能够过滤掉可能因为偶然误差或网络波动影响较大的初始预设时长。也就是说,可以通过正态分布来过滤掉误差较大的初始预设时长,而采用较为准确的初始预设时长来确定预设时长。从而提高确定预设时长的准确性,进而提高检测的准确性。

其中,在一个实施例中,若存在注入漏洞,那么延时HTTP请求中注入的延时注入命令将被执行,最终导致延时HTTP请求的指定时长大于预设时长。故此,本申请实施例中,为了提高SQL注入检测的准确性,步骤103可具体执行为以下步骤:

步骤C1:针对每个延时HTTP请求,判断该延时HTTP请求的指定时长是否大于所述预设时长。

步骤C2:若各延时HTTP请求的指定时长均大于所述预设时长,则确定存在注入漏洞。

步骤C3:若至少一个延时HTTP请求的指定时长小于或等于所述预设时长,则确定不存在注入漏洞。

也就是说,采用大小判断的方式来检测是否存在注入漏洞,判断方式简单易行,能够提高检测效率。

此外,需要说明的是,还可以计算大于预设时长的指定时长的个数与指定时长的总数的比值,若该比值大于指定比值,则确定存在注入漏洞,否则,不存在注入漏洞。也就是说当大于预设时长的指定时长较多时,可以认为存在注入漏洞。例如延时HTTP请求有100个,其中99个延时HTTP请求的指定时长大于预设时长,则比值为0.99,可以认为存在注入漏洞。这样,可以一定程度上消除偶然误差的影响。

其中,在一个实施例中,若存在注入漏洞,由于延时注入命令被执行,导致延时HTTP请求的指定时长大于预设时长,且指定时长理应大于或等于该延时HTTP请求中的延时注入命令中的延时时间。故此,步骤103还可具体执行为以下步骤:

步骤D1:针对每个延时HTTP请求,判断该延时HTTP请求的指定时长是否满足第一预设条件,所述第一预设条件包括指定时长大于所述预设时长、且大于或等于该延时HTTP请求中的延时注入命令中的延时时间。

步骤D2:若各延时HTTP请求的指定时长均满足所述第一预设条件,则确定存在注入漏洞。

步骤D3:若至少一个延时HTTP请求的指定时长不满足所述第一预设条件,则确定不存在注入漏洞。

这样,也就是说进一步综合预设时长和延时注入命令中的延时时间两个条件来检索是否存在注入漏洞,能够进一步提高检测的准确性。

其中,在一个实施例中,为了提高检测的准确性,用于检测的延时HTTP请求应该注入携带不同延时时间的延时注入命令。这样,能够避免由于同一延时注入命令带来的误差。当然,具体实施时,不同延时HTTP请求的延时时间可以均不同,也可以部分不同。若将多个HTTP请求的延时时间视为一个延时时间集合,均不同是指该集合中没有重复的元素,部分不同指该集合中包含不同的元素和相同的元素。

其中,在一个实施例中,延时注入请求可以同时发送也可以逐一发送。逐一发送是,可以按照延时时间依次增大或依次减小的顺序发送。当然,也可以随机发送。本申请对此不作限定。

此外,若注入的延时注入命令的延时时间不同,那么获得的指定时长应该不同。故此,为了进一步提高SQL注入检测的准确性,本申请实施例中,若存在至少两个延时HTTP请求,且存在至少一个延时HTTP请求的延时注入命令中的延时时间与其它延时HTTP请求的延时注入命令中的延时时间不同,确定存在注入漏洞之前,还可以执行以下操作:

确认所述至少两个延时HTTP请求中的任意两个延时HTTP请求是否均满足第二预设条件,所述第二预设条件为两个延时HTTP请求中延时时间较大的延时HTTP请求的指定时长大于延时时间较小的延时HTTP请求的指定时长;若是则确定存在注入漏洞,否则不存在。

为便于理解,这里对第二预设条件进行解释。例如:注入的延时时间为Ti,i为正整数。共注入了100次,得到100个延时时间不同的延时HTTP请求,将这100个延时HTTP请求发送给服务端,得到100个不同的指定时长,将指定时长记为ti,i为正整数。

其中若100个T值满足T1<T2<T3<……T97<T98<T99<T100,且100个指定时长满足t1<t2<t3<……t97<t98<t99<t100,则确定满足条件A。

其中,在一个实施例中,若所述指定时长为所述第二时长(即为从成功建立TCP连接开始到开始接收到响应数据所用的时长),可以通过以下三种方法针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长:

方法一:针对每个延时HTTP请求,从针对该延时HTTP请求的处理记录中,读取指定字段的字段值作为该延时HTTP请求的指定时长,所述指定字段用于记录从成功建立TCP连接开始到开始接收到针对该延时HTTP请求的响应数据所用的时长。

方法二:针对每个延时HTTP请求,从成功建立TCP连接开始开始计时,到接收到针对该延时HTTP请求的响应数据结束计时,并将开始计时到结束计时之间的时间段作为第二时长。

方法三:针对每个延时HTTP请求,从针对该延时HTTP请求的处理记录中,读取用于记录从开始建立TCP连接到接收完响应数据所用的时长的指定字段的字段值(记为字段值1),以及从开始建立TCP连接到成功建立TCP连接开始所用的时长指定字段的字段值(记为字段值2)。将字段值1减去字段值2得到的差值,作为第二时长。

具体实施时,可以根据实际需求采用上述方法确定第二时长。当然,还可以采用其他方法来确定,只要能够确定第二时长,均适用于本申请实施例。

当然,对于第一时长、第三时长以及第四时长的确定方法可以参见第二时长的确定方法,这里不再赘述。

其中,在一个实施例中,现有技术中一般是延时HTTP请求接收完响应数据时才断开连接。这样若延时HTTP请求的响应数据过大,则使SQL注入检测一直占用连接资源,且耗时非常长。故此,为提高检测效率,本申请实施例中,若所述指定时长为第一时长、第二时长或第四时长,所述方法还包括:针对每个延时HTTP请求,当开始接收到该延时HTTP请求的响应数据时,断开针对该延时HTTP请求的连接。这样,无论延时HTTP请求的响应数据有多大,都不影响SQL注入检测的耗时,大大提高了检测效率。且由于开始接收到该延时HTTP请求的响应数据时立即断开连接,释放连接资源,能够缓解超时现象,适应高并发情况下的HTTP请求的处理,并且能够得到准确的响应时间用于进行攻击检测,达到减少漏报和误报,提高SQL注入检测的准确性的目的。

综上所述:本申请实施例中,在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端;针个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长;根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。其中,由于指定时长指从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,不是整个延时HTTP请求的响应时间,比现有技术能够减少HTTP请求处理过程中部分受网络波动的影响环节(例如域名解析所需的时间、建立TCP连接所需的时间,传输请求的数据所需的时间)所占用的时间,使得最终确定的响应时间更加准确,减少了漏报和误报,提高了SQL注入检测的准确性。

同时,发明人在实现本发明的过程中发现,在一种应用场景中,例如为了保证整体的扫描性能,扫描器都会设置一个HTTP请求的超时时间,并从一个HTTP请求发出开始计时,如果到设定的超时时间后,还没有接收完响应数据或者还没有收到响应,则认为该HTTP请求异常或者以设定时间作为该HTTP请求的响应时间,该响应时间用于进行SQL注入检测。由于响应数据的数据量大小不一,现有技术中往往会使用很大的超时时间来提高检测注入漏洞的准确性,导致整个SQL注入检测的耗时变得很长,尤其是注入漏洞真正存在的时候,整个检测耗时将变得非常长,导致漏洞检测效率低。

在本申请实施例中,当指定时长为从成功建立TCP连接开始到开始接收到响应数据所需的时长时,或者为从域名解析开始或从开始建立TCP连接到开始接收到响应数据所用的时长,可以消除响应数据的数据量大小不一对SQL注入检测的影响,那么在使用超时时间时,就不需要使用很大的超时时间,缩短了整个SQL注入检测的耗时,提高了检测效率。此外,由于本申请实施例采用的指定时长能够剔除HTTP请求处理过程中容易受网络波动影响的环节所占用的时间,故此本申请实施例能够减少网络波动的影响,进一步减少漏报和误报,提高SQL注入检测的准确性。

实施例二

为便于进一步理解本申请提供的SQL注入检测方法,本申请实施例对该方法做进一步说明。如图2所示,包括以下步骤:

步骤201:在至少两个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端;其中至少一个延时HTTP请求的延时注入命令中的延时时间与其它延时HTTP请求的延时注入命令中的延时时间不同。

步骤202:针对每个延时HTTP请求,当开始接收到该延时HTTP请求的响应数据时,断开针对该延时HTTP请求的连接。

步骤203:针对每个延时HTTP请求,从针对该延时HTTP请求的处理记录中,读取指定字段的字段值作为该延时HTTP请求的指定时长,所述指定字段用于记录从成功建立TCP连接开始到开始接收到针对该延时HTTP请求的响应数据所用的时长。

其中,成功建立TCP连接开始可以的时间点可以是开始发送的时间点,也可以是HTTP请求发送结束时的时间点。

步骤204:获取多个初始预设时长,初始预设时长为未携带延时注入命令的HTTP请求的从成功建立TCP连接开始到开始接收到针对该延时HTTP请求的响应数据所用的时长。

步骤205:计算多个初始预设时长的均值和标准差。

步骤206:计算在区间[μ-3σ,μ+3σ]内的初始预设时长的平均值;并将该平均值作为预设时长,其中μ表示均值,σ表示标准差。

步骤207:针对每个延时HTTP请求,判断该延时HTTP请求的指定时长是否满足第一预设条件,所述第一预设条件包括指定时长大于所述预设时长、且大于或等于该延时HTTP请求中的延时注入命令中的延时时间;若是,执行步骤208;若否,执行步骤210。

步骤208:判断所述至少两个延时HTTP请求中的任意两个延时HTTP请求是否均满足第二预设条件,所述第二预设条件为延时时间较大的延时HTTP请求的指定时长大于延时时间较小的延时HTTP请求的指定时长;若是,执行步骤209;若否,执行步骤210。

具体实施时,步骤207和步骤208的执行顺序不受限。

步骤209:确定存在注入漏洞。

步骤210:确定不存在注入漏洞。

其中,步骤201~203,步骤204~206的执行顺序不受限,即也可以先执行步骤204~206,再执行步骤201~203。

在本申请实施例提供的技术方案中,由于指定时长为从成功建立TCP连接开始到开始接收到针对该延时HTTP请求的响应数据这段时间,所以避免了因响应数据较大造成的超时现象及响应时间受网络波动的影响而导致的误报和漏报,提高了SQL注入检测的准确性。同时,由于当开始接收到该延时HTTP请求的响应数据时,立即断开针对该延时HTTP请求的连接,释放连接资源,能够缓解超时现象,适应高并发情况下的HTTP请求的处理,并且能够得到准确的响应时间用于进行攻击检测,减少了漏报和误报,进一步提高了SQL注入检测的准确性。同时不需要使用很大的超时时间,缩短了整个SQL注入检测的耗时,提高了检测效率。

实施例三:

基于相同的发明构思,本申请实施例还提供一种SQL注入检测装置,该装置的SQL注入检测原理与上述SQL注入检测方法的SQL注入检测原理类似。具体的可参见上述方法的内容,这里不做赘述。

如图3所示,为该装置的结构示意图,所述装置包括:

延时注入命令注入模块301:用于在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端。

指定时长确定模块302:用于针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长。

注入漏洞确定模块303:用于根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。

其中,在一个实施例中,所述注入漏洞确定模块,具体包括:

第一判断单元,用于针对每个延时HTTP请求,判断该延时HTTP请求的指定时长是否大于所述预设时长;

第一注入漏洞确定单元,用于若各延时HTTP请求的指定时长均大于所述预设时长,则确定存在注入漏洞;若至少一个延时HTTP请求的指定时长小于或等于所述预设时长,则确定不存在注入漏洞。

其中,在一个实施例中,所述注入漏洞确定模块,具体包括:

第二判断单元,用于针对每个延时HTTP请求,判断该延时HTTP请求的指定时长是否满足第一预设条件,所述第一预设条件包括指定时长大于所述预设时长、且大于或等于该延时HTTP请求中的延时注入命令中的延时时间;

第二注入漏洞确定单元,用于若各延时HTTP请求的指定时长均满足所述第一预设条件,则确定存在注入漏洞;若至少一个延时HTTP请求的指定时长不满足所述第一预设条件,则确定不存在注入漏洞。

其中,在一个实施例中,若存在至少两个延时HTTP请求,且存在至少一个延时HTTP请求的延时注入命令中的延时时间与其它延时HTTP请求的延时注入命令中的延时时间不同,所述第二注入漏洞确定单元,还用于:

在所述第一注入漏洞确定单元确定存在注入漏洞之前,确认所述至少两个延时HTTP请求中的任意两个延时HTTP请求均满足第二预设条件,所述第二预设条件为两个延时HTTP请求中延时时间较大的延时HTTP请求的指定时长大于延时时间较小的延时HTTP请求的指定时长。

其中,在一个实施例中,所述指定时长具体包括以下时长中的任一种:

第一时长,为从开始建立TCP连接到开始接收到响应数据所用的时长;

第二时长,为从成功建立TCP连接开始到开始接收到响应数据所用的时长;

第三时长,为从成功建立TCP连接开始到接收完响应数据所用的时长;

第四时长,在HTTP请求中的目的地址为域名情况下,从域名解析开始到开始接收到响应数据所用的时长。

其中,在一个实施例中,所述装置还包括:

发送模块,用于发送至少一个未携带延时注入命令的HTTP请求给服务端;

初始预设时长确定模块,用于针对每个未携带延时注入命令的HTTP请求,确定针对该未携带延时注入命令的HTTP请求的所述指定时长作为初始预设时长;其中,所述初始预设时长指从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长;

计算模块,用于计算初始预设时长的均值和标准差;

预设时长确定模块,用于计算在区间[μ-λσ,μ+λσ]内的初始预设时长的平均值;并将该平均值作为所述预设时长,其中μ表示均值,σ表示标准差,λ表示指定系数。

其中,在一个实施例中,若所述指定时长为第一时长、第二时长或第四时长,所述装置还包括:

连接断开模块,用于针对每个延时HTTP请求,当开始接收到该延时HTTP请求的响应数据时,断开针对该延时HTTP请求的连接。

综上所述,本申请实施例提供的SQL注入检测装置,延时注入命令注入模块在至少一个HTTP请求中注入延时注入命令得到延时HTTP请求后发送给服务端;指定时长确定模块针对每个延时HTTP请求,确定针对该延时HTTP请求的指定时长;其中,所述指定时长指从域名解析开始或从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,且,所述部分时长中包括从成功建立TCP连接开始到开始接收到响应数据所需的时长;注入漏洞确定模块根据各延时HTTP请求的指定时长和预设时长,确定是否存在注入漏洞。其中,由于指定时长指从建立TCP连接开始到接收完响应数据所使用的时长中的部分时长,不是整个延时HTTP请求的响应时间,比现有技术能够减少HTTP请求处理过程中部分受网络波动的影响环节(例如域名解析所需的时间、建立TCP连接所需的时间,传输请求的数据所需的时间)所占用的时间,使得最终确定的响应时间更加准确,减少了漏报和误报,提高了SQL注入检测的准确性。

同时,发明人在实现本发明的过程中发现,在一种应用场景中,例如为了保证整体的扫描性能,扫描器都会设置一个HTTP请求的超时时间,并从一个HTTP请求发出开始计时,如果到设定的超时时间后,还没有接收完响应数据或者还没有收到响应,则认为该HTTP请求异常或者以设定时间作为该HTTP请求的响应时间,该响应时间用于进行SQL注入检测。由于响应数据的数据量大小不一,现有技术中往往会使用很大的超时时间来提高检测注入漏洞的准确性,导致整个SQL注入检测的耗时变得很长,尤其是注入漏洞真正存在的时候,整个检测耗时将变得非常长,导致漏洞检测效率低。

在本申请实施例中,当指定时长为从成功建立TCP连接开始到开始接收到响应数据所需的时长时,或者为从域名解析开始或从开始建立TCP连接到开始接收到响应数据所用的时长,可以消除响应数据的数据量大小不一对SQL注入检测的影响,那么在使用超时时间时,就不需要使用很大的超时时间,缩短了整个SQL注入检测的耗时,提高了检测效率。此外,由于本申请实施例采用的指定时长能够剔除HTTP请求处理过程中容易受网络波动影响的环节所占用的时间,故此本申请实施例能够减少网络波动的影响,进一步减少漏报和误报,提高SQL注入检测的准确性。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

实施例四

本申请实施例四提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的SQL注入检测方法。

实施例五

图4是本申请实施例五提供的执行SQL注入检测方法的电子设备的硬件结构示意图,如图4所示,该电子设备包括:

一个或多个处理器410以及存储器420,图4中以一个处理器410为例。执行SQL注入检测方法的电子设备还可以包括:输入装置430和输出装置440。

处理器410、存储器420、输入装置430和输出装置440可以通过总线或者其他方式连接,图4中以通过总线连接为例。

存储器420作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的SQL注入检测方法对应的程序指令/模块(例如,附图3所示的延时注入命令注入模块301、指定时长确定模块302、注入漏洞确定模块303)。处理器410通过运行存储在存储器420中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例SQL注入检测方法。

存储器420可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据SQL注入检测装置的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器420可选包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至SQL注入检测装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置430可接收输入的数字或字符信息,以及产生与SQL注入检测装置的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。

所述一个或者多个模块存储在所述存储器420中,当被所述一个或者多个处理器410执行时,执行上述任意方法实施例中的SQL注入检测方法。

上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。

本领域技术人员应明白,本申请的实施例提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1