CN106407803B - Sql注入漏洞的检测方法及装置 - Google Patents

Sql注入漏洞的检测方法及装置 Download PDF

Info

Publication number
CN106407803B
CN106407803B CN201610778273.8A CN201610778273A CN106407803B CN 106407803 B CN106407803 B CN 106407803B CN 201610778273 A CN201610778273 A CN 201610778273A CN 106407803 B CN106407803 B CN 106407803B
Authority
CN
China
Prior art keywords
user
request
target
phrase
target signature
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.)
Active
Application number
CN201610778273.8A
Other languages
English (en)
Other versions
CN106407803A (zh
Inventor
计东
韩鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Qianxin Technology Group Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Beijing Qianxin Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Beijing Qianxin Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201610778273.8A priority Critical patent/CN106407803B/zh
Publication of CN106407803A publication Critical patent/CN106407803A/zh
Application granted granted Critical
Publication of CN106407803B publication Critical patent/CN106407803B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种SQL注入漏洞的检测方法及装置,其中,所述方法包括:接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析;在所述语义分析过程中进行目标特征提取的操作;检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联。本发明通过对用户请求和该用户请求对应的响应页面进行特征匹配,判断响应页面是否存在与用户请求的目标特征对应的响应特征,实现注入漏洞的检测,不仅能够检测出已知漏洞,还能够快速、精确地实现对未知漏洞的检测,有利于提高计算机系统的网络安全。

Description

SQL注入漏洞的检测方法及装置
技术领域
本发明涉及信息安全技术领域,尤其涉及一种SQL注入漏洞的检测方法及装置。
背景技术
结构化查询语言(Structured Query Language,以下简称SQL)注入漏洞是一种应用广泛、具有很大威胁性的Web攻击技术,通过猜解和验证目标系统的SQL执行逻辑,构造能够欺骗解释器的攻击载荷,执行攻击性的命令或者访问未被授权的数据。这种攻击方法隐蔽性强,受攻击后的Web应用系统可能会产生敏感信息的泄漏或破坏,给正常业务造成非常严重的影响。
现有对SQL注入漏洞的检测,大多数都是基于对HTTP请求的特征匹配实现,通过对HTTP请求的特征与预先构造的漏洞特征库进行匹配,若匹配成功则认定存在SQL注入漏洞。但是,现有的漏洞检测技术缺少灵活性,只能检测已知漏洞,容易遗漏一些未知漏洞,不能快速、精确地检测出0day漏洞(0day漏洞是指已经发现但还没有给出相关补丁对该漏洞进行修复的漏洞),从而使计算机系统的安全受到威胁。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的SQL注入漏洞的检测方法及装置。
本发明的一个方面,提供了一种SQL注入漏洞的检测方法,包括:
接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析;
在所述语义分析过程中进行目标特征提取的操作;
检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联。
可选地,所述对所述用户请求进行基于词法分析和语法分析的语义分析,包括:
根据预置的词组规则中的词法分割符,将所述用户请求中的内容分割为多个代码块;
将每个代码块分别与所述词组规则中定义的词组进行匹配,以查找特定的词组。
可选地,所述在所述语义分析过程中进行目标特征提取的操作,包括:
将所述特定的词组分别与预设的目标特征库中的特征进行匹配,提取所述特定的词组中与所述目标特征库匹配成功的词组,并将其作为所述目标特征。
可选地,所述目标特征包括数学表达式、运算函数和/或逻辑表达式。
可选地,所述检测所述用户请求对应的响应页面,具体包括:
对目标特征进行运算,得到运算结果;判断响应页面是否包含所述运算结果,如果包含则认为响应页面中包含有与所述目标特征对应的响应特征。
可选地,所述判断响应页面是否包含所述运算结果,包括:
解析所述响应页面,将解析后的数据与所述运算结果进行匹配。
可选地,所述接收用户请求之前,还包括:创建目标特征库,用于存储在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
本发明的另一个方面,提供了一种SQL注入漏洞的检测装置,包括:
分析模块,用于接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析;
提取模块,用于在所述分析模块进行语义分析过程中进行目标特征提取的操作;
检测模块,用于检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述提取模块提取的目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联。
可选地,所述分析模块,包括:
分割单元,用于根据预置的词组规则中的词法分割符,将所述用户请求中的内容分割为多个代码块;
匹配单元,用于将每个代码块分别与所述词组规则中定义的词组进行匹配,以查找特定的词组。
可选地,所述提取模块,具体用于将所述特定的词组分别与预设的目标特征库中的特征进行匹配,提取所述特定的词组中与所述目标特征库匹配成功的词组,并将其作为所述目标特征。
可选地,所述目标特征包括数学表达式、运算函数和/或逻辑表达式。
可选地,所述检测模块,包括:
计算单元,用于对目标特征进行运算,得到运算结果;
判断单元,用于判断响应页面是否包含所述运算结果,如果包含则认为响应页面中包含有与所述目标特征对应的响应特征。
可选地,所述判断单元,具体用于解析所述响应页面,将解析后的数据与所述运算结果进行匹配。
可选地,所述装置还包括:
配置模块,用于在所述分析模块接收用户请求之前,创建目标特征库,用于存储存在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
本发明实施例提供的SQL注入漏洞的检测方法及装置,通过对用户请求和该用户请求对应的响应页面进行特征匹配,判断响应页面是否存在与用户请求的目标特征对应的响应特征,实现注入漏洞的检测,不仅能够检测出已知漏洞,还能够快速、精确地实现对未知漏洞0day的检测,有利于提高计算机系统的网络安全。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种SQL注入漏洞的检测方法的流程图;
图2示出了根据本发明另一实施例的一种SQL注入漏洞的检测方法的流程图;
图3示出了根据本发明另一实施例的一种SQL注入漏洞的检测方法的流程图;
图4示出了根据本发明一个实施例的一种SQL注入漏洞的检测装置的结构示意图;
图5示出了根据本发明另一实施例的一种SQL注入漏洞的检测装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
图1示意性示出了本发明一个实施例的SQL注入漏洞的检测方法的流程图。参照图1,本发明实施例的SQL注入漏洞的检测方法具体包括以下步骤:
步骤S11、接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析。
可理解的,SQL注入攻击就是攻击者通过欺骗数据库服务器执行非授权的任意查询过程。目前的SQL注入攻击都是从用户的输入或访问开始的。因此,本发明实施例中,基于http用户请求网络流量,进行SQL注入漏洞的检测。
在实际应用中,当接收到访问用户的用户请求时,首先对用户请求进行基于词法分析和语法分析的语义分析,以根据语义分析的结果提取用户请求对应的目标特征。下面对词法分析和语法分析进行详细说明:
(1)词法分析
经过词法分析,可得到如下的SQL语法元素:
标识符:诸如表、视图、列、数据库和服务器等对象的名称。
数据类型:定义数据对象(如列、变量和参数)所包含的数据类型。大多数Transact-SQL语句并不显式引用数据类型,但是其结果由于语句中所引用的对象数据类型间的互相作用而受到影响。
函数:语法元素,它可以有零个、一个或多个输入值,并返回一个标量值或表格形式的值的集合。函数示例包括将多个值相加的SUM函数、确定两个日期之间相差多少个时间单位的DATEDIFF函数、CONCAT函数、md5函数以及char函数等。
表达式:是Microsoft SQL Server可解析为单个值的语法单元。表达式的示例包括常量、返回单值的函数、列或变量的引用。
运算符:与一个或多个简单表达式一起使用构造一个更为复杂的表达式。例如,将"-"(负号)运算符和常量12组合在一起得到常量-12。
表达式:PriceColumn*1.1中的"*"(乘号)运算符使价格提高百分之十。
注释:插入到Transact-SQL语句或脚本中解释语句作用的文本。SQL Server不执行注释。
保留关键字:保留下来由SQL Server使用的词。数据库中的对象名不应使用这些字词。
(2)语法分析
经过语法分析,可得到如下SQL语法字段:
字段:例如添加字段、修改字段、删除字段、查询字段等。
命令:常用SQL命令非常多,例如,
(1)创建数据库命令:CREATE DATABASE database-name;
(2)删除数据库命令:drop database db name;
(3)备份sql server:
创建备份数据:
device USE masterEXEC sp_addumpdevice'disk','testBack','c:mssql7backupMyNwind_1.da
开始备份:BACKUP DATABASE pubs TO testBack;
(4)创建新表:
create table tabname(col1type1[not null][primary key],col2type2[notnull],..);
(5)删除新表:drop table tabname;等等。
表名:数据表的名称。
条件:命令执行的条件。
步骤S12、在所述语义分析过程中进行目标特征提取的操作。
本发明实施例中,在对所述用户请求进行语义分析过程中,根据词法分析和语法分析的分析结果进行目标特征的提取。
可理解的,本实施例中的目标特征可以是一些存在SQL注入漏洞的用户请求中可能会出现的可计算表达式。
优选地,所述目标特征包括数学表达式、运算函数和/或逻辑表达式。
步骤S13、检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联。
其中,本实施例中的响应特征与所述目标特征逻辑关联。在一个具体示例中,响应特征可以为目标特征对应可计算表达式的直接计算结果或间接计算结果。可理解的,响应特征与所述目标特征之间还可以具有其他逻辑关联,本发明对此不作具体限定。
在一个实施例中,通过对步骤S12中提取出的目标特征进行计算,得到目标特征对应可计算表达式的直接计算结果。然后,检测该用户请求对应的响应页面,判断响应页面中是否存在与该用户请求的目标特征对应可计算表达式的计算结果,若存在,则确认存在SQL注入漏洞,实现注入漏洞的检测。
下面通过具体示例对本发明实施例进行详细的解释说明。
示例1:
用户请求:
/sqli/?id=qwdwqd'UNION ALL SELECT NULL,CONCAT(0x7178767a71,0x55506c6c486474696776746d4f4573737877764e504e595a6343645866494b625263656171594576,0x7171717871)#&Submit=Submit;
对应的响应特征:
qxvzqUPllHdtigvtmOEssxwvNPNYZcCdXfIKbRceaqYEvqqqxq。
具体的,语义分析过程中提取的用户请求中的目标特征,通过对目标特征即CONCAT函数CONCAT(0x7178767a71,0x55506c6c486474696776746d4f4573737877764e504e595a6343645866494b625263656171594576,0x7171717871)进行计算,得到计算结果为qxvzqUPllHdtigvtmOEssxwvNPNYZcCdXfIKbRceaqYEvqqqxq,然后检测该用户请求对应的响应页面,若所述响应页面中包含有与所述目标特征对应的响应特征,即,qxvzqUPllHdtigvtmOEssxwvNPNYZcCdXfIKbRceaqYEvqqqxq,则确认存在SQL注入漏洞。
示例2:
用户请求:
/?question/search/%27%75nion%20select%201,2,3,4,5,6,7,8,md5(1122),10,11,12,13,14,15,16,17,18,19,20%23
对应的响应特征:
3b712de48137572f3849aabd5666a4e3
具体的,语义分析过程中提取的用户请求中的目标特征,通过对目标特征即md5函数md5(1122)进行计算,得到计算结果为3b712de48137572f3849aabd5666a4e3,然后检测该用户请求对应的响应页面,若所述响应页面中包含有与所述目标特征对应的响应特征,即,3b712de48137572f3849aabd5666a4e3,则确认存在SQL注入漏洞。
示例3:
用户请求:
/information/oa_infordislist.asp?class=1UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,char(119)%2bchar(101)%2bchar(98)%2 bchar(115)%2bchar(99)%2bchar(97)%2bchar(110)%2bchar(58)%2bchar(105)%2bc har(59)%2bchar(102)%2bchar(105)%2bchar(110)%2bchar(100),NULL,NULL,NU LL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL—
对应的响应特征:
'webscan:i;find'
具体的,语义分析过程中提取的用户请求中的目标特征,通过对目标特征即多个char函数char(119)%2bchar(101)%2bchar(98)%2bchar(115)%2bchar(99)%2bchar(97)%2bch ar(110)%2bchar(58)%2bchar(105)%2bchar(59)%2bchar(102)%2bchar(105)%2bcha r(110)%2bchar(100)的计算结果进行字符拼接,得到计算结果为'webscan:i;find',然后检测该用户请求对应的响应页面,若所述响应页面中包含有与所述目标特征对应的响应特征,即,'webscan:i;find',则确认存在SQL注入漏洞。
在本发明实施例提供的SQL注入漏洞的检测方法,通过对用户请求和该用户请求对应的响应页面进行特征匹配,判断响应页面是否存在与用户请求的目标特征对应的响应特征,当检测到该用户请求对应的响应页面中包含有与用户请求的目标特征对应的响应特征,则确认存在SQL注入漏洞,进而实现注入漏洞的检测。本发明实施例不仅能够检测出已知漏洞,还能够快速、精确地实现对未知漏洞的检测,有利于提高计算机系统的网络安全。
为了进一步体现本发明的优越性,如下进一步揭示本发明SQL注入漏洞的检测方法中步骤S11的细分步骤,来体现依据本步骤实现的另一实施例。参照图2,本步骤的细分步骤包括:
步骤S111、根据预置的词组规则中的词法分割符,将所述用户请求中的内容分割为多个代码块;
预置的词组规则中包含词法分割符,所述词法分割符是指换行、空格、分号(;)、下划线(_)和百分号(%)等脚本代码语句的分割字符。通常在编程中,换行和分号用于表示语句的结束,空格用于区分每个词,因此根据所述的词法分割符可以将将脚本中的内容分割为多个代码块。
词组规则中设置词法分割符的语句如:
#define_ps_isspace(c)(c==″‖c==′\t′‖c==′\r′‖c==′\n′)
#define_ps_iskwchar(c)((c>=′0′&&c<=′9′)‖(c>=′a′&&c<=′z′)‖(c>=′A′&&c<=′Z′)‖c==′_′)
#define_ps_isstrchar(c)(_ps_iskwchar(c)‖c==′%′)
……
步骤S112、将每个代码块分别与所述词组规则中定义的词组进行匹配,以查找特定的词组。
将预置的词组规则中的词组定义分别与每个代码块进行匹配,来查找特定的词组,其中,所述特定的词组包括数学表达式、运算函数和/或逻辑表达式等可计算表达式。
所述的数学表达式是最常用的表达式,又称为算术表达式,它是通过算术运算符来进行运算的数学公式。所述运算函数是脚本代码中具有特定运算功能代码段的函数。如CONCAT函数、md5函数以及char函数等。所述逻辑表达式是通过逻辑运算符来进行运算的公式。
可理解的,在具体实施中,根据程序编写的规则,可以分析出脚本代码中的数学表达式、运算函数和/或逻辑表达式等可计算表达式。
例如,在代码中运算函数是确定的,因此可以在所述词组定义中规定出这些运算函数,分别对每个代码块进行匹配来查找运算函数。
本发明实施例通过词法分析和语法分析的语义分析动态的实现对可能存在SQL注入漏洞的用户请求中目标特征提取,弥补了现有SQL注入漏洞基于特定特征匹配检测方上的不足,不仅能够检测特定特征对应的已知漏洞,还能够避免对一些未知漏洞(0day漏洞)的遗漏;快速、精确地实现对未知漏洞的检测。
为了进一步体现发明的优越性,如下进一步揭示本发明SQL注入漏洞的检测方法的另一实施例。参照图3,本发明实施例中的SQL注入漏洞的检测方法中,步骤S12中的在所述语义分析过程中进行目标特征提取的操作,具体包括:将所述特定的词组分别与预设的目标特征库中的特征进行匹配,提取所述特定的词组中与所述目标特征库匹配成功的词组,并将其作为所述目标特征。
进一步地,所述接收用户请求之前,本发明实施例,还包括:创建目标特征库,用于存储在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
为了能够在所述语义分析过程中快速、准确的实现目标特征的提取,本发明实施例中预设有目标特征库,该目标特征库中预先存储有一些存在SQL注入漏洞的用户请求中可能会出现的可计算表达式,如数学表达式、运算函数和/或逻辑表达式,通过将语义分析过程中查找到的特定的词组与目标特征库中预先存储的可计算表达式进行匹配,将上述特定的词组中与该目标特征库匹配成功的词组作为目标特征,以实现目标特征提取。
在实际应用中,在将每个代码块分别与词组规则中定义的词组进行匹配,查找到特定的词组后,通过将特定的词组分别与预设的目标特征库中的特征进行匹配,提取查找到的特定的词组中与该预设的目标特征库匹配成功的词组,并将其作为当前用户请求的目标特征。本发明通过预设目标特征库的方式能够快速、准确地提取出用户请求中的目标特征,以便于能够快速、精确地实现对未知漏洞的检测。
进一步地,所述检测所述用户请求对应的响应页面,具体包括以下附图中未示出的步骤:
步骤S131、对目标特征进行运算,得到运算结果;
步骤S132、判断响应页面是否包含所述运算结果,如果包含则认为响应页面中包含有与所述目标特征对应的响应特征。
其中,所述步骤S132判断响应页面是否包含所述运算结果的步骤,具体包括:解析所述响应页面,将解析后的数据与所述运算结果进行匹配。
本发明实施例中,通过对用户请求中的目标特征进行运算,得到运算结果,然后对该用户请求对应的响应页面进行页面解析,将解析后的数据与对目标特征进行运算得到的运算结果进行匹配,判断响应页面的解析数据中是否包含所述运算结果,如果包含则认为响应页面中包含有与所述目标特征对应的响应特征,则确认当前计算机系统存在SQL注入漏洞。
本发明实施例通过对响应页面进行解析,判断响应页面的解析数据中是否包含目标特征进行运算得到的运算结果,实现用户请求和该用户请求对应的响应页面的特征匹配,进而快速、精确地实现计算机系统中SQL注入漏洞的检测,提高计算机系统的网络安全。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图4示意性示出了本发明一个实施例的SQL注入漏洞的检测装置的结构示意图。
参照图4,本发明实施例的SQL注入漏洞的检测装置具体包括分析模块401、提取模块402以及检测模块403,其中:
分析模块401,用于接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析;
提取模块402,用于在所述分析模块401进行语义分析过程中进行目标特征提取的操作;
检测模块403,用于检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述提取模块提取的目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联。
在实际应用中,当接收到访问用户的用户请求时,分析模块401首先对用户请求进行基于词法分析和语法分析的语义分析,以供提取模块402根据语义分析的结果提取用户请求对应的目标特征。下面对词法分析和语法分析进行详细说明:
(1)词法分析
经过词法分析,可得到如下的SQL语法元素:
标识符:诸如表、视图、列、数据库和服务器等对象的名称。
数据类型:定义数据对象(如列、变量和参数)所包含的数据类型。大多数Transact-SQL语句并不显式引用数据类型,但是其结果由于语句中所引用的对象数据类型间的互相作用而受到影响。
函数:语法元素,它可以有零个、一个或多个输入值,并返回一个标量值或表格形式的值的集合。函数示例包括将多个值相加的SUM函数、确定两个日期之间相差多少个时间单位的DATEDIFF函数、CONCAT函数、md5函数以及char函数等。
表达式:是Microsoft SQL Server可解析为单个值的语法单元。表达式的示例包括常量、返回单值的函数、列或变量的引用。
运算符:与一个或多个简单表达式一起使用构造一个更为复杂的表达式。例如,将"-"(负号)运算符和常量12组合在一起得到常量-12。
表达式:PriceColumn*1.1中的"*"(乘号)运算符使价格提高百分之十。
注释:插入到Transact-SQL语句或脚本中解释语句作用的文本。SQL Server不执行注释。
保留关键字:保留下来由SQL Server使用的词。数据库中的对象名不应使用这些字词。
(2)语法分析
经过语法分析,可得到如下SQL语法字段:
字段:例如添加字段、修改字段、删除字段、查询字段等。
命令:常用SQL命令非常多,例如,
(1)创建数据库命令:CREATE DATABASE database-name;
(2)删除数据库命令:drop database db name;
(3)备份sql server:
创建备份数据:
device USE masterEXEC sp_addumpdevice'disk','testBack','c:mssql7backupMyNwind_1.da
开始备份:BACKUP DATABASE pubs TO testBack;
(4)创建新表:
create table tabname(col1type1[not null][primary key],col2type2[notnull],..);
(5)删除新表:drop table tabname;等等。
表名:数据表的名称。
条件:命令执行的条件。
可理解的,本实施例中的目标特征可以是一些存在SQL注入漏洞的用户请求中可能会出现的可计算表达式。
优选地,所述目标特征包括数学表达式、运算函数和/或逻辑表达式。
在本发明实施例提供的SQL注入漏洞的检测装置,检测模块403通过对用户请求和该用户请求对应的响应页面进行特征匹配,判断响应页面是否存在与提取模块402提取出的用户请求的目标特征对应的响应特征,当检测到该用户请求对应的响应页面中包含有与用户请求的目标特征对应的响应特征,则确认存在SQL注入漏洞,进而实现注入漏洞的检测。本发明实施例不仅能够检测出已知漏洞,还能够快速、精确地实现对未知漏洞的检测,有利于提高计算机系统的网络安全。
为了进一步体现本发明的优越性,如下进一步揭示本发明SQL注入漏洞的检测装置中分析模块401的内部结构图,来体现依据分析模块401实现的另一实施例的细节。参照图5,分析模块401,具体包括分割单元4011和匹配单元4012,其中:
分割单元4011,用于根据预置的词组规则中的词法分割符,将所述用户请求中的内容分割为多个代码块。
预置的词组规则中包含词法分割符,所述词法分割符是指换行、空格、分号(;)、下划线(_)和百分号(%)等脚本代码语句的分割字符。通常在编程中,换行和分号用于表示语句的结束,空格用于区分每个词,因此根据所述的词法分割符可以将将脚本中的内容分割为多个代码块。
匹配单元4012,用于将每个代码块分别与所述词组规则中定义的词组进行匹配,以查找特定的词组。
具体而言,匹配单元4012可以将预置的词组规则中的词组定义分别与每个代码块进行匹配,来查找特定的词组,其中,所述特定的词组包括数学表达式、运算函数和/或逻辑表达式等可计算表达式。
可理解的,在具体实施中,根据程序编写的规则,可以分析出脚本代码中的数学表达式、运算函数和/或逻辑表达式等可计算表达式。
例如,在代码中运算函数是确定的,因此可以在所述词组定义中规定出这些运算函数,分别对每个代码块进行匹配来查找运算函数。
本发明实施例通过词法分析和语法分析的语义分析动态的实现对可能存在SQL注入漏洞的用户请求中目标特征提取,弥补了现有SQL注入漏洞基于特定特征匹配检测方上的不足,不仅能够检测特定特征对应的已知漏洞,还能够避免对一些未知漏洞(0day漏洞)的遗漏;快速、精确地实现对未知漏洞的检测。
在本发明一个可选实施例中,所述提取模块402,具体用于将所述特定的词组分别与预设的目标特征库中的特征进行匹配,提取所述特定的词组中与所述目标特征库匹配成功的词组,并将其作为所述目标特征。
进一步地,在本发明一个可选实施例中,所述装置还包括附图中未示出的配置模块,该配置模块,用于在所述分析模块401接收用户请求之前,创建目标特征库,用于存储存在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
为了能够在所述语义分析过程中快速、准确的实现目标特征的提取,本发明实施例中预设有目标特征库,该目标特征库中预先存储有一些存在SQL注入漏洞的用户请求中可能会出现的可计算表达式,如数学表达式、运算函数和/或逻辑表达式。具体的,提取模块402通过将语义分析过程中查找到的特定的词组与目标特征库中预先存储的可计算表达式进行匹配,将上述特定的词组中与该目标特征库匹配成功的词组作为目标特征,以实现目标特征的快速、准确提取。
在本发明一个可选实施例中,所述检测模块403,具体包括计算单元和判断单元,其中:
计算单元,用于对目标特征进行运算,得到运算结果;
判断单元,用于判断响应页面是否包含所述运算结果,如果包含则认为响应页面中包含有与所述目标特征对应的响应特征。
进一步地,所述判断单元,具体用于解析所述响应页面,将解析后的数据与所述运算结果进行匹配。
本发明实施例中,判断单元通过对响应页面进行解析,将解析后的数据与所述运算结果进行匹配,来判断响应页面的解析数据中是否包含目标特征进行运算得到的运算结果,实现用户请求和该用户请求对应的响应页面的特征匹配,进而快速、精确地实现计算机系统中SQL注入漏洞的检测,提高计算机系统的网络安全。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
此外,本发明另一实施例还提供了一种终端设备,包括如上任一实施例所述的SQL注入漏洞的检测装置。以如图4所示的SQL注入漏洞的检测装置为例进行说明,所述终端设备中的SQL注入漏洞的检测装置,具体包括包括分析模块401、提取模块402以及检测模块403,其中:分析模块401,用于接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析;提取模块402,用于在所述分析模块401进行语义分析过程中进行目标特征提取的操作;检测模块403,用于检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述提取模块提取的目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联。该终端设备由于包括上述任意一种实施例中的SQL注入漏洞的检测装置,因而可以解决同样的技术问题,并取得相同的技术效果。
本发明还提出了如下技术方案:
A1、一种SQL注入漏洞的检测方法,包括:
接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析;
在所述语义分析过程中进行目标特征提取的操作;
检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联。
A2、根据A1所述的方法,所述对所述用户请求进行基于词法分析和语法分析的语义分析,包括:
根据预置的词组规则中的词法分割符,将所述用户请求中的内容分割为多个代码块;
将每个代码块分别与所述词组规则中定义的词组进行匹配,以查找特定的词组。
A3、根据A2所述的方法,所述在所述语义分析过程中进行目标特征提取的操作,包括:
将所述特定的词组分别与预设的目标特征库中的特征进行匹配,提取所述特定的词组中与所述目标特征库匹配成功的词组,并将其作为所述目标特征。
A4、根据A1至A3任一项所述的方法,所述目标特征包括数学表达式、运算函数和/或逻辑表达式。
A5、根据A1至A4任一项所述的方法,所述检测所述用户请求对应的响应页面,具体包括:
对目标特征进行运算,得到运算结果;判断响应页面是否包含所述运算结果,如果包含则认为响应页面中包含有与所述目标特征对应的响应特征。
A6、根据A5所述的方法,所述判断响应页面是否包含所述运算结果,包括:
解析所述响应页面,将解析后的数据与所述运算结果进行匹配。
A7、根据A1至A6任一项所述的方法,所述接收用户请求之前,还包括:创建目标特征库,用于存储在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
B8、一种SQL注入漏洞的检测装置,包括:
分析模块,用于接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析;
提取模块,用于在所述分析模块进行语义分析过程中进行目标特征提取的操作;
检测模块,用于检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述提取模块提取的目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联。
B9、根据B8所述的装置,所述分析模块,包括:
分割单元,用于根据预置的词组规则中的词法分割符,将所述用户请求中的内容分割为多个代码块;
匹配单元,用于将每个代码块分别与所述词组规则中定义的词组进行匹配,以查找特定的词组。
B10、根据B9所述的装置,所述提取模块,具体用于将所述特定的词组分别与预设的目标特征库中的特征进行匹配,提取所述特定的词组中与所述目标特征库匹配成功的词组,并将其作为所述目标特征。
B11、根据B8至B10任一项所述的装置,所述目标特征包括数学表达式、运算函数和/或逻辑表达式。
B12、根据B8至B11任一项所述的装置,所述检测模块,包括:
计算单元,用于对目标特征进行运算,得到运算结果;
判断单元,用于判断响应页面是否包含所述运算结果,如果包含则认为响应页面中包含有与所述目标特征对应的响应特征。
B13、根据B12所述的装置,所述判断单元,具体用于解析所述响应页面,将解析后的数据与所述运算结果进行匹配。
B14、根据B8至B13任一项所述的装置,所述装置还包括:
配置模块,用于在所述分析模块接收用户请求之前,创建目标特征库,用于存储存在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
本发明实施例提供的SQL注入漏洞的检测方法及装置,通过对用户请求和该用户请求对应的响应页面进行特征匹配,判断响应页面是否存在与用户请求的目标特征对应的响应特征,实现注入漏洞的检测,不仅能够检测出已知漏洞,还能够快速、精确地实现对未知漏洞0day的检测,有利于提高计算机系统的网络安全。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (14)

1.一种SQL注入漏洞的检测方法,包括:
接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析;
在所述语义分析过程中进行目标特征提取的操作;
检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联;
所述检测所述用户请求对应的响应页面,具体包括:对目标特征进行运算,得到运算结果;判断响应页面是否包含所述运算结果,如果包含则认为响应页面中包含有与所述目标特征对应的响应特征。
2.根据权利要求1所述的方法,所述对所述用户请求进行基于词法分析和语法分析的语义分析,包括:
根据预置的词组规则中的词法分割符,将所述用户请求中的内容分割为多个代码块;
将每个代码块分别与所述词组规则中定义的词组进行匹配,以查找特定的词组。
3.根据权利要求2所述的方法,所述在所述语义分析过程中进行目标特征提取的操作,包括:
将所述特定的词组分别与预设的目标特征库中的特征进行匹配,提取所述特定的词组中与所述目标特征库匹配成功的词组,并将其作为所述目标特征。
4.根据权利要求1至3任一项所述的方法,所述目标特征包括数学表达式、运算函数和/或逻辑表达式。
5.根据权利要求1所述的方法,所述判断响应页面是否包含所述运算结果,包括:
解析所述响应页面,将解析后的数据与所述运算结果进行匹配。
6.根据权利要求1、2、3、5任一项所述的方法,所述接收用户请求之前,还包括:创建目标特征库,用于存储在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
7.根据权利要求4所述的方法,所述接收用户请求之前,还包括:创建目标特征库,用于存储在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
8.一种SQL注入漏洞的检测装置,包括:
分析模块,用于接收用户请求,对所述用户请求进行基于词法分析和语法分析的语义分析;
提取模块,用于在所述分析模块进行语义分析过程中进行目标特征提取的操作;
检测模块,用于检测所述用户请求对应的响应页面,若所述响应页面中包含有与所述提取模块提取的目标特征对应的响应特征,则确认存在SQL注入漏洞,其中,所述响应特征与所述目标特征逻辑关联;
所述检测模块,包括:
计算单元,用于对目标特征进行运算,得到运算结果;
判断单元,用于判断响应页面是否包含所述运算结果,如果包含则认为响应页面中包含有与所述目标特征对应的响应特征。
9.根据权利要求8所述的装置,所述分析模块,包括:
分割单元,用于根据预置的词组规则中的词法分割符,将所述用户请求中的内容分割为多个代码块;
匹配单元,用于将每个代码块分别与所述词组规则中定义的词组进行匹配,以查找特定的词组。
10.根据权利要求9所述的装置,所述提取模块,具体用于将所述特定的词组分别与预设的目标特征库中的特征进行匹配,提取所述特定的词组中与所述目标特征库匹配成功的词组,并将其作为所述目标特征。
11.根据权利要求8至10任一项所述的装置,所述目标特征包括数学表达式、运算函数和/或逻辑表达式。
12.根据权利要求8所述的装置,所述判断单元,具体用于解析所述响应页面,将解析后的数据与所述运算结果进行匹配。
13.根据权利要求8、9、10、12任一项所述的装置,所述装置还包括:
配置模块,用于在所述分析模块接收用户请求之前,创建目标特征库,用于存储存在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
14.根据权利要求11所述的装置,所述装置还包括:
配置模块,用于在所述分析模块接收用户请求之前,创建目标特征库,用于存储存在SQL注入漏洞的用户请求中的数学表达式、运算函数和/或逻辑表达式。
CN201610778273.8A 2016-08-30 2016-08-30 Sql注入漏洞的检测方法及装置 Active CN106407803B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610778273.8A CN106407803B (zh) 2016-08-30 2016-08-30 Sql注入漏洞的检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610778273.8A CN106407803B (zh) 2016-08-30 2016-08-30 Sql注入漏洞的检测方法及装置

Publications (2)

Publication Number Publication Date
CN106407803A CN106407803A (zh) 2017-02-15
CN106407803B true CN106407803B (zh) 2019-06-14

Family

ID=58003490

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610778273.8A Active CN106407803B (zh) 2016-08-30 2016-08-30 Sql注入漏洞的检测方法及装置

Country Status (1)

Country Link
CN (1) CN106407803B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368427B (zh) * 2017-08-30 2020-02-11 中国科学院软件研究所 一种基于自适应随机测试的Sql注入漏洞自动检测平台及方法
CN108667840B (zh) * 2018-05-11 2021-09-10 腾讯科技(深圳)有限公司 注入漏洞检测方法及装置
CN109150842B (zh) * 2018-07-25 2021-07-09 平安科技(深圳)有限公司 一种注入漏洞检测方法及装置
CN109450846A (zh) * 2018-09-19 2019-03-08 杭州安恒信息技术股份有限公司 一种el表达式注入漏洞批量检测装置及检测方法
CN109657472B (zh) * 2018-10-11 2023-09-22 平安科技(深圳)有限公司 Sql注入漏洞检测方法、装置、设备及可读存储介质
CN109669737B (zh) * 2018-12-19 2023-04-18 百度在线网络技术(北京)有限公司 应用处理方法、装置、设备和介质
CN110417751B (zh) * 2019-07-10 2021-07-02 腾讯科技(深圳)有限公司 一种网络安全预警方法、装置和存储介质
CN110535973A (zh) * 2019-09-18 2019-12-03 北京明朝万达科技股份有限公司 一种sql注入威胁的检测方法及装置
CN111585974A (zh) * 2020-04-17 2020-08-25 上海中通吉网络技术有限公司 注入类漏洞检测方法及装置、可读存储介质及终端
CN112039900B (zh) * 2020-09-02 2022-08-26 平安科技(深圳)有限公司 网络安全风险检测方法、系统、计算机设备和存储介质
CN113489677B (zh) * 2021-05-27 2022-06-07 贵州电网有限责任公司 一种基于语义上下文的零规则攻击检测方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101267357A (zh) * 2007-03-13 2008-09-17 北京启明星辰信息技术有限公司 一种sql注入攻击检测方法及系统
CN102185930A (zh) * 2011-06-09 2011-09-14 北京理工大学 一种sql注入漏洞检测方法
CN102682047A (zh) * 2011-10-18 2012-09-19 国网电力科学研究院 一种混合的sql注入防护方法
CN104537309A (zh) * 2015-01-23 2015-04-22 北京奇虎科技有限公司 应用程序漏洞检测方法、装置及服务器
CN105072095A (zh) * 2015-07-20 2015-11-18 北京神州绿盟信息安全科技股份有限公司 一种检测sql注入漏洞的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101267357A (zh) * 2007-03-13 2008-09-17 北京启明星辰信息技术有限公司 一种sql注入攻击检测方法及系统
CN102185930A (zh) * 2011-06-09 2011-09-14 北京理工大学 一种sql注入漏洞检测方法
CN102682047A (zh) * 2011-10-18 2012-09-19 国网电力科学研究院 一种混合的sql注入防护方法
CN104537309A (zh) * 2015-01-23 2015-04-22 北京奇虎科技有限公司 应用程序漏洞检测方法、装置及服务器
CN105072095A (zh) * 2015-07-20 2015-11-18 北京神州绿盟信息安全科技股份有限公司 一种检测sql注入漏洞的方法及装置

Also Published As

Publication number Publication date
CN106407803A (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
CN106407803B (zh) Sql注入漏洞的检测方法及装置
CN103744802B (zh) Sql注入攻击的识别方法及装置
US11188650B2 (en) Detection of malware using feature hashing
US10785246B2 (en) Mining attack vectors for black-box security testing
CN108092962A (zh) 一种恶意url检测方法及装置
US7802299B2 (en) Binary function database system
US10331441B2 (en) Source code mapping through context specific key word indexes and fingerprinting
EP3371953B1 (en) System and methods for detecting domain generation algorithm (dga) malware
CN103559447B (zh) 一种基于病毒样本特征的检测方法、检测装置及检测系统
CN106384048A (zh) 一种威胁信息处理方法与装置
CN104462985A (zh) bat漏洞的检测方法以及装置
CN112016138A (zh) 一种车联网自动化安全建模的方法、装置和电子设备
Li et al. Large-scale third-party library detection in android markets
Yan et al. Detection method of the second-order SQL injection in Web applications
CN109657462B (zh) 数据检测方法、系统、电子设备和存储介质
CN110929185A (zh) 网站目录检测方法、装置、计算机设备及计算机存储介质
EP2778982A1 (en) Attribute detection
Kuroki et al. Attack intention estimation based on syntax analysis and dynamic analysis for SQL injection
CN115643044A (zh) 数据处理方法、装置、服务器及存储介质
Tatarinova et al. Extended vulnerability feature extraction based on public resources
Ma et al. A Parse Tree-Based NoSQL Injection Attacks Detection Mechanism.
CN105590058A (zh) 虚拟机逃逸的检测方法及装置
Molloy et al. JARV1S: Phenotype Clone Search for Rapid Zero-Day Malware Triage and Functional Decomposition for Cyber Threat Intelligence
CN105608374B (zh) 虚拟机逃逸的检测方法及装置
CN104239800B (zh) Pdf中触发漏洞威胁的检测方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Co-patentee after: Qianxin Technology Group Co., Ltd.

Patentee after: Beijing Qihu Technology Co., Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Co-patentee before: BEIJING QI'ANXIN SCIENCE & TECHNOLOGY CO., LTD.

Patentee before: Beijing Qihu Technology Co., Ltd.

CP01 Change in the name or title of a patent holder