CN110225029B - 注入攻击检测方法、装置、服务器及存储介质 - Google Patents
注入攻击检测方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110225029B CN110225029B CN201910497467.4A CN201910497467A CN110225029B CN 110225029 B CN110225029 B CN 110225029B CN 201910497467 A CN201910497467 A CN 201910497467A CN 110225029 B CN110225029 B CN 110225029B
- Authority
- CN
- China
- Prior art keywords
- name
- query statement
- program
- target
- class
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开是关于一种注入攻击检测方法、装置、服务器及存储介质,涉及计算机技术领域。本实施例提供了一种能够不依赖于正则表达式来检测注入攻击的方法,通过基于用户的输入数据生成待执行的查询语句,并获取该查询语句的上下文信息,根据该上下文信息以及该输入数据,检测该查询语句的处理逻辑是否发生改变,如果检测出该查询语句的处理逻辑发生改变,则确定该查询语句存在注入漏洞,并终止执行该查询语句。通过这种检测方式,可以降低误报率和漏报率,提高攻击检测的精确性。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及注入攻击检测方法、装置、服务器及存储介质。
背景技术
结构化查询语言(英文全称:Structured Query Language,英文简称:SQL)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。注入攻击,是指将恶意的查询语句插入到输入数据,将该输入数据发送至服务器,则服务器处理输入数据的过程中,会被欺骗执行恶意的查询语句,导致存在安全隐患,因此,需要有效地检测注入攻击,以避免执行恶意的查询语句。
相关技术中,开发人员会预先编写多个正则表达式,将该多个正则表达式预存在服务器中。如果服务器接收到终端的访问请求,会从访问请求中获取输入数据,对输入数据与多个正则表达式中的每个正则表达式进行正则匹配,如果输入数据与任一正则表达式正则匹配成功,则确定查询语句存在注入漏洞,如果输入数据与每个正则表达式均未正则匹配成功,则确定查询语句不存在注入漏洞,则基于输入数据,生成待执行的查询语句,执行查询语句。
目前,攻击者经常设计出这样的输入数据:虽然其不与正则表达式正则匹配,但根据该输入数据会生成恶意的查询语句,导致这种输入数据能够绕过基于正则表达式的检测,使得服务器无法成功检测出查询语句存在注入漏洞,从而出现漏报。
发明内容
本公开提供一种注入攻击检测方法、装置、服务器及存储介质,能够克服检测注入攻击出现漏报的问题。
根据本公开实施例的第一方面,提供一种注入攻击检测方法,包括:
基于用户的输入数据生成待执行的查询语句,并获取所述查询语句的上下文信息;
根据所述上下文信息以及所述输入数据,检测所述查询语句的处理逻辑是否发生改变;
如果检测出所述查询语句的处理逻辑发生改变,则确定所述查询语句存在注入漏洞,并终止执行所述查询语句。
在一种可能的实现中,所述根据所述上下文信息以及所述输入数据,检测所述查询语句的处理逻辑是否发生改变,包括:
对所述上下文信息进行词法分析,得到第一单词序列;
从所述上下文信息中删除所述输入数据;
对删除了所述输入数据的上下文信息进行词法分析,得到第二单词序列;
根据所述第一单词序列以及所述第二单词序列,检测所述查询语句的处理逻辑是否发生改变。
在一种可能的实现中,所述根据所述第一单词序列以及所述第二单词序列,检测所述查询语句的处理逻辑是否发生改变,包括:
获取所述第一单词序列中单词的数量与所述第二单词序列中单词的数量之间的差值;
如果所述差值超过预设阈值,则检测出所述查询语句的处理逻辑发生改变;
如果所述差值未超过预设阈值,则检测出所述查询语句的处理逻辑未发生改变。
在一种可能的实现中,所述获取所述查询语句的上下文信息之前,所述方法还包括:
当加载任一类时,对所述类的名称与目标类的名称进行比对,所述目标类包括至少一种目标程序,每种目标程序用于执行查询语句;
如果所述类的名称与所述目标类的名称一致,对于所述类的任一程序,对所述程序的名称与所述每种目标程序的名称进行比对;
如果所述程序的名称与任一目标程序的名称一致,向所述程序之前的预设位置,写入探针程序;
所述获取所述查询语句的上下文信息,包括:
通过所述探针程序,截获所述查询语句的上下文信息。
在一种可能的实现中,所述对所述类的名称与目标类的名称进行比对之前,所述方法还包括:
加载配置文件,所述配置文件包括所述目标类的名称以及所述目标程序的名称;
从所述配置文件中读取所述目标类的名称以及所述目标程序的名称。
在一种可能的实现中,所述加载配置文件之前,所述方法还包括下述任意一项:
遍历源码中的每个库文件,如果当前遍历到的库文件为数据库对应的库文件,从所述库文件中获取所述目标类的名称以及目标程序的名称,根据所述目标类的名称以及所述目标程序的名称,创建所述配置文件;
接收配置指令,从所述配置指令中获取所述目标类的名称以及目标程序的名称,根据所述目标类的名称以及所述目标程序的名称,创建所述配置文件。
在一种可能的实现中,所述根据所述上下文信息以及所述输入数据,检测所述查询语句的处理逻辑是否发生改变之后,所述方法还包括:
如果检测出所述查询语句的处理逻辑未发生改变,则确定所述查询语句不存在注入漏洞,并执行所述查询语句。
根据本公开实施例的第二方面,提供一种注入攻击检测装置,包括:
生成模块,被配置为执行基于用户的输入数据生成待执行的查询语句;
获取模块,被配置为执行获取所述查询语句的上下文信息;
检测模块,被配置为执行根据所述上下文信息以及所述输入数据,检测所述查询语句的处理逻辑是否发生改变;
终止模块,被配置为执行如果检测出所述查询语句的处理逻辑发生改变,则确定所述查询语句存在注入漏洞,并终止执行所述查询语句。
在一种可能的实现中,所述检测模块,包括:
分析子模块,被配置为执行对所述上下文信息进行词法分析,得到第一单词序列;
删除子模块,被配置为执行从所述上下文信息中删除所述输入数据;
所述分析子模块,还被配置为执行对删除了所述输入数据的上下文信息进行词法分析,得到第二单词序列;
检测子模块,被配置为执行根据所述第一单词序列以及所述第二单词序列,检测所述查询语句的处理逻辑是否发生改变。
在一种可能的实现中,所述检测子模块,被配置为执行:获取所述第一单词序列中单词的数量与所述第二单词序列中单词的数量之间的差值;如果所述差值超过预设阈值,则检测出所述查询语句的处理逻辑发生改变;如果所述差值未超过预设阈值,则检测出所述查询语句的处理逻辑未发生改变。
在一种可能的实现中,所述装置还包括:
比对模块,被配置为执行当加载任一类时,对所述类的名称与目标类的名称进行比对,所述目标类包括至少一种目标程序,每种目标程序用于执行查询语句;
所述比对模块,还被配置为执行如果所述类的名称与所述目标类的名称一致,对于所述类的任一程序,对所述程序的名称与所述每种目标程序的名称进行比对;
写入模块,被配置为执行如果所述程序的名称与任一目标程序的名称一致,向所述程序之前的预设位置,写入探针程序;
所述获取模块,被配置为执行:通过所述探针程序,截获所述查询语句的上下文信息。
在一种可能的实现中,所述装置还包括:
加载模块,被配置为执行加载配置文件,所述配置文件包括所述目标类的名称以及所述目标程序的名称;
读取模块,被配置为执行从所述配置文件中读取所述目标类的名称以及所述目标程序的名称。
在一种可能的实现中,所述装置还包括创建模块,被配置为执行下述任意一项:
遍历源码中的每个库文件,如果当前遍历到的库文件为数据库对应的库文件,从所述库文件中获取所述目标类的名称以及目标程序的名称,根据所述目标类的名称以及所述目标程序的名称,创建所述配置文件;
接收配置指令,从所述配置指令中获取所述目标类的名称以及目标程序的名称,根据所述目标类的名称以及所述目标程序的名称,创建所述配置文件。
在一种可能的实现中,所述装置还包括:执行模块,被配置为执行如果检测出所述查询语句的处理逻辑未发生改变,则确定所述查询语句不存在注入漏洞,并执行所述查询语句。
根据本公开实施例的第三方面,提供一种服务器,包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的一个或多个存储器;
其中,所述一个或多个处理器被配置为执行所述指令,以实现上述注入攻击检测方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述注入攻击检测方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由服务器的处理器执行时,使得服务器能够执行上述注入攻击检测方法。
本公开的实施例提供的技术方案可以至少包括以下有益效果:
本实施例提供了一种能够不依赖于正则表达式来检测注入攻击的方法,通过基于用户的输入数据生成待执行的查询语句,并获取该查询语句的上下文信息,根据该上下文信息以及该输入数据,检测该查询语句的处理逻辑是否发生改变,如果检测出该查询语句的处理逻辑发生改变,则确定该查询语句存在注入漏洞,并终止执行该查询语句。通过这种检测方式,一方面,通过检测该查询语句的处理逻辑是否发生改变来检测注入攻击,能够避免攻击者绕过检测过程,如果基于输入数据生成了恶意的查询语句,就能通过检测出查询语句的处理逻辑发生改变,来检测出注入漏洞,因此可以降低误报率和漏报率,提高攻击检测的精确性,从而提高执行查询语句的安全性。另一方面,无需依赖用户编写的正则表达式即可检测注入攻击,因此避免了繁琐的编写操作,提高了效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种注入攻击检测方法的流程图。
图2是根据一示例性实施例示出的一种词法分析的示意图。
图3是根据一示例性实施例示出的一种注入攻击检测方法的流程图。
图4是根据一示例性实施例示出的一种添加RASP探针的方法流程图。
图5是根据一示例性实施例示出的一种注入攻击检测装置的框图。
图6是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
以下介绍本申请涉及的几个术语。
运行时应用自我保护技术(英文全称:runtime application self-protection,英文简称:RASP):是一种应用安全领域的技术,是指向应用程序注入代码块,该代码块与应用程序融为一体,该代码块用于对应用程序中可能会执行恶意指令的关键程序进行实时监控,可以截获向关键程序传入的参数以及指令,根据参数以及指令进行检测。
词法分析:是计算机技术中,将字符序列转换为单词序列的过程。在词法分析过程中,会读取源程序的字符序列,逐个拼出单词,并构造出相应的内部表示单词(英文:token)。引入单词的原因在于,编译程序通常为用某种程序语言书写的程序,语言的操作对象只能是该语言规定的各种数据,而编译程序的操作对象是程序中的各种语法单位,因此必须将它们表示成某种数据结构。
单词序列(token序列):包括至少一个单词。其中,这里的单词是编译程序中引进的一个概念,单词是最小的语义单位。单词由至少一个字符组成,例如,单词可以是'SELECT'、'WHERE'等。例如,对于代码begin var x:real来说,经过词法分析后,这行代码会转换为单词序列:($begin,-)、($var,-)、($id,x)、($colon,-)、($real,-)。
注入攻击:是一种数据库处理查询语句存在的安全漏洞。概括来说,就是在上下文信息中嵌入查询语句,在设计程序中忽略了对特殊字符串的检查,这些嵌入的查询语句便会被误认为正常的查询语句,在数据库中执行,因此可以对数据库进行查看等工作,甚至造成攻破后台数据库的严重后果。例如,如果终端在WEB表单中输了一些数据,这些上下文信息包含了查询VIP会员的密码的查询语句,终端将上下文信息发给服务器时,如果服务器没有成功检测,就会执行上下文信息中的查询语句,导致泄露VIP会员的密码。
Java(是一种面向对象的编程语言)instrumentation(英文:工具类):是Java的一种强大功能,允许开发者访问从Java虚拟机(英文全称:Java Virtual Machine,英文简称:JVM)中加载的类,并允许对类的字节码进行修改。
图1是根据一示例性实施例示出的一种注入攻击检测方法的流程图,如图1所示,该方法用于服务器中,包括以下步骤。
在步骤S11中,服务器创建配置文件。
配置文件包括目标类的名称以及目标程序的名称。目标类包括至少一种目标程序,每种目标程序用于执行查询语句,通过运行目标程序,可以执行相应的查询语句,从而对数据库进行操作。其中,该查询语句包括读取语句、写入语句、统计语句、更新语句、删除语句等等。在一种可能的实现方式中,配置文件可以为列表,列表中包括多个条目,每个条目包括一个目标类的名称以及一个目标程序的名称,当然,配置文件也可以采用列表以外的其他数据形式表示,本实施例对此不做限定。
配置文件的创建方式包括而不限于下述方式一至方式二中的任意一项。
方式一、遍历源码中的每个库文件;对于当前遍历的库文件,判断库文件是否为数据库对应的库文件;如果该库文件为数据库对应的库文件,从库文件中获取目标类的名称以及目标程序的名称,根据目标类的名称以及目标程序的名称,创建配置文件。
其中,可以读取数据库对应的库文件中的全部的类的名称名以及全部程序的名称,作为目标类的名称以及目标程序的名称,也可以读取数据库对应的库文件中的部分类的名称以及部分程序的名称,作为目标类的名称以及目标程序的名称,本实施例对此不做限定。通过这种方式,能够通过库文件,可以实现自动化地创建配置文件,可以提高配置文件的创建效率。
方式二、管理员可以在服务器上触发配置操作,输入目标类的名称以及目标程序的名称;服务器可以接收配置指令,配置指令包括目标类的名称以及目标程序的名称;服务器可以根据目标类的名称以及目标程序的名称,创建配置文件。
在步骤S12中,服务器加载配置文件。
服务器创建配置文件后,可以将配置文件存储在预设存储位置,当接收到处理请求后,可以从预设存储位置读取配置文件,将配置文件载入至缓存中。
在步骤S13中,服务器接收终端的查询请求。
在对查询请求进行处理的过程中,服务器可以向目标程序之前写入探针程序,以便探针程序捕获目标程序待执行的上下文信息。其中,目标程序可以视为需要监控的关键函数。该目标程序用于执行查询语句,具体来说,目标程序用于执行查询请求对应的查询语句,例如SQL语句。
具体来说,写入探针程序的过程可以包括下述步骤一至步骤六:
步骤一、当加载任一类时,服务器获取类的名称。
步骤二、服务器从配置文件中读取目标类的名称。
步骤三、服务器对类的名称与目标类的名称进行比对。
其中,如果配置文件中包括多个目标类的名称,服务器可以采用遍历的方式,依次读取每个目标类的名称,对类的名称与每个目标类的名称分别进行比对,如果类的名称与当前遍历的目标类的名称一致,则执行步骤四,如果类的名称与当前遍历的目标类的名称不一致,则继续遍历下一个目标类的名称。
步骤四、如果类的名称与目标类的名称一致,对于类的任一程序,服务器从配置文件中读取目标程序的名称。
步骤五、服务器对程序的名称与目标程序的名称进行比对。
其中,如果配置文件中包括目标类的名称对应多个目标程序的名称,服务器可以采用遍历的方式,依次读取每个目标程序的名称,对程序的名称与每个目标程序的名称分别进行比对。
步骤六、如果程序的名称与任一目标程序的名称一致,服务器向该程序之前的预设位置,写入探针程序,该探针程序用于截获该上下文信息。
如果程序的名称与当前遍历到的目标程序的名称一致,可以停止遍历,将程序确定为目标程序;如果程序的名称与当前遍历到的目标程序的名称不一致,可以继续遍历下一个目标程序,直至遍历到最后一个目标程序的名称为止。
探针程序用于截获该上下文信息,探针程序可以为RASP探针。具体地,在一种可能的实施例中,可以向目标程序之前的预设位置,写入探针程序。那么,当需要运行目标程序时,可以先运行探针程序,探针程序运行后再运行目标程序。其中,可以调用Javainstrumentation中的类转换(transform)方法,向目标程序之前的预设位置写入探针程序,从而可以在运行中,对目标程序的字节码进行了修改。当然,在此仅是以Java语言为例进行描述,如果采用其他的编程语言实现,也可以通过其他的编程语言中修改类或程序的方法,来向目标程序注入探针程序。
在步骤S14中,服务器基于用户的输入数据生成待执行的查询语句,并获取该查询语句的上下文信息。
服务器可以解析终端的查询请求,得到查询请求中携带的用户的输入数据。服务器可以通过探针程序(例如RASP探针),收集上下文信息。
上下文信息为待执行的查询语句。上下文信息可以视为经过程序处理后还原出的真实查询语句,是完整的查询语句,上下文信息包括输入数据以及预编译语句。具体来说,服务器可以解析查询请求,得到查询请求携带的输入数据,根据输入数据以及预编译语句,生成待执行的查询语句。具体地,预编译语句可以包括至少一个变量,对于至少一个变量中的每个变量,可以将预编译语句中的该变量替换为输入数据中该变量的取值。例如,预编译语句中可以包括变量:“user id”、“age”,输入数据可以包括:“alice”、“23”,可以将预编译语句中的“user id”替换为“alice”,将预编译语句中的“age”替换为“23”,将预编译语句中的变量替换为具体的取值后,预编译语句转换为了真实的、可执行的查询语句,其中,“userid”的意思是用户标识,“age”的意思是年龄。参见图2,输入数据和待执行的查询语句可以如图2所示。
由于待执行的查询语句是经过程序处理后、最终向目标程序传入的要执行的查询语句,因此可以避免通过编码、混淆等过程进行改变,来绕过注入攻击检测的情况,从而极大地降低误报和漏报率。
在步骤S15中,服务器根据该上下文信息以及该输入数据,检测该查询语句的处理逻辑是否发生改变。
当目标程序将要执行查询语句时,服务器可以拦截该目标程序的执行过程,先根据上下文信息检测该查询语句的处理逻辑是否发生改变,以便根据检测的结果,判定是否执行查询语句。
在一些可能的实施例中,可以采用词法分析的方式,通过将待执行的查询语句分解为单词(token)序列,来检测查询语句的处理逻辑是否发生改变。具体来说,检测查询语句的处理逻辑是否发生改变过程可以包括下述步骤一至步骤四:
步骤一、服务器对上下文信息进行词法分析,得到第一单词序列。
第一单词序列是指上下文信息中的单词组成的序列。作为示例,服务器可以根据上下文信息中的分隔符,将上下文信息分割为至少一个单词;例如,可以遍历上下文信息中的分隔符,将任两个相邻的两个分隔符中的字符作为一个单词;服务器可以将分割出的至少一个单词,作为第一单词序列。
步骤二、服务器从该上下文信息中删除该输入数据。
步骤三、服务器对删除了该输入数据的上下文信息进行词法分析,得到第二单词序列。
第二单词序列是指删除了输入数据的上下文信息包括的单词序列组成的集合。
步骤四、服务器根据第一单词序列以及第二单词序列,进行注入攻击检测。
在一些可能的实施例中,步骤四可以包括(1)至(4)。
(1)服务器获取第一单词序列中单词的数量与第二单词序列中单词的数量之间的差值。
(2)服务器可以对差值与预设阈值进行比较。
其中,预设阈值可以根据经验、实验或需求设置,例如,预设阈值可以为2。
(3)如果差值超过预设阈值,服务器检测出该查询语句的处理逻辑发生改变。
如果上下文信息在删除输入数据后单词序列的单词数量,相比删除输入数据前单词序列的单词数量差异很大,表明上下文信息的语义发生了较大改变,进而表明用户的输入数据改变了预编译的查询语句的原有逻辑。
(4)如果差值未超过预设阈值,服务器检测出该查询语句的处理逻辑未发生改变。
示例性地,参见图2,对最终截获的上下文信息进行词法分析后,得到的单词序列中包括25个单词,而删除上下文信息后,对剩余的上下文信息句进行词法分析后,得到的单词序列中包括7个单词,由于两个单词序列中单词的数量的差值为18,18超过2,则可以检测到处理逻辑发生改变。
以下用一个通俗的例子进行类比,以帮助理解上述技术过程的技术原理:一条查询语句可以类似于一个填空题,如离离原上()。其中,预编译的查询语句类似于“离离原上()。正常情况下终端发送的输入数据的过程,类似向服务器发送“草”,则服务器处理的过程,类似于向“离离原上()”的括号中填入“草”,最终得到的上下文信息,类似于“离离原上草”。而恶意用户的终端发送的上下文信息的过程,类似向服务器发送“草,一岁一枯荣”,则服务器处理的过程,类似于向“离离原上()”的括号中填入“草,一岁一枯荣”,最终得到的上下文信息,类似于“离离原上草,一岁一枯荣”。从这个例子可以理解,恶意用户的终端对应的上下文信息,会改变原有的逻辑,因此通过比较删除输入数据前后,上下文信息中token的数量,可以判断查询语句的处理逻辑是否发生改变。
在步骤S16中,如果检测出该查询语句的处理逻辑未发生改变,则服务器确定该查询语句确定查询语句不存在注入漏洞,并执行查询语句。
服务器可以执行查询语句,从数据库中查询到终端请求的数据,将数据发送给终端。
在一些可能的实施例中,如果服务器确定该查询语句存在注入漏洞,服务器可以从访问请求中,获取终端的IP地址,在预设时长内禁止处理该IP地址发来的访问请求,从而提高安全性。
在步骤S17中,如果检测出该查询语句的处理逻辑发生改变,则服务器确定该查询语句存在注入漏洞,并终止执行该查询语句。
需要说明的一点是,在一些可能的实施例中,上述步骤S11至步骤S15是以服务器执行为例进行描述;在一些可能的实施例中,也可以设置防火墙设备,由防火墙设备执行上述步骤S11至步骤S15;例如,防火墙设备可以接收终端的查询请求,检测查询语句是否存在注入漏洞,如果检测到查询语句存在注入漏洞,则丢弃查询请求,从而禁止将查询请求转发至服务器。如果检测到查询语句存在注入漏洞未发生注入攻击,则防火墙设备会将查询请求转发至服务器,以使服务器执行查询语句。
在一些可能的实施例中,服务器可以向终端发送显示指令,显示指令用于指示终端显示错误提示页面。终端接收到显示指令后,会根据显示指令,显示错误提示页面,该错误提示页面用于提示发生了注入攻击。例如,该错误提示页面可以包括“您的请求包含恶意行为,已被服务器拒绝”。
在一些可能的实施例中,可以部署RASP探针以及注入攻击检测模块,RASP探针以及注入攻击检测模块为软件,在运行RASP探针以及注入攻击检测模块的过程中,RASP探针用于执行步骤S14,并将截获的上下文信息传入注入攻击检测模块,注入攻击检测模块用于根据上下文信息执行步骤S15。
以查询语句为SQL语句,通过RASP探针来获取上下文信息为例,参见图3,图3是根据一示例性实施例示出的一种注入攻击检测方法的流程图,包括以下步骤:
步骤S31、接收查询请求。
步骤S32、处理输入数据。
步骤S33、RASP探针获取SQL语句的上下文信息。
步骤S34、判断SQL语句的处理逻辑是否发生改变。
步骤S35、如果未发生改变,则执行SQL语句。
步骤S36、如果发生改变,则返回错误页面。
参见图4,其示出了添加RASP探针的方法流程图。包括以下步骤:
步骤S41、加载类。
步骤S42、调用转换方法。
步骤S43、遍历配置文件。
步骤S44、判断类是否为目标类,如果是,执行步骤S45,如果否,执行步骤S47。
步骤S45、判断类的程序是否为目标程序,如果是,执行步骤S46,如果否,执行步骤S47。
步骤S46、在目标程序前添加RASP探针。
步骤S47、返回。
本实施例提供了一种能够不依赖于正则表达式来检测注入攻击的方法,通过基于用户的输入数据生成待执行的查询语句,并获取该查询语句的上下文信息,根据该上下文信息以及该输入数据,检测该查询语句的处理逻辑是否发生改变,如果检测出该查询语句的处理逻辑发生改变,则确定该查询语句存在注入漏洞,并终止执行该查询语句。通过这种检测方式,由于无需依赖用户编写的正则表达式即可检测注入攻击,因此可以降低误报率和漏报率。并且,通过根据待执行的查询语句的上下文信息进行检测,攻击者无法对查询语句进行编码等处理手段来绕过检测过程,因此可以提高攻击检测的精确性,从而提高执行查询语句的安全性。
图5是根据一示例性实施例示出的一种注入攻击检测装置的框图。参照图5,该装置包括生成模块501,获取模块502、检测模块503和终止模块504。
生成模块501,被配置为执行基于用户的输入数据生成待执行的查询语句;
获取模块502,被配置为执行获取该查询语句的上下文信息;
检测模块503,被配置为执行根据该上下文信息以及该输入数据,检测该查询语句的处理逻辑是否发生改变;
终止模块504,被配置为执行如果检测出该查询语句的处理逻辑发生改变,则确定该查询语句存在注入漏洞,并终止执行该查询语句。
在一种可能的实现中,该检测模块503,包括:
分析子模块,被配置为执行对该上下文信息进行词法分析,得到第一单词序列;
删除子模块,被配置为执行从该上下文信息中删除该输入数据;
该分析子模块,还被配置为执行对删除了该输入数据的上下文信息进行词法分析,得到第二单词序列;
检测子模块,被配置为执行根据该第一单词序列以及该第二单词序列,检测该查询语句的处理逻辑是否发生改变。
在一种可能的实现中,该检测子模块,被配置为执行:获取该第一单词序列中单词的数量与该第二单词序列中单词的数量之间的差值;如果该差值超过预设阈值,则检测出该查询语句的处理逻辑发生改变;如果该差值未超过预设阈值,则检测出该查询语句的处理逻辑未发生改变。
在一种可能的实现中,该装置还包括:
比对模块,被配置为执行当加载任一类时,对该类的名称与目标类的名称进行比对,该目标类包括至少一种目标程序,每种目标程序用于执行查询语句;
该比对模块,还被配置为执行如果该类的名称与该目标类的名称一致,对于该类的任一程序,对该程序的名称与该每种目标程序的名称进行比对;
写入模块,被配置为执行如果该程序的名称与任一目标程序的名称一致,向该程序之前的预设位置,写入探针程序;
该获取模块502,被配置为执行:通过该探针程序,截获该查询语句的上下文信息。
在一种可能的实现中,该装置还包括:
加载模块,被配置为执行加载配置文件,该配置文件包括该目标类的名称以及该目标程序的名称;
读取模块,被配置为执行从该配置文件中读取该目标类的名称以及该目标程序的名称。
在一种可能的实现中,该装置还包括创建模块,被配置为执行下述任意一项:
遍历源码中的每个库文件,如果当前遍历到的库文件为数据库对应的库文件,从该库文件中获取该目标类的名称以及目标程序的名称,根据该目标类的名称以及该目标程序的名称,创建该配置文件;
接收配置指令,从该配置指令中获取该目标类的名称以及目标程序的名称,根据该目标类的名称以及该目标程序的名称,创建该配置文件。
在一种可能的实现中,该装置还包括:执行模块,被配置为执行如果检测出该查询语句的处理逻辑未发生改变,则确定该查询语句不存在注入漏洞,并执行该查询语句。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6是根据一示例性实施例示出的一种服务器的结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,CPU)601和一个或一个以上的存储器602,其中,该存储器602中存储有至少一条指令,该至少一条指令由该处理器601加载并执行以实现上述各个方法实施例提供的注入攻击检测方法,当然,该服务器600还可以具有有线或无线网络接口以及输入输出接口等部件,以便进行输入输出,该服务器600还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述注入攻击检测方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由服务器的处理器执行,以完成上述实施例中提供的注入攻击检测方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (14)
1.一种注入攻击检测方法,其特征在于,包括:
基于用户的输入数据生成待执行的查询语句,并获取所述查询语句的上下文信息;
对所述上下文信息进行词法分析,得到第一单词序列;
从所述上下文信息中删除所述输入数据;
对删除了所述输入数据的上下文信息进行词法分析,得到第二单词序列;
根据所述第一单词序列以及所述第二单词序列,检测所述查询语句的处理逻辑是否发生改变;
如果检测出所述查询语句的处理逻辑发生改变,则确定所述查询语句存在注入漏洞,并终止执行所述查询语句。
2.根据权利要求1所述的注入攻击检测方法,其特征在于,所述根据所述第一单词序列以及所述第二单词序列,检测所述查询语句的处理逻辑是否发生改变,包括:
获取所述第一单词序列中单词的数量与所述第二单词序列中单词的数量之间的差值;
如果所述差值超过预设阈值,则检测出所述查询语句的处理逻辑发生改变;
如果所述差值未超过预设阈值,则检测出所述查询语句的处理逻辑未发生改变。
3.根据权利要求1所述的注入攻击检测方法,其特征在于,所述获取所述查询语句的上下文信息之前,所述方法还包括:
当加载任一类时,对所述类的名称与目标类的名称进行比对,所述目标类包括至少一种目标程序,每种目标程序用于执行查询语句;
如果所述类的名称与所述目标类的名称一致,对于所述类的任一程序,对所述程序的名称与所述每种目标程序的名称进行比对;
如果所述程序的名称与任一目标程序的名称一致,向所述程序之前的预设位置,写入探针程序;
所述获取所述查询语句的上下文信息,包括:
通过所述探针程序,截获所述查询语句的上下文信息。
4.根据权利要求3所述的注入攻击检测方法,其特征在于,所述对所述类的名称与目标类的名称进行比对之前,所述方法还包括:
加载配置文件,所述配置文件包括所述目标类的名称以及所述目标程序的名称;
从所述配置文件中读取所述目标类的名称以及所述目标程序的名称。
5.根据权利要求4所述的注入攻击检测方法,其特征在于,所述加载配置文件之前,所述方法还包括下述任意一项:
遍历源码中的每个库文件,如果当前遍历到的库文件为数据库对应的库文件,从所述库文件中获取所述目标类的名称以及目标程序的名称,根据所述目标类的名称以及所述目标程序的名称,创建所述配置文件;
接收配置指令,从所述配置指令中获取所述目标类的名称以及目标程序的名称,根据所述目标类的名称以及所述目标程序的名称,创建所述配置文件。
6.根据权利要求1所述的注入攻击检测方法,其特征在于,所述根据所述第一单词序列以及所述第二单词序列,检测所述查询语句的处理逻辑是否发生改变之后,所述方法还包括:
如果检测出所述查询语句的处理逻辑未发生改变,则确定所述查询语句不存在注入漏洞,并执行所述查询语句。
7.一种注入攻击检测装置,其特征在于,包括:
生成模块,被配置为执行基于用户的输入数据生成待执行的查询语句;
获取模块,被配置为执行获取所述查询语句的上下文信息;
检测模块,被配置为执行对所述上下文信息进行词法分析,得到第一单词序列;从所述上下文信息中删除所述输入数据;对删除了所述输入数据的上下文信息进行词法分析,得到第二单词序列;根据所述第一单词序列以及所述第二单词序列,检测所述查询语句的处理逻辑是否发生改变;
终止模块,被配置为执行如果检测出所述查询语句的处理逻辑发生改变,则确定所述查询语句存在注入漏洞,并终止执行所述查询语句。
8.根据权利要求7所述的注入攻击检测装置,其特征在于,所述检测模块,被配置为执行:获取所述第一单词序列中单词的数量与所述第二单词序列中单词的数量之间的差值;如果所述差值超过预设阈值,则检测出所述查询语句的处理逻辑发生改变;如果所述差值未超过预设阈值,则检测出所述查询语句的处理逻辑未发生改变。
9.根据权利要求7所述的注入攻击检测装置,其特征在于,所述装置还包括:
比对模块,被配置为执行当加载任一类时,对所述类的名称与目标类的名称进行比对,所述目标类包括至少一种目标程序,每种目标程序用于执行查询语句;
所述比对模块,还被配置为执行如果所述类的名称与所述目标类的名称一致,对于所述类的任一程序,对所述程序的名称与所述每种目标程序的名称进行比对;
写入模块,被配置为执行如果所述程序的名称与任一目标程序的名称一致,向所述程序之前的预设位置,写入探针程序;
所述获取模块,被配置为执行:通过所述探针程序,截获所述查询语句的上下文信息。
10.根据权利要求9所述的注入攻击检测装置,其特征在于,所述装置还包括:
加载模块,被配置为执行加载配置文件,所述配置文件包括所述目标类的名称以及所述目标程序的名称;
读取模块,被配置为执行从所述配置文件中读取所述目标类的名称以及所述目标程序的名称。
11.根据权利要求10所述的注入攻击检测装置,其特征在于,所述装置还包括创建模块,被配置为执行下述任意一项:
遍历源码中的每个库文件,如果当前遍历到的库文件为数据库对应的库文件,从所述库文件中获取所述目标类的名称以及目标程序的名称,根据所述目标类的名称以及所述目标程序的名称,创建所述配置文件;
接收配置指令,从所述配置指令中获取所述目标类的名称以及目标程序的名称,根据所述目标类的名称以及所述目标程序的名称,创建所述配置文件。
12.根据权利要求7所述的注入攻击检测装置,其特征在于,所述装置还包括:执行模块,被配置为执行如果检测出所述查询语句的处理逻辑未发生改变,则确定所述查询语句不存在注入漏洞,并执行所述查询语句。
13.一种服务器,其特征在于,包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的一个或多个存储器;
其中,所述一个或多个处理器被配置为执行所述指令,以实现如权利要求1-6任一项所述的注入攻击检测方法。
14.一种存储介质,其特征在于,当所述存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行权利要求1-6任一项所述的注入攻击检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910497467.4A CN110225029B (zh) | 2019-06-10 | 2019-06-10 | 注入攻击检测方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910497467.4A CN110225029B (zh) | 2019-06-10 | 2019-06-10 | 注入攻击检测方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110225029A CN110225029A (zh) | 2019-09-10 |
CN110225029B true CN110225029B (zh) | 2021-08-17 |
Family
ID=67815998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910497467.4A Active CN110225029B (zh) | 2019-06-10 | 2019-06-10 | 注入攻击检测方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110225029B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111460837A (zh) * | 2020-03-31 | 2020-07-28 | 广州大学 | 一种用于神经机器翻译的字符级对抗样本生成方法及装置 |
CN112817603B (zh) * | 2021-01-26 | 2023-06-30 | 京东科技控股股份有限公司 | 应用程序处理方法、装置、电子设备、系统和存储介质 |
CN112527691B (zh) * | 2021-02-18 | 2021-06-11 | 深圳开源互联网安全技术有限公司 | 程序安全检测防护方法、中间件系统及安全中间件系统 |
CN112949282A (zh) * | 2021-02-26 | 2021-06-11 | 中国联合网络通信集团有限公司 | 配置文件检查方法及装置 |
CN112988583A (zh) * | 2021-03-16 | 2021-06-18 | 中国建设银行股份有限公司 | 数据库语法兼容性测试的方法和装置 |
CN113489677B (zh) * | 2021-05-27 | 2022-06-07 | 贵州电网有限责任公司 | 一种基于语义上下文的零规则攻击检测方法及装置 |
CN113486277A (zh) * | 2021-06-15 | 2021-10-08 | 北京华胜久安科技有限公司 | Web应用访问方法、装置、电子设备及存储介质 |
CN113553059B (zh) * | 2021-07-28 | 2024-04-30 | 北京达佳互联信息技术有限公司 | 局部变量查询方法、装置、服务器及存储介质 |
CN114282221B (zh) * | 2021-12-09 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 注入类漏洞检测方法、系统、终端及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185930B (zh) * | 2011-06-09 | 2013-04-03 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN106411906A (zh) * | 2016-10-10 | 2017-02-15 | 合肥红珊瑚软件服务有限公司 | 一种sql注入漏洞定位检测方法 |
CN108573152A (zh) * | 2017-03-14 | 2018-09-25 | 北京京东尚科信息技术有限公司 | 检测sql注入攻击的方法、装置、服务器和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10404744B2 (en) * | 2016-09-20 | 2019-09-03 | Microsoft Technology Licensing, Llc | Database query injection detection and prevention |
-
2019
- 2019-06-10 CN CN201910497467.4A patent/CN110225029B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185930B (zh) * | 2011-06-09 | 2013-04-03 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN106411906A (zh) * | 2016-10-10 | 2017-02-15 | 合肥红珊瑚软件服务有限公司 | 一种sql注入漏洞定位检测方法 |
CN108573152A (zh) * | 2017-03-14 | 2018-09-25 | 北京京东尚科信息技术有限公司 | 检测sql注入攻击的方法、装置、服务器和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110225029A (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110225029B (zh) | 注入攻击检测方法、装置、服务器及存储介质 | |
US11042645B2 (en) | Auto-remediation workflow for computer security testing utilizing pre-existing security controls | |
Carmony et al. | Extract Me If You Can: Abusing PDF Parsers in Malware Detectors. | |
US11716349B2 (en) | Machine learning detection of database injection attacks | |
US8117660B2 (en) | Secure control flows by monitoring control transfers | |
US7849509B2 (en) | Detection of security vulnerabilities in computer programs | |
Halfond et al. | Preventing SQL injection attacks using AMNESIA | |
Sadeghian et al. | A taxonomy of SQL injection detection and prevention techniques | |
US20150207811A1 (en) | Vulnerability vector information analysis | |
Liao et al. | SmartDagger: a bytecode-based static analysis approach for detecting cross-contract vulnerability | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
CN111191243B (zh) | 一种漏洞检测方法、装置和存储介质 | |
CN107103237A (zh) | 一种恶意文件的检测方法及装置 | |
CN113190839A (zh) | 一种基于SQL注入的web攻击防护方法及系统 | |
CN114091031A (zh) | 基于白规则的类加载防护方法及装置 | |
KR101696694B1 (ko) | 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 | |
CN116488872A (zh) | JavaWeb应用的攻击行为的识别和防御方法及其装置 | |
CN116932381A (zh) | 小程序安全风险自动化评估方法及相关设备 | |
Homaei et al. | Athena: A framework to automatically generate security test oracle via extracting policies from source code and intended software behaviour | |
US20150121508A1 (en) | Method, a computer program and apparatus for analyzing symbols in a computer | |
CN112632547A (zh) | 一种数据处理方法和相关装置 | |
Jordan et al. | Safe-pdf: Robust detection of javascript pdf malware using abstract interpretation | |
Jordan et al. | Unacceptable behavior: Robust pdf malware detection using abstract interpretation | |
Perkins et al. | AutoRand: Automatic keyword randomization to prevent injection attacks | |
US20200242244A1 (en) | Guided security analysis |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |