一种SQL注入攻击检测方法及系统与流程

文档序号:12752903阅读:437来源:国知局
一种SQL注入攻击检测方法及系统与流程

本发明涉及信息安全技术领域,尤其涉及一种SQL注入攻击检测方法及系统。



背景技术:

SQL(Structured Query Language,结构化查询语言)注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

目前针对SQL注入的防御算法主要是基于规则和语义分析的。规则主要采用正则匹配,对输入参数过滤一遍每个SQL注入规则。语义分析主要基于编译原理,对HTTP(HyperText Transfer Protocol,超文本传输协议)请求进行语义分析,生成SQL语法树,再结合打分系统对输入参数进行打分,判断是否存在SQL注入。

上述两种方法都是基于HTTP请求的检测,这样带来的明显缺陷就是判断SQL注入攻击都是基于理论的,没有经过实践的测试,会造成较多的误报。造成的不良影响至少有两种:一种是网站本身没有漏洞,防护产品却产生一堆的攻击日志,客户无从读起,产品的价值感不强;另外一种是网站本身有漏洞,但因为攻击都被防护产品阻断了,网站管理员无法获知网站存在的SQL注入攻击漏洞,一旦防护产品失效或有新的0Day(破解)漏洞绕过防护产品,网站安全就会遭到严重威胁。



技术实现要素:

本发明提供了一种SQL注入攻击检测方法及系统,用以提高SQL注入攻击漏洞检测的准确性,帮助网站发现真实的SQL注入漏洞。

本发明实施例提供了一种SQL注入攻击检测方法,包括:

针对请求端向服务端发送的超文本传输协议HTTP请求,检测所述HTTP请求中包含的危险攻击HTTP请求和/或安全攻击HTTP请求;

对于检测到的安全攻击HTTP请求发送给所述服务端,并拦截检测到的危险攻击HTTP请求;

针对所述服务端向所述请求端返回的、所述安全攻击HTTP请求对应的HTTP响应,如果检测到所述HTTP响应中包含预设的第一特征信息,则确认存在SQL注入漏洞。

本发明实施例提供了一种SQL注入攻击检测系统,包括:

检测模块,用于针对请求端向服务端发送的超文本传输协议HTTP请求,检测所述HTTP请求中包含的危险攻击HTTP请求和/或安全攻击HTTP请求;

第一处理模块,用于对于检测到的安全攻击HTTP请求发送给所述服务端,并拦截检测到的危险攻击HTTP请求;

漏洞确认模块,用于针对所述服务端向所述请求端返回的、所述安全攻击HTTP请求对应的HTTP响应,如果检测到所述HTTP响应中包含预设的第一特征信息,则确认存在SQL注入漏洞。

本发明的有益效果包括:

本发明实施例提供的SQL注入攻击检测方法,防火墙对客户端向服务端发送的HTTP请求进行检测,将检测到的安全攻击HTTP请求发送给服务端,并拦截检测到的危险攻击HTTP请求,并根据服务端向请求端返回的安全攻击HTTP请求对应的HTTP响应,检测是否存在SQL注入漏洞,上述过程中,防火墙允许部分安全攻击HTTP请求发送到服务端,再对安全攻击HTTP请求对应的HTTP响应进行分析判断出SQL注入漏洞之后再对其进行拦截,从而能够准确定位SQL注入漏洞,且能够使得网站有针对性的根据确认出的SQL注入漏洞进行防护,提高了SQL注入漏洞检测的准确性,帮助网站发现真实的SQL注入漏洞。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

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

图1a为本发明实施例中,SQL注入攻击检测方法的应用场景示意图;

图1b为实施SQL注入攻击的两类黑客的示意图;

图2为本发明实施例中,SQL注入攻击检测方法流程示意图;

图3为本发明实施例中,SQL注入攻击检测系统结构示意图。

具体实施方式

为了降低SQL注入攻击检测的误报率及漏报率,本发明提供了一种SQL注入攻击检测方法及系统。

本发明实施例提供的SQL注入攻击检测方法实施原理是:防火墙对客户端向服务端发送的HTTP请求进行检测,将检测到的安全攻击HTTP请求发送给服务端,并拦截检测到的危险攻击HTTP请求,针对服务端向请求端返回的包含有安全攻击HTTP请求对应的HTTP响应,如果检测到HTTP响应中包含预设的第一特征信息,则确认存在SQL注入漏洞,上述SQL注入攻击的检测方法允许部分包含有安全攻击HTTP请求的HTTP请求发送到服务端,再通过对其对应的HTTP响应进行检测来判断是否存在SQL注入漏洞,在判断出存在SQL注入漏洞之后再对其进行拦截,而不是在HTTP请求阶段就将判断出的所有可能为攻击请求的HTTP请求拦截,根据HTTP响应能够判断出SQL注入漏洞所在,使得网站管理人员能够有针对性的SQL漏洞进行防护,提高了SQL注入漏洞检测的准确性,降低了SQL注入攻击检测的误报率及漏报率。

以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

首先参考图1a,其为本发明实施例提供的SQL注入攻击检测方法的应用场景示意图,用户10通过终端11中安装的客户端访问网站服务器12,其中,客户端可以为网页的浏览器,也可以为安装于移动终端,如手机,平板电脑等中的客户端。

通常,实施SQL注入攻击的黑客一般有两类,一类如图1b中的黑客A 14,其只用于盗取数据,不会破坏数据库和服务器。以百度某分站a.baidu.com为例,假设该服务器有SQL注入漏洞黑客发起如下HTTP请求就可获取用户信息:

http://a.baidu.com/?payload=1union select*from users

而另一类如图1b中的黑客B 15,其会破坏数据库或者篡改数据。比如黑客B 15发起如下HTTP请求就会造成所有用户信息被删除:

http://a.baidu.com/?payload=1;delete from users

现有技术中,WAF(Web Application Firewall,Web应用防火墙)会把两种HTTP请求都在发送HTTP请求时阻断,让攻击不能到达网站服务器12。而本发明实施例中,允许黑客A 14的非破坏性攻击请求即安全攻击HTTP请求暂时放过到服务器端执行,进而在HTTP响应阶段做检测,并对存在SQL注入漏洞的HTTP响应进行拦截。

具体地,用户在访问网站服务器12时,其通过客户端向网站服务器12发送HTTP请求,该HTTP请求首先到达防火墙13,防火墙13根据预设的特征信息对该HTTP请求进行识别,如果该HTTP中携带的特征信息与预设的安全攻击HTTP请求的特征信息(本发明实施例中涉及的第三特征信息)相符,则防火墙13判定该HTTP请求为安全攻击HTTP请求,如果该HTTP中携带的特征信息与预设的危险攻击HTTP请求的特征信息(本发明实施例中涉及的第二特征信息)相符,则防火墙13判定该HTTP请求为危险攻击HTTP请求,对于识别出的危险攻击HTTP请求,防火墙13需进行拦截,而对于识别出的安全攻击HTTP请求,防火墙13将其按照正常流程发送给网站服务器12,并等待网站服务器12针对安全攻击HTTP请求返回的HTTP响应。网站服务器12在接收到安全攻击HTTP请求后,针对该HTTP请求向客户端返回HTTP响应,该HTTP响应中包含有响应信息,当HTTP响应到达防火墙12时,防火墙12对接收到的HTTP响应进行检测,判断接收到的HTTP响应中是否包含的预设的特征信息(本发明实施例中涉及的第一特征信息),如果是,则确认网站服务器12存在SQL注入漏洞,拦截接收到的HTTP响应。

其中,终端11与网站服务器12之间通过网络进行通信连接,该网络可以为局域网、广域网等。终端11可以为便携设备(例如:手机、平板、笔记本电脑等),也可以为个人电脑(PC,Personal Computer),网站服务器12可以为任何能够提供互联网服务的设备。

下面结合图1a和图1b的应用场景,参考图2来描述根据本发明示例性实施方式的SQL注入攻击检测方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。

如图2所示,其为本发明实施例提供的SQL注入攻击检测方法流程示意图,可以包括以下步骤:

S21、针对请求端向服务端发送的HTTP请求,检测所述HTTP请求中包含的危险攻击HTTP请求和/或安全攻击HTTP请求。

具体实施时,防火墙针对客户请求端向服务端发送的HTTP请求,检测该HTTP请求中包含的危险攻击HTTP请求和/或安全攻击HTTP请求。

其中,防火墙可以根据预设的第二特征信息检测HTTP请求中包含的危险攻击HTTP请求,危险攻击HTTP请求可以包括以下至少一种请求:删除数据库/表请求、修改表请求、执行命令请求、读写文件请求,当检测到HTTP请求中包含有通过上述请求方式得到的特征信息时,则可确认其为危险攻击HTTP请求。

同样,可以根据预设的第三特征信息检测HTTP请求中包含的安全攻击HTTP请求,其中,安全攻击HTTP请求包括以下至少一种请求:基于数据库错误的回显试探请求、数据库信息查询请求、数据查询请求、盲注攻击请求。基于此,本发明实施例中,预设的第三特征信息包括通过以下方式得到的至少一种信息:在基于数据库错误的回显试探响应中搜索数据库错误提示信息、在基于数据库信息的响应中查询数据库信息、在基于数据查询的响应中搜索业务信息、在基于盲注攻击的响应中检测是否有盲注效果,当检测到HTTP请求中包含有上述特征信息时,则可确认其为安全攻击HTTP请求。

比如,攻击者发送一个基于时间的盲注攻击判断注入点:

http://a.baidu.com/?id=1,SELECT IF(1=1,sleep(5),'1')①

再发送一个数据查询请求盗取所有用户的信息:

http://a.baidu.com/?id=1union select*from users②

本实施例中通过正则表达式sleep(\d+)匹配到请求①中的关键字sleep(5),通过正则表达式union\sselect.*匹配到请求②中的关键字union select,判断请求①和请求②为安全攻击HTTP请求中的数据查询。并且没发现有危险攻击特征信息,所以可以确定为安全攻击HTTP请求。

S22、对于检测到的安全攻击HTTP请求发送给所述服务端,并拦截检测到的危险攻击HTTP请求。

具体实施时,防火墙针对检测到的安全攻击HTTP请求发送给服务端,并拦截检测到的危险攻击HTTP请求,对其进行阻断。

S23、针对所述服务端向所述请求端返回的、所述安全攻击HTTP请求对应的HTTP响应,如果检测到所述HTTP响应中包含预设的第一特征信息,则确认存在SQL注入漏洞。

具体实施时,防火墙针对服务端向请求端返回的包含有步骤S21中检测到的安全攻击HTTP请求对应的HTTP响应,如果检测到的HTTP响应中包含预设的第一特征信息,则即可确认存在SQL注入漏洞,可以判断攻击成功,后续要存储针对该URL放过的所有安全攻击HTTP请求和对应的HTTP响应,但要将所有HTTP响应拦截阻断,不发给客户端,以便进行后续风险评估。其中,关于预设的第一特征信息,假设黑客攻击查询用户信息成功,响应中包含了大量的用户名/密码信息,比如:

Admin@baidu.com;42a1af08f69aad392d7282314f8b9d01

User1@baidu.com;ed14f93831eb50c859a0730bd732c3e3

User2@baidu.com;45011e6df25b5d6fd84dc5880f53daf1

其中有大量的邮箱和MD5特征,通过对HTTP响应进行检测就可以发现这些重要信息。

比如在http://a.baidu.com/?a=1union select*from users的响应中包含Admin@baidu.com;42a1af08f69aad392d7282314f8b9d01,则urlhttp://a.baidu.com/的参数a存在SQL注入漏洞,进而根据HTTP响应对该SQL注入漏洞进行风险评估,在漏洞URL的响应中搜索敏感信息,比如常见系统表、表名、列名、邮件地址格式、密码MD5(Message Digest Algorithm 5,消息摘要算法5)格式等,统计攻击次数、攻击源IP等信息,评估漏洞影响。其中,MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5将任意长度的“字节串”映射为一个128bit的大整数,并且通过该128bit反推原始字符串是困难的,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串。MD5被广泛用于系统的登陆认证上,当用户登录的时候,系统把用户输入的密码进行MD5Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性,可以避免用户的密码被具有系统管理员权限的用户获取。

基于此,本发明实施例提供的SQL注入攻击检测方法,还可以包括以下步骤:提取安全攻击HTTP请求对应的HTTP响应中携带的响应信息,根据提取的响应信息对SQL注入漏洞进行风险评估。

具体地,安全攻击HTTP请求返回的HTTP响应中携带的响应信息可以包括:攻击类型信息、攻击业务类型信息和发起攻击的网站地址信息。具体实施时,可以根据攻击类型信息以及预先存储的攻击类型信息与攻击向量的对应关系,确定SQL注入漏洞对应的攻击向量,根据攻击业务类型信息以及预先存储的攻击业务类型信息与攻击结果向量之间的对应关系,确定SQL注入漏洞对应的攻击结果向量,以及根据发起攻击的网络地址信息,统计针对SQL注入漏洞发起SQL注入攻击的网络地址数量(即攻击源IP数量),再根据统计的网络地址数量以及预先存储的网络地址数量与攻击普遍性向量之间的对应关系,确定SQL注入漏洞对应的攻击普遍性向量,最后根据SQL注入漏洞对应的攻击向量、攻击结果向量和攻击普遍性向量共同确定SQL注入漏洞对应的风险等级。

用公式表述如下:

风险等级=攻击向量*攻击普遍性向量*攻击结果向量

其中:

比如,当攻击类型为“盲注攻击,有编码”、攻击源IP数量>2、攻击业务类型为“可查询密码数据和业务数据”时,对应的风险等级=1*2*3=6,风险等级的数值越大,SQL注入攻击风险越高。

因为搜集了所有可疑请求的响应信息,能直接评估漏洞带来的影响,比如攻击请求能访问哪些表,获取哪些数据,拥有哪些权限等。对安全攻击HTTP请求返回的HTTP响应检测出的SQL注入漏洞进行风险评估后,将风险评估结果以及拦截的HTTP响应反馈给网站管理员,网站管理员根据风险评估结果及拦截的HTTP响应对SQL注入攻击漏洞进行防护处理。

本发明实施例提供的SQL注入攻击检测方法,通过防火墙对客户端向服务端发送的HTTP请求进行检测,将检测到的安全攻击HTTP请求发送给服务端,并拦截检测到的危险攻击HTTP请求,并根据服务端向请求端返回的包含有安全攻击HTTP请求的对应的HTTP响应,检测是否存在SQL注入漏洞,上述过程中,防火墙允许部分安全攻击HTTP请求发送到服务端,再对安全攻击HTTP请求对应的HTTP响应进行分析判断出SQL注入漏洞之后再对其进行拦截,从而能够准确定位SQL注入漏洞,且能够使得网站有针对性的根据确认出的SQL注入漏洞进行防护,提高了SQL注入漏洞检测的准确性,帮助网站发现真实的SQL注入漏洞。

基于同一发明构思,本发明实施例中还提供了SQL注入攻击检测系统,由于上述系统解决问题的原理与SQL注入攻击检测方法相似,因此上述系统的实施可以参见方法的实施,重复之处不再赘述。

本发明实施例提供的SQL注入攻击检测系统可以应用于防火墙中。如图3所示,其为本发明实施例提供的SQL注入攻击检测系统在防火墙中的应用结构示意图,可以包括:

检测模块31,用于针对请求端向服务端发送的超文本传输协议HTTP请求,检测所述HTTP请求中包含的危险攻击HTTP请求和/或安全攻击HTTP请求;

第一处理模块32,用于对于检测到的安全攻击HTTP请求发送给所述服务端,并拦截检测到的危险攻击HTTP请求;

漏洞确认模块33,用于针对所述服务端向所述请求端返回的、所述安全攻击HTTP请求对应的HTTP响应,如果检测到所述HTTP响应中包含预设的第一特征信息,则确认存在SQL注入漏洞。

其中,所述检测模块31,具体用于根据预设的第二特征信息检测所述HTTP请求中包含的危险攻击HTTP请求;和/或

根据预设的第三特征信息检测所述HTTP请求中包含的安全攻击HTTP请求。

可选地,本发明实施例提供的SQL注入攻击检测系统,还可以包括:

提取模块,用于在所述漏洞确认模块确认存在SQL注入漏洞之后,提取所述HTTP响应中携带的响应信息;

风险评估模块,用于根据提取的响应信息对SQL注入漏洞进行风险评估。较佳地,所述响应信息可以包括攻击类型信息、攻击业务类型信息和发起攻击的网络地址信息。

可选地,本发明实施例提供的SQL注入攻击检测系统,还可以包括:

第一确定模块,用于根据所述攻击类型信息以及预先存储的攻击类型信息与攻击向量的对应关系,确定所述SQL注入漏洞对应的攻击向量;

第二确定模块,用于根据所述攻击业务类型信息以及预先存储的攻击业务类型信息与攻击结果向量之间的对应关系,确定所述SQL注入漏洞对应的攻击结果向量;

统计模块,用于根据发起攻击的网络地址信息,统计针对所述SQL注入漏洞发起SQL注入攻击的网络地址数量;

第三确定模块,用于根据统计的网络地址数量以及预先存储的网络地址数量与攻击普遍性向量之间的对应关系,确定所述SQL注入漏洞对应的攻击普遍性向量;

第四确定模块,用于根据所述SQL注入漏洞对应的攻击向量、攻击结果向量和攻击普遍性向量确定所述SQL注入漏洞对应的风险等级。

可选地,本发明实施例提供的SQL注入攻击检测系统,还可以包括:

拦截模块,用于在所述漏洞确认模块确认存在SQL注入漏洞之后,拦截所述服务端向所述请求端返回的、所述安全攻击HTTP请求对应HTTP响应。

为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。

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

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

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

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

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

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

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