CN107566392A - 一种报错型sql注入的检测方法和代理服务器 - Google Patents
一种报错型sql注入的检测方法和代理服务器 Download PDFInfo
- Publication number
- CN107566392A CN107566392A CN201710865971.6A CN201710865971A CN107566392A CN 107566392 A CN107566392 A CN 107566392A CN 201710865971 A CN201710865971 A CN 201710865971A CN 107566392 A CN107566392 A CN 107566392A
- Authority
- CN
- China
- Prior art keywords
- model
- network
- response
- request
- error
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种报错型SQL注入的检测方法,在代理服务器中执行,该服务器中存储有第一模型库和第二模型库,第一模型检测网络请求是否为报错型SQL注入请求,第二模型检测网络响应是否为报错型SQL注入响应,方法包括:从客户端的网络请求中提取请求参数值,将请求参数值与第一模型库进行第一匹配;若第一匹配不成功,则放行该网络请求;接收网络服务器返回的网络响应,提取其中的响应内容并将该内容与第二模型库进行第二匹配;若第二匹配成功,则对请求参数值建模后添加到第一模型库中;以及从网络响应中删除匹配到的响应内容后放行该网络响应,并将网络请求中的URL与匹配到的响应内容关联存储,作为存在报错型SQL注入漏洞的URL和对应的漏洞泄露信息。
Description
技术领域
本发明涉及计算机安全技术领域,尤其涉及一种报错型SQL注入的检测方法和代理服务器。
背景技术
网络漏洞是存在于计算机网络系统中的、可能对系统中的组成和数据造成损害的一切因素,其是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。从开放式Web应用程序安全项目(OWASP)所公布的2017年十大漏洞列表中可以看出,注入漏洞仍是Web安全最为严重的安全问题,而SQL注入漏洞在这其中占比最大。SQL注入漏洞是一种严重的Web安全漏洞,该漏洞主要是由于程序员在编写程序的时候没有对用户输入的参数进行有效性验证和过滤,导致恶意攻击者可将SQL命令注入到参数中,使得服务器执行这些SQL命令。
利用SQL注入获取Web系统信息最为常用的手法是注入报错型语句。目前对于SQL注入漏洞的检测方法中,通常是基于特征的检测方法或基于SQL语法语义的检测方法。然而,这些检测方法并不能解答网站漏洞是否真实存在,以及攻击者利用漏洞获取到了什么信息等网站管理者关心的问题。
因此,需要提供一种能够准确检测报错型SQL注入,并明确漏洞是否存在以及漏洞所泄露信息的方法。
发明内容
鉴于上述问题,本发明提出了一种报错型SQL注入的检测方法和代理服务器,以力图解决或者至少解决上面存在的问题。
根据本发明的一个方面,提供一种报错型SQL注入的检测方法,在代理服务器中执行,代理服务器中存储有第一模型库和第二模型库,第一模型库中包括多个第一模型,第一模型适于检测网络请求是否为报错型SQL注入请求,第二模型库中包括多个第二模型,第二模型适于检测网络响应是否为报错型SQL注入响应,方法包括:接收客户端发送的网络请求,提取网络请求中的请求参数值,并将请求参数值与第一模型库进行第一匹配;当第一匹配的结果为未匹配到第一模型库中的第一模型时,将该网络请求作为第一类型网络请求放行;接收网络服务器根据第一类型网络请求所返回的网络响应,提取网络响应中的响应内容,并将响应内容与第二模型库进行第二匹配;当第二匹配的结果为匹配到第二模型库中的第二模型时,对请求参数值进行建模得到第一模型,并将该第一模型添加到第一模型库中;以及从网络响应中删除匹配到的响应内容后放行该网络响应,并将该网络响应对应的网络请求中的URL与匹配到的响应内容进行关联存储,作为存在报错型SQL注入漏洞的URL和对应的漏洞泄露信息。
可选地,在根据本发明的报错型SQL注入的检测方法中,还包括:当第二匹配的结果为未匹配到第二模型库中的第二模型时,放行该网络响应。
可选地,在根据本发明的报错型SQL注入的检测方法中,还包括:当第一匹配的结果为匹配到第一模型库中的第一模型时,将请求参数值与SQL执行引擎中的预定义语句拼接为SQL语句,执行该SQL语句,得到执行结果;对执行结果进行建模得到第二模型,将该第二模型添加到第二模型库中,并将该网络请求作为第二类型网络请求放行。
可选地,在根据本发明的报错型SQL注入的检测方法中,还包括;接收网络服务器根据第二类型网络请求所返回的网络响应,提取网络响应中的响应内容,并将响应内容与第二模型库进行第三匹配;当第三匹配的结果为匹配到第二模型库中的第二模型时,从网络响应中删除匹配到的响应内容后放行该网络响应,并将该网络响应对应的网络请求中的URL与匹配到的响应内容进行关联存储,作为存在报错型SQL注入漏洞的URL和对应的漏洞泄露信息。
可选地,在根据本发明的报错型SQL注入的检测方法中,还包括:当第三匹配结果为未匹配到第二模型库中的第二模型时,从第一模型库中删除在执行第一匹配时所匹配到的第一模型,并放行该网络响应。
可选地,在根据本发明的报错型SQL注入的检测方法中,还包括:对常用的报错型SQL注入请求中的注入语句进行建模,得到多个第一模型,并将多个第一模型的集合构建为第一模型库;对常用的报错型SQL注入响应对应的报错内容进行建模,得到多个第二模型,并将所述多个第二模型的集合构建为第二模型库。
可选地,在根据本发明的报错型SQL注入的检测方法中,网络请求为http请求,网络响应为http响应。
可选地,在根据本发明的报错型SQL注入的检测方法中,第一模型和第二模型为基于正则表达式的模型,所述第一匹配、第二匹配和第三匹配为正则匹配。
根据本发明的又一个方面,提供一种代理服务器,包括:一个或多个处理器;存储器;以及一个或多个程序,其中所述一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,所述一个或多个程序包括用于执行根据如上所述的报错型SQL注入的检测方法的指令。
根据本发明的又一个方面,提供一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由代理服务器执行时,使得该代理服务器执行根据如上所述的报错型SQL注入的检测方法。
根据本发明的技术方案,代理服务器中预先存储第一模型库和第二模型库,第一模型库中的第一模型适于检测网络请求是否为报错型SQL注入请求,第二模型库中的第二模型适于检测网络响应是否为报错型SQL注入响应。当代理服务器接收到客户端的网络请求时,从该请求中提取请求参数值,并将该参数值与第一模型库匹配。若请求匹配不成功,则继续对该网络响应的响应内容进行匹配,若响应匹配成功,则对请求参数值建模为第一模型后对第一模型库进行更新,此时该请求的URL即为报错型SQL注入漏洞的URL,所匹配的响应内容为对应的漏洞泄露信息。
另一方面,若请求匹配成功,则将该请求构造为SQL语句进行执行,并将执行结果建模后对第二模型库进行更新。放行该请求后得到网络响应,若响应匹配成功,则说明该请求的URL为报错型SQL注入漏洞的URL,所匹配的响应内容为对应的漏洞泄露信息。若响应匹配不成功,则将该请求所匹配的第一模型删除。
这样,本发明能够准确地检测报错型SQL注入,并明确漏洞是否存在以及漏洞所泄露的信息。而且,本发明还能对第一模型库和第二模型库进行交叉验证,即根据网络请求对第二模型库更新,以及根据网络响应对第一模型库更新,从而进一步提高两个模型库的准确度。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的网络系统100的结构框图;
图2示出了根据本发明一个实施例的代理服务器200的结构框图;以及
图3示出了根据本发明一个实施例的报错型SQL注入的检测方法300的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的网络系统100的示意图。如图中所示,网络系统100包括客户端120(如客户端1-n)、代理服务器140和网络服务器160(如网络服务器1-m)。其中,客户端120、代理服务器140和网络服务器160之间分别通过网络进行通信连接。应当指出,图1中的网络系统100仅是示例性的,在具体的实践情况中,系统100中可以有不同数量的客户端120、代理服务器140和网络服务器160,本发明对系统100中所包括的各网络设备的数目不做限制。
客户端120可以实现万维网使用的网页浏览器,或者即时通讯的客户端软件等,其通常设置在个人计算机上、手机、平板电脑、个人媒体播放器设备、无线网络浏览设备、应用专用设备等客户机上。代理服务器140和网络服务器160分别可以是一台服务器,也可以是由若干台服务器组成的服务器集群,或者是一个云计算服务中心。此外,用于组成服务器集群或云计算服务中心的多个服务器可以驻留在多个地理位置中,本发明对代理服务器140和网络服务器160的部署方式不做限制。根据一个实施例,代理服务器140为反向代理服务器。
代理服务器140向客户端120提供相关网络服务,如接收客户端120发送的网络请求,记录访问信息,解析该请求中的请求地址和请求地址,根据该网络请求访问后端的网络服务器160,网络服务器160对该网络请求进行处理后返回响应内容,代理服务器140接收到该响应内容后返回给客户端120。另外,代理服务器140也可能将网络服务器160的资源下载至本地缓存,如果客户端120所要获取的资源在代理服务器140的缓存之中,则代理服务器140并不会向网络服务器160发送请求,而是直接返回缓存了的资源。
此外,在根据本发明的代理服务器140中,还存储有第一模型库和第二模型库。其中,第一模型库中包括多个第一模型,第一模型适于检测网络请求是否为报错型SQL注入请求,如果网络请求的请求参数值能够匹配到第一模型库中的某个第一模型,则说明该网络请求可能为进行SQL注入攻击的请求。第二模型库中包括多个第二模型,第二模型适于检测网络响应是否为报错型SQL注入响应,如果网络响应的响应内容能够匹配到第二模型库中的某个第二模型,则说明该网络响应可能为报错型SQL注入响应,该网络响应对应的网络请求可能为进行SQL注入攻击的请求。
具体地,第一模型实际上为报错型SQL注入请求模型,它是一种基于正则表达式的模型,其建立方法是保留注入语句中的SQL关键词及符号,而将非关键词及符号部分替换为任意字符标识。其中,符号通常指语句中的括号和逗号等,而正则表达式中用"."表示",",而"+"表示匹配前面子字符串一次或多次。例如,语句1and(extractvalue(1,concat(0x7e,(select user()),0x7e))),其对应的报错型SQL注入请求模型为(extractvalue(.+,concat(.+,(select,.+),.+))),而报错型SQL注入请求模型库即为该类似模型的集合。
第二模型实际上为报错型SQL注入响应模型,其也是一种基于正则表达式的模型。报错型SQL注入响应模型库初始化为SQL引擎报错关键字+多次重复特定字符+无规律字符+多次重复特定字符。例如,Duplicate entry\'(.{n}).+\1\';syntax error\'(.{n}).+\1\'等,而报错型SQL注入响应模型库即为类似模型的集合。
根据一个实施例,代理服务器140还可以对常用的报错型SQL注入请求中的注入语句进行建模(即生成能够匹配该注入语句的正则表达式),得到多个第一模型,并将这多个第一模型的集合构建为第一模型库;以及对常用的报错型SQL注入响应对应的报错内容进行建模(即生成能够匹配该报错内容的正则表达式),得到多个第二模型,并将这多个第二模型的集合构建为第二模型库。
图2示出了根据本发明一个实施例的代理服务器200的结构框图。在基本的配置202中,代理服务器200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。在一些实施方式中,应用222可以布置为在操作系统上利用程序数据224进行操作。程序数据224包括指令,在根据本发明的代理服务器200中,程序数据224包含用于执行根据本发明的报错型SQL注入的检测方法300的指令。
代理服务器200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器130的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在一些实施例中,代理服务器200被配置为执行根据本发明的报错型SQL注入的检测方法300。
图3示出了根据本发明一个实施例的报错型SQL注入的检测方法300的流程图,该方法适于在代理服务器中执行,如在代理服务器200中执行。如图3所示,方法300始于步骤S310。
在步骤S310中,接收客户端发送的网络请求,提取该网络请求中的请求参数值,并将请求参数值与第一模型库进行匹配,例如进行正则匹配。也就是,将请求中疑似攻击参数值与报错型SQL注入请求模型库进行匹配,其中疑似攻击参数值例如参数值中包含SQL关键词select、concat、floor等。此外,在该步骤中,还可以记录该网络请求信息,以便后续将该网络请求的URL与泄露的信息进行关联存储。
根据一个实施例,该网络请求可以为http请求,其所对应的网络响应为http响应。
http请求会携带参数(参数名-参数值对),对于get方式的http请求,其请求参数会用“?”作
为分隔符跟在请求资源后面;对于post方式的http请求,其请求参数通常在最后面的位置。
例如,HTTP请求中id参数的值为1and(select 1 from(select count(*),concat(user(),
floor(rand(0)*2))x from information_schema.tables group by x)a)或1 and
(extractvalue(1,concat(0x7e,(select user()),0x7e)))等。
随后,在步骤S320中,当该请求参数值未匹配到第一模型库中的第一模型(报错型SQL注入请求模型)时,则将该网络请求作为第一类型网络请求放行。这里,第一类型网络请求可以理解为网络请求未匹配成功,即网络请求有大概率不是报错型SQL注入请求;与之相对应的是第二类型网络请求,该第二类型网络请求表示请求匹配成功,即该网络请求有极大概率是报错型SQL注入请求。网络请求被放行后,就会被发送到对应的网络服务器,由网络服务器处理后返回网络响应。
随后,在步骤S330中,接收网络服务器根据第一类型网络请求所返回的网络响应,提取网络响应中的响应内容,并将响应内容与第二模型库进行匹配,例如进行正则匹配。
随后,在步骤S340中,如果该响应内容能够匹配到第二模型库中的某个第二模型(报错型SQL注入响应模型),则说明该网络请求应当为报错型SQL注入请求,因此需从网络响应中删除匹配到的响应内容后放行该网络响应,并将该网络响应对应的网络请求中的URL与匹配到的响应内容进行关联存储,作为存在报错型SQL注入漏洞的URL和对应的漏洞泄露信息。另外,从网络响应中确定该网络请求为报错型SQL注入请求,但该网络请求却未匹配上第一模型库,因此需要根据该网络请求对第一模型库进行更新。具体地,对该网络请求的请求参数值进行建模得到第一模型,并将该第一模型添加到第一模型库中。建模方法可以采用前文所述的第一模型建模方法,或者其他常规建模方法,本发明不作限制。
这里,匹配的判断标准是响应内容中有符合报错型SQL注入响应模型的数据,如果匹配成功,则匹配到的数据为漏洞泄露信息,相应地,步骤S320中网络请求的URL为存在漏洞的URL,在向客户端返回网络响应时需要将匹配到的泄露信息删除,只返回未匹配到的响应内容。
或者,在步骤S350中,如果该响应内容未能匹配到第二模型库中的某个第二模型(报错型SQL注入响应模型),则说明该网络请求不是报错型SQL注入请求,因此可放行该网络响应,并清除步骤S320中所记录的网络请求信息。这里,从网络请求和网络响应两个方面验证了该网络请求是正常请求而非报错型SQL注入请求。
另一方面,与步骤S320相对应地,在步骤S360中,如果请求参数值匹配到了第一模型库中的某个第一模型(报错型SQL注入请求模型),则说明该网络请求可能为报错型SQL注入请求,因此将该请求参数值与SQL执行引擎中的预定义语句拼接为SQL语句,执行该SQL语句,得到执行结果;以及对该执行结果进行建模得到第二模型,将该第二模型添加到第二模型库中,并将该网络请求作为第二类型网络请求放行。建模方法可以采用前文所述的第二模型建模方法,或者其他常规建模方法,本发明不作限制。
具体地,预定义语句可以是指常用的SQL语句模板,例如select*from user whereid=,而拼接是将参数值与预定义语句连接后再加上语句结束符,例如select*from userwhere id=1and(extractvalue(1,concat(0x7e,(select user()),0x7e)))。步骤S360主要是根据匹配成功的网络请求对第二模型库进行更新,其是对执行后的结果进行模型化后得到第二模型。例如,执行语句select*from test where id=1 and exp(~(select*from(select user())a));后结果为DOUBLE value is out of range in'exp(~((select'root@localhost'from dual)))',建模为DOUBLE value is out of range in'exp(.+*((select‘.+’from dual)))’。
随后,在步骤S370中,接收网络服务器根据第二类型网络请求所返回的网络响应,提取网络响应中的响应内容,并将响应内容与第二模型库进行匹配,例如进行正则匹配。
随后,在步骤S380中,如果步骤S370中的响应内容匹配到了第二模型库中的某个第二模型,则说明该网络请求是报错型SQL注入请求,因此从网络响应中删除匹配到的响应内容后放行该网络响应,并将该网络响应对应的网络请求中的URL与匹配到的响应内容进行关联存储,作为存在报错型SQL注入漏洞的URL和对应的漏洞泄露信息。
或者,在步骤S390中,如果步骤S370中的响应内容未匹配到第二模型库中的第二模型,则说明该网络请求不是报错型SQL注入请求,因此从第一模型库中删除在执行步骤S320中的匹配操作时所匹配到的第一模型,并放行该网络响应。另外,还可清除掉在步骤320中所记录的该网络请求信息。这里,虽然网络请求匹配成功,但网络响应未匹配成功,因此认为该网络请求是正常请求,需要删除该网络请求在第一模型库中的对应第一模型,以防后续对其他类似网络请求产生误判。
综上所述,根据本发明的报错型SQL注入的检测方法300,会对第一、二模型库进行动态更新,包括如下情况:当请求匹配未成功,但响应匹配成功时,更新(添加)第一模型库,并记录泄露信息(步骤S340);当请求和响应均未匹配成功时,放行该请求和响应(步骤S350);当请求匹配成功时,构造SQL语句执行,根据执行结果更新(添加)第二模型库(步骤S360);当请求和响应均匹配成功时,记录泄露信息(步骤S380);当请求匹配成功,但响应未匹配成功时,更新(删除)第一模型库(步骤S390)。
根据本发明的技术方案,采用报错型注入请求模型库对网络请求进行匹配验证、采用报错型注入响应模型库对网络响应进行匹配验证,通过网络请求和网络响应的双重验证方式来准确检测报错型SQL注入,并能够明确漏洞是否存在及该漏洞所泄露的信息。而且,本发明还根据网络请求对第二模式库更新,根据响应对第一模式库更新,这种交叉验证的方式能够有效提高两个模型库的准确度,从而有效避免对请求或响应的误判。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的报错型SQL注入的检测方法。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (10)
1.一种报错型SQL注入的检测方法,在代理服务器中执行,所述代理服务器中存储有第一模型库和第二模型库,所述第一模型库中包括多个第一模型,所述第一模型适于检测网络请求是否为报错型SQL注入请求,所述第二模型库中包括多个第二模型,所述第二模型适于检测网络响应是否为报错型SQL注入响应,所述方法包括:
接收客户端发送的网络请求,提取所述网络请求中的请求参数值,并将请求参数值与第一模型库进行第一匹配;
当第一匹配的结果为未匹配到第一模型库中的第一模型时,将该网络请求作为第一类型网络请求放行;
接收网络服务器根据第一类型网络请求所返回的网络响应,提取所述网络响应中的响应内容,并将响应内容与第二模型库进行第二匹配;
当第二匹配的结果为匹配到第二模型库中的第二模型时,对所述请求参数值进行建模得到第一模型,并将该第一模型添加到第一模型库中;以及
从网络响应中删除匹配到的响应内容后放行该网络响应,并将该网络响应对应的网络请求中的URL与匹配到的响应内容进行关联存储,作为存在报错型SQL注入漏洞的URL和对应的漏洞泄露信息。
2.如权利要求1所述的方法,其中,还包括:
当第二匹配的结果为未匹配到第二模型库中的第二模型时,放行该网络响应。
3.如权利要求1所述的方法,其中,还包括:
当第一匹配的结果为匹配到第一模型库中的第一模型时,将所述请求参数值与SQL执行引擎中的预定义语句拼接为SQL语句,执行该SQL语句,得到执行结果;
对执行结果进行建模得到第二模型,将该第二模型添加到第二模型库中,并将该网络请求作为第二类型网络请求放行。
4.如权利要求3所述的方法,其中,还包括;
接收网络服务器根据第二类型网络请求所返回的网络响应,提取所述网络响应中的响应内容,并将响应内容与第二模型库进行第三匹配;
当第三匹配的结果为匹配到第二模型库中的第二模型时,从网络响应中删除匹配到的响应内容后放行该网络响应,并将该网络响应对应的网络请求中的URL与匹配到的响应内容进行关联存储,作为存在报错型SQL注入漏洞的URL和对应的漏洞泄露信息。
5.如权利要求4所述的方法,其中,还包括:
当第三匹配结果为未匹配到第二模型库中的第二模型时,从第一模型库中删除在执行第一匹配时所匹配到的第一模型,并放行该网络响应。
6.如权利要求1所述的方法,其中,还包括:
对常用的报错型SQL注入请求中的注入语句进行建模,得到多个第一模型,并将所述多个第一模型的集合构建为所述第一模型库;
对常用的报错型SQL注入响应对应的报错内容进行建模,得到多个第二模型,并将所述多个第二模型的集合构建为所述第二模型库。
7.如权利要求1至6中任一项所述的方法,其中,所述网络请求为http请求,所述网络响应为http响应。
8.如权利要求1至6中任一项所述的方法,其中,所述第一模型和第二模型为基于正则表达式的模型,所述第一匹配、第二匹配和第三匹配为正则匹配。
9.一种代理服务器,包括:
至少一个处理器;和
存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-8中任一项所述的方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710865971.6A CN107566392B (zh) | 2017-09-22 | 2017-09-22 | 一种报错型sql注入的检测方法、代理服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710865971.6A CN107566392B (zh) | 2017-09-22 | 2017-09-22 | 一种报错型sql注入的检测方法、代理服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107566392A true CN107566392A (zh) | 2018-01-09 |
CN107566392B CN107566392B (zh) | 2020-02-11 |
Family
ID=60982641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710865971.6A Active CN107566392B (zh) | 2017-09-22 | 2017-09-22 | 一种报错型sql注入的检测方法、代理服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107566392B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321711A (zh) * | 2019-07-05 | 2019-10-11 | 杭州安恒信息技术股份有限公司 | 检测应用服务器sql注入点的方法及系统 |
CN111367705A (zh) * | 2020-03-31 | 2020-07-03 | 中国工商银行股份有限公司 | 一种sql报错的处理方法及装置 |
CN112671727A (zh) * | 2020-12-11 | 2021-04-16 | 深信服科技股份有限公司 | 一种信息泄露检测方法及装置、设备、存储介质 |
CN113810343A (zh) * | 2020-06-15 | 2021-12-17 | 深信服科技股份有限公司 | 函数注入攻击的检测方法、装置、设备及可读存储介质 |
CN114157476A (zh) * | 2021-12-01 | 2022-03-08 | 上海钧正网络科技有限公司 | 基于Web应用防护系统的SQL注入漏洞检测方法、装置、终端及介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267357A (zh) * | 2007-03-13 | 2008-09-17 | 北京启明星辰信息技术有限公司 | 一种sql注入攻击检测方法及系统 |
CN101312393A (zh) * | 2007-05-24 | 2008-11-26 | 北京启明星辰信息技术有限公司 | 一种sql注入漏洞检测方法及系统 |
CN101873231A (zh) * | 2010-07-06 | 2010-10-27 | 联想网御科技(北京)有限公司 | 一种网络入侵特征配置方法及系统 |
CN103744888A (zh) * | 2013-12-23 | 2014-04-23 | 新浪网技术(中国)有限公司 | 反垃圾邮件网关查询数据库的方法和系统 |
CN105046150A (zh) * | 2015-08-06 | 2015-11-11 | 福建天晴数码有限公司 | 防止sql注入的方法及系统 |
CN105704146A (zh) * | 2016-03-18 | 2016-06-22 | 四川长虹电器股份有限公司 | Sql防注入的系统与方法 |
US20160337400A1 (en) * | 2015-05-15 | 2016-11-17 | Virsec Systems, Inc. | Detection of sql injection attacks |
CN106302337A (zh) * | 2015-05-22 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 漏洞检测方法和装置 |
CN106357696A (zh) * | 2016-11-14 | 2017-01-25 | 北京神州绿盟信息安全科技股份有限公司 | 一种sql注入攻击检测方法及系统 |
CN106790189A (zh) * | 2016-12-30 | 2017-05-31 | 杭州迪普科技股份有限公司 | 一种基于响应报文的入侵检测方法和装置 |
US20170208077A1 (en) * | 2016-01-15 | 2017-07-20 | Kentik Technologies, Inc. | Network Monitoring, Detection, and Analysis System |
-
2017
- 2017-09-22 CN CN201710865971.6A patent/CN107566392B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267357A (zh) * | 2007-03-13 | 2008-09-17 | 北京启明星辰信息技术有限公司 | 一种sql注入攻击检测方法及系统 |
CN101312393A (zh) * | 2007-05-24 | 2008-11-26 | 北京启明星辰信息技术有限公司 | 一种sql注入漏洞检测方法及系统 |
CN101873231A (zh) * | 2010-07-06 | 2010-10-27 | 联想网御科技(北京)有限公司 | 一种网络入侵特征配置方法及系统 |
CN103744888A (zh) * | 2013-12-23 | 2014-04-23 | 新浪网技术(中国)有限公司 | 反垃圾邮件网关查询数据库的方法和系统 |
US20160337400A1 (en) * | 2015-05-15 | 2016-11-17 | Virsec Systems, Inc. | Detection of sql injection attacks |
CN106302337A (zh) * | 2015-05-22 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 漏洞检测方法和装置 |
CN105046150A (zh) * | 2015-08-06 | 2015-11-11 | 福建天晴数码有限公司 | 防止sql注入的方法及系统 |
US20170208077A1 (en) * | 2016-01-15 | 2017-07-20 | Kentik Technologies, Inc. | Network Monitoring, Detection, and Analysis System |
CN105704146A (zh) * | 2016-03-18 | 2016-06-22 | 四川长虹电器股份有限公司 | Sql防注入的系统与方法 |
CN106357696A (zh) * | 2016-11-14 | 2017-01-25 | 北京神州绿盟信息安全科技股份有限公司 | 一种sql注入攻击检测方法及系统 |
CN106790189A (zh) * | 2016-12-30 | 2017-05-31 | 杭州迪普科技股份有限公司 | 一种基于响应报文的入侵检测方法和装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321711A (zh) * | 2019-07-05 | 2019-10-11 | 杭州安恒信息技术股份有限公司 | 检测应用服务器sql注入点的方法及系统 |
CN110321711B (zh) * | 2019-07-05 | 2021-01-29 | 杭州安恒信息技术股份有限公司 | 检测应用服务器sql注入点的方法及系统 |
CN111367705A (zh) * | 2020-03-31 | 2020-07-03 | 中国工商银行股份有限公司 | 一种sql报错的处理方法及装置 |
CN111367705B (zh) * | 2020-03-31 | 2023-08-04 | 中国工商银行股份有限公司 | 一种sql报错的处理方法及装置 |
CN113810343A (zh) * | 2020-06-15 | 2021-12-17 | 深信服科技股份有限公司 | 函数注入攻击的检测方法、装置、设备及可读存储介质 |
CN113810343B (zh) * | 2020-06-15 | 2023-05-12 | 深信服科技股份有限公司 | 函数注入攻击的检测方法、装置、设备及可读存储介质 |
CN112671727A (zh) * | 2020-12-11 | 2021-04-16 | 深信服科技股份有限公司 | 一种信息泄露检测方法及装置、设备、存储介质 |
CN114157476A (zh) * | 2021-12-01 | 2022-03-08 | 上海钧正网络科技有限公司 | 基于Web应用防护系统的SQL注入漏洞检测方法、装置、终端及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107566392B (zh) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741195B2 (en) | Secure deployment of a software package | |
CN107566392A (zh) | 一种报错型sql注入的检测方法和代理服务器 | |
US10079854B1 (en) | Client-side protective script to mitigate server loading | |
US9509714B2 (en) | Web page and web browser protection against malicious injections | |
CN103744802B (zh) | Sql注入攻击的识别方法及装置 | |
US11888855B2 (en) | Website verification platform | |
US9390270B2 (en) | Security testing using semantic modeling | |
US11348597B2 (en) | Intent-based network validation | |
US20200014697A1 (en) | Whitelisting of trusted accessors to restricted web pages | |
CN109937564B (zh) | 用于检测分布式计算系统中的欺诈性帐户使用的方法和设备 | |
CA3023254A1 (en) | Security weakness and infiltration detection and repair in obfuscated website content | |
CN109347882B (zh) | 网页木马监测方法、装置、设备及存储介质 | |
CN104462985A (zh) | bat漏洞的检测方法以及装置 | |
CN103617390A (zh) | 一种恶意网页判断方法、装置和系统 | |
CN104375935B (zh) | Sql注入攻击的测试方法和装置 | |
JP6646847B2 (ja) | 確率的データ構造からの要素の削除 | |
Lyu et al. | An Efficient and Packing‐Resilient Two‐Phase Android Cloned Application Detection Approach | |
US20140283080A1 (en) | Identifying stored vulnerabilities in a web service | |
CN111368231B (zh) | 一种异构冗余架构网站的测试方法及装置 | |
US10846407B1 (en) | Machine learning model robustness characterization | |
CN110392064B (zh) | 风险识别方法、装置、计算设备以及计算机可读存储介质 | |
Wang et al. | RESTlogic: Detecting Logic Vulnerabilities in Cloud REST APIs. | |
CN111461349B (zh) | 建模方法及系统 | |
CN114826726B (zh) | 网络资产脆弱性检测方法、装置、计算机设备和存储介质 | |
CN107566349A (zh) | 一种检测网络服务器中敏感文件泄露的方法及计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Room 311501, Unit 1, Building 5, Courtyard 1, Futong East Street, Chaoyang District, Beijing 100102 Applicant after: Beijing Zhichuangyu Information Technology Co., Ltd. Address before: 100097 Jinwei Building 803, 55 Lanindichang South Road, Haidian District, Beijing Applicant before: Beijing Knows Chuangyu Information Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |