CN111064735A - 一种电力信息系统sql注入漏洞检测方法及系统 - Google Patents

一种电力信息系统sql注入漏洞检测方法及系统 Download PDF

Info

Publication number
CN111064735A
CN111064735A CN201911357101.3A CN201911357101A CN111064735A CN 111064735 A CN111064735 A CN 111064735A CN 201911357101 A CN201911357101 A CN 201911357101A CN 111064735 A CN111064735 A CN 111064735A
Authority
CN
China
Prior art keywords
state
test
injection
response
test case
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
Application number
CN201911357101.3A
Other languages
English (en)
Other versions
CN111064735B (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.)
State Grid Corp of China SGCC
Nankai University
State Grid Tianjin Electric Power Co Ltd
Electric Power Research Institute of State Grid Tianjin Electric Power Co Ltd
Original Assignee
Nankai University
State Grid Tianjin Electric Power 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 Nankai University, State Grid Tianjin Electric Power Co Ltd filed Critical Nankai University
Priority to CN201911357101.3A priority Critical patent/CN111064735B/zh
Publication of CN111064735A publication Critical patent/CN111064735A/zh
Application granted granted Critical
Publication of CN111064735B publication Critical patent/CN111064735B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active 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)

Abstract

本发明涉及一种电力信息系统SQL注入漏洞检测方法及系统。该检测方法包括:根据SQL语句的逻辑语义特征,获取SQL注入漏洞的测试用例的语义特征;不同的语义特征对应不同的测试动作;根据所述语义特征,基于SQL注入漏洞黑盒渗透测试的规则,构建每个语义特征对应的测试用例以及安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括每个测试用例的响应状态以及状态转换规则;根据所述测试用例,采用所述安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测,得到漏洞证据。本发明可以提高SQL注入漏洞的检测精度。

Description

一种电力信息系统SQL注入漏洞检测方法及系统
技术领域
本发明涉及电力信息安全领域,特别是涉及一种电力信息系统SQL注入漏洞检测方法及系统。
背景技术
电力数据的安全问题随着电力信息网与互联网的接入变得尤为严峻,如何有效对安全漏洞及其特征进行分析和检测就成为一种至关重要的问题。其中SQL注入漏洞是危害最为严重的漏洞之一,并且其呈现出越来越高的隐蔽性、逻辑性和时序性,传统的漏洞检测和特征分析方法已不能满足其检测要求,从而造成了检测准确度不足的问题。
随着电力信息系统接入互联网,其所包含的数据与种类规模都变的愈加庞大复杂,电力信息网络安全变得越来越重要。近年来我国电力行业信息系统发展迅速,与多种业务系统智能互联,如用户用电业务系统,充电桩业务系统等。电力业务相关数据不断积累,提高电网信息系统面对外界恶意攻击时的防控能力,保证电网安全、稳定、高效运行非常重要。在电力信息系统所有安全漏洞问题中,SQL注入漏洞(Structure Query LanguageInjection Vulnerability,SQLIV)被公认为影响最严重的信息系统漏洞之一,其可造成敏感信息泄露、认证与授权失效、系统后台劫持等严重的信息系统安全问题。通常会采用黑盒渗透测试来模拟黑客攻击方式以动态地检测在线信系统中的SQLIIV,但其普遍存在准确度不足的问题,主要表现为较高的漏报(False Negative)和误报(False Positive)。
以提高检测准确度为目标,大量研究从渗透测试的信息收集、响应分析和检测攻击生成三个方面展开以提高其对漏洞特征的识别分析能力。在此基础上,很多研究通过融合静态代码分析的黑白盒相结合的方法来提高其检测效果,但对源代码的依赖限制了其在很多实际检测场景中的应用,因而对SQLIV黑盒渗透测试的研究显得至关重要。
传统的黑盒渗透测试方法中,部分方法专注于通过改进漏洞特征识别方法来提高检测响应分析能力,但其大多未考虑到多不同检测响应之间的关联性,因而难以检测出复杂的基于推断的SQLIV,从而容易引入一定的漏报。另一方面,部分方法通过扩充检测模式库或改进攻击生成方法以提高SQLIV检测的覆盖度,其多采用顺序或随机枚举方式,同样未考虑到测试用例之间的逻辑关系,进而增加了引入误报的可能性。另外一些工作采用攻击树模型等建模方法来展开其研究,但同样未考虑到复杂漏洞中包含的逻辑和时序问题,容易引入误报、漏报,因此,传统的检测方法对于SQL注入漏洞检测精度不高。
发明内容
本发明的目的是提供一种电力信息系统SQL注入漏洞检测方法及系统,以提高SQL注入漏洞的检测精度。
为实现上述目的,本发明提供了如下方案:
一种电力信息系统SQL注入漏洞检测方法,包括:
根据SQL语句的逻辑语义特征,获取SQL注入漏洞的测试用例的语义特征;不同的语义特征对应不同的测试动作;
根据所述语义特征,基于SQL注入漏洞黑盒渗透测试的规则,构建每个语义特征对应的测试用例以及安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括每个测试用例的响应状态以及状态转换规则;
根据所述测试用例,采用所述安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测,得到漏洞证据。
可选的,所述SQL注入漏洞的测试用例的语义特征包括:
错误注入特征E,表示造成数据库错误的注入特征;
排序注入特征τ,表示进行排序操作的注入特征;
联合查询注入特征∪,表示进行联合查询操作的注入特征;
“与.真”注入特征∧T[--],表示注释符可选的逻辑运算为与的真运算的注入特征,
“与.假”注入特征∧F,表示逻辑运算为与的假运算的注入特征;
“与.假”注入特征∧F--,表示以注释符结束的逻辑运算为与的假运算的注入特征;
“或.真”注入特征∨T,表示逻辑运算为或的真运算的注入特征;
“或.假”注入特征∨F,表示逻辑运算为或的假运算的注入特征;
“IF.真”注入特征IF(T),表示与数据库语句逻辑相同的注入特征;
“IF.假”注入特征IF(F),表示与数据库语句逻辑不同的注入特征;
时间延迟注入特征TD(n),表示进行时间间隔为n妙的时间延迟注入特征。
可选的,所述根据所述语义特征,基于SQL注入漏洞黑盒渗透测试的规则,构建每个语义特征对应的测试用例以及安全特征扩展有限状态机模型,具体包括:
根据所述语义特征,构建不同状态的语义特征对应的测试用例及所述测试用例对应的变体;所述变体为与所述测试用例具有相同结构和逻辑语义的测试用例;
获取测试控制状态;所述测试控制状态包括分析状态、存在漏洞状态、无漏洞状态、集合判断状态和终止状态;
根据所述语义特征和所述测试控制状态集合,确定所述安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括非空的有限状态集合、有穷的输入事件集合、状态转移函数、初始状态、终止状态的集合和同步变量集合;所述有限状态集合的元素为所述语义特征的状态和所述测试控制状态;所述状态转移函数为接收所述输入事件集合中的输入后,由所述有限状态集合中第一状态转移至所述有限状态集合中第二状态的映射函数;所述同步变量集合包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量;所述测试用例集合为未进行测试的测试用例集合。
可选的,所述状态转移函数具体为:
Figure BDA0002336222170000041
其中,矩阵中第1行至第15行和第1列至第15列均依次表示分析状态S0、存在漏洞状态S1、无漏洞状态S2、集合判断状态S3、终止状态S4、错误注入特征的状态T0、排序注入特征τ的状态T1、联合查询注入特征∪的状态T2、“与.真”注入特征∧T[--]的状态T3、“与.假”注入特征∧F的状态T4、“与.假”注入特征∧F--的状态T5、“或.真”注入特征∨T的状态T6、“或.假”注入特征∨F的状态T7、“IF.真”注入特征IF(T)的状态T8、“IF.假”注入特征IF(F)的状态T9和时间延迟注入特征TD(n)的状态T10
矩阵中的元素set=1表示从元素set=1所在行的状态转移到元素set=1所在列的状态的输入条件为测试用例集合不为空;矩阵中的元素r=1表示从元素r=1所在行的状态转移到元素r=1所在列的状态的输入条件为本轮测试中测试用例的响应页面与原始响应页面相似且页面信息与响应时间正常;矩阵中的元素r=0表示从元素r=0所在行的状态转移到元素r=0所在列的状态的输入条件为本轮测试中测试用例的响应页面发生变化、页面报错或相应时间异常;矩阵中的元素ε表示从元素ε所在行的状态转移到元素ε所在列的状态无需输入;矩阵中的元素0表示从元素0所在行的状态不能转移到元素0所在列的状态;矩阵中的元素t=0表示从元素t=0所在行的状态转移到元素t=0所在列的状态的输入条件为本轮测试对应的响应状态为T0;矩阵中的元素t=1表示从元素t=1所在行的状态转移到元素t=1所在列的状态的输入条件为本轮测试对应的响应状态为T1;矩阵中的元素t=2表示从元素t=2所在行的状态转移到元素t=2所在列的状态的输入条件为本轮测试对应的响应状态为T2;矩阵中的元素t=3表示从元素t=3所在行的状态转移到元素t=3所在列的状态的输入条件为本轮测试对应的响应状态为T3;矩阵中的元素t=6表示从元素t=6所在行的状态转移到元素t=6所在列的状态的输入条件为本轮测试对应的响应状态为T6;矩阵中的元素t=8表示从元素t=8所在行的状态转移到元素t=8所在列的状态的输入条件为本轮测试对应的响应状态为T8
可选的,所述根据所述测试用例,采用所述安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测,得到漏洞证据,具体包括:
获取本轮测试所处的状态;
当本轮测试所处的状态为S0、S1、S2或S3时,根据本轮测试所处的状态执行对应的测试控制操作,得到本轮测试的同步变量;所述同步变量包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量;
当本轮测试所处的状态为T0、T1、T2、T3、T4、T5、T6、T7、T8或T9时,根据本轮测试所处的状态执行对应的测试用例注入操作,得到本轮测试的同步变量;
根据本轮测试的同步变量,得到触发下一个状态的输入变量;
根据所述输入变量,基于所述状态转移函数,进行状态转移操作,确定下一轮测试的状态;
当本轮测试所处的状态为S4时,获得所有轮测试的同步变量,得到所有漏洞证据,结束检测。
本发明还提供一种电力信息系统SQL注入漏洞检测系统,包括:
语义特征获取模块,用于根据SQL语句的逻辑语义特征,获取SQL注入漏洞的测试用例的语义特征;不同的语义特征对应不同的测试动作;
测试用例及安全特征扩展有限状态机模型构建模块,用于根据所述语义特征,基于SQL注入漏洞黑盒渗透测试的规则,构建每个语义特征对应的测试用例以及安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括每个测试用例的响应状态以及状态转换规则;
检测模块,用于根据所述测试用例,采用所述安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测,得到漏洞证据。
可选的,所述SQL注入漏洞的测试用例的语义特征包括:
错误注入特征E,表示造成数据库错误的注入特征;
排序注入特征τ,表示进行排序操作的注入特征;
联合查询注入特征∪,表示进行联合查询操作的注入特征;
“与.真”注入特征∧T[--],表示注释符可选的逻辑运算为与的真运算的注入特征,
“与.假”注入特征∧F,表示逻辑运算为与的假运算的注入特征;
“与.假”注入特征∧F--,表示以注释符结束的逻辑运算为与的假运算的注入特征;
“或.真”注入特征∨T,表示逻辑运算为或的真运算的注入特征;
“或.假”注入特征∨F,表示逻辑运算为或的假运算的注入特征;
“IF.真”注入特征IF(T),表示与数据库语句逻辑相同的注入特征;
“IF.假”注入特征IF(F),表示与数据库语句逻辑不同的注入特征;
时间延迟注入特征TD(n),表示进行时间间隔为n妙的时间延迟注入特征。
可选的,所述测试用例及安全特征扩展有限状态机模型构建模块具体包括:
测试用例构建单元,用于根据所述语义特征,构建不同状态的语义特征对应的测试用例及所述测试用例对应的变体;所述变体为与所述测试用例具有相同结构和逻辑语义的测试用例;
测试控制状态获取单元,用于获取测试控制状态;所述测试控制状态包括分析状态、存在漏洞状态、无漏洞状态、集合判断状态和终止状态;
安全特征扩展有限状态机模型构建单元,用于根据所述语义特征和所述测试控制状态集合,确定所述安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括非空的有限状态集合、有穷的输入事件集合、状态转移函数、初始状态、终止状态的集合和同步变量集合;所述有限状态集合的元素为所述语义特征的状态和所述测试控制状态;所述状态转移函数为接收所述输入事件集合中的输入后,由所述有限状态集合中第一状态转移至所述有限状态集合中第二状态的映射函数;所述同步变量集合包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量;所述测试用例集合为未进行测试的测试用例集合。
可选的,所述状态转移函数具体为:
Figure BDA0002336222170000071
其中,矩阵中第1行至第15行和第1列至第15列均依次表示分析状态S0、存在漏洞状态S1、无漏洞状态S2、集合判断状态S3、终止状态S4、错误注入特征的状态T0、排序注入特征τ的状态T1、联合查询注入特征∪的状态T2、“与.真”注入特征∧T[--]的状态T3、“与.假”注入特征∧F的状态T4、“与.假”注入特征∧F--的状态T5、“或.真”注入特征∨T的状态T6、“或.假”注入特征∨F的状态T7、“IF.真”注入特征IF(T)的状态T8、“IF.假”注入特征IF(F)的状态T9和时间延迟注入特征TD(n)的状态T10
矩阵中的元素set=1表示从元素set=1所在行的状态转移到元素set=1所在列的状态的输入条件为测试用例集合不为空;矩阵中的元素r=1表示从元素r=1所在行的状态转移到元素r=1所在列的状态的输入条件为本轮测试中测试用例的响应页面与原始响应页面相似且页面信息与响应时间正常;矩阵中的元素r=0表示从元素r=0所在行的状态转移到元素r=0所在列的状态的输入条件为本轮测试中测试用例的响应页面发生变化、页面报错或相应时间异常;矩阵中的元素ε表示从元素ε所在行的状态转移到元素ε所在列的状态无需输入;矩阵中的元素0表示从元素0所在行的状态不能转移到元素0所在列的状态;矩阵中的元素t=0表示从元素t=0所在行的状态转移到元素t=0所在列的状态的输入条件为本轮测试对应的响应状态为T0;矩阵中的元素t=1表示从元素t=1所在行的状态转移到元素t=1所在列的状态的输入条件为本轮测试对应的响应状态为T1;矩阵中的元素t=2表示从元素t=2所在行的状态转移到元素t=2所在列的状态的输入条件为本轮测试对应的响应状态为T2;矩阵中的元素t=3表示从元素t=3所在行的状态转移到元素t=3所在列的状态的输入条件为本轮测试对应的响应状态为T3;矩阵中的元素t=6表示从元素t=6所在行的状态转移到元素t=6所在列的状态的输入条件为本轮测试对应的响应状态为T6;矩阵中的元素t=8表示从元素t=8所在行的状态转移到元素t=8所在列的状态的输入条件为本轮测试对应的响应状态为T8
可选的,所述检测模块具体包括:
本轮测试所处状态获取单元,用于获取本轮测试所处的状态;
测试控制操作单元,用于当本轮测试所处的状态为S0、S1、S2或S3时,根据本轮测试所处的状态执行对应的测试控制操作,得到本轮测试的同步变量;所述同步变量包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量;
测试用例注入操作单元,用于当本轮测试所处的状态为T0、T1、T2、T3、T4、T5、T6、T7、T8或T9时,根据本轮测试所处的状态执行对应的测试用例注入操作,得到本轮测试的同步变量;
输入变量触发单元,用于根据本轮测试的同步变量,得到触发下一个状态的输入变量;
状态转移单元,用于根据所述输入变量,基于所述状态转移函数,进行状态转移操作,确定下一轮测试的状态;
漏洞证据获取单元,用于当本轮测试所处的状态为S4时,获得所有轮测试的同步变量,得到所有漏洞证据,结束检测。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
针对传统的黑盒渗透测试过程中难以有效检测具有复杂逻辑和时序规律的SQLIV的问题,本发明通过对SQL注入测试用例的语义进行建模,并建立其测试流程的安全特征扩展有限状态机模型,通过分析相关测试响应之间的状态转移规律来对SQL注入漏洞进行检测,可提高SQL注入漏洞的检测精度。此外,由于本发明通过状态转机矩阵,捕捉分析测试响应之间的状态转移规律,可提高渗透测试的准确度,可更有效检测具有推断和动态特性的漏洞,从而降低了漏报。同时,本方法基于状态变换进行多步骤的测试,增加的验证的充分性,从而降低了误报的可能性。而且,本发明可减少无效测试状态下的测试请求,从而可进行更为准确高效的检测。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为SQL注入漏洞黑盒检测模型示意图;
图2为本发明电力信息系统SQL注入漏洞检测方法的流程示意图;
图3为本发明电力信息系统SQL注入漏洞检测方法中状态转移函数的矩阵图;
图4为本发明电力信息系统SQL注入漏洞检测系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
SQL注入漏洞是一种代码注入漏洞,当攻击者精心构造的攻击代码可透过注入点到达数据库并被作为SQL语句的一部分被执行时,那么认为该注入点存在SQL注入漏洞。黑盒渗透测试通过模拟黑客的SQL注入攻击HTTP请求,并分析其响应结果以判断其是否包含SQLIV。因其高效易于实施的优点,渗透测试已成为应用最广泛的动态或在线Web应用SQLIV检测手段。图1为SQL注入漏洞黑盒检测模型示意图,图中字母含义为:
S(Similar):测试响应与原始响应相似;
NS(Not Similar):测试响应与原始响应不相似;
A:攻击负载为“AND 1=1--”的注入;
B/C:攻击负载为“AND 1=2--”的注入;
D:未检出SQL注入漏洞(SQLIV);
E:已检出SQL注入漏洞(SQLIV)。
如图1所示,SQLIV渗透测试场景如下:某个以MySQL作为其后台数据库的购物网站WebShop通过表单Customer保存用户敏感信息,每个用户只有在登陆系统后通过CoustomerID和SessionID作为凭证来查看其用户信息,相应的SQL查询语句如(A)所示:
(A)SELECT*FROM Costomers WHERE CustomerID=001 AND SessionID=123。
若该语句未进行有效防御,那么可对参数“SessionID=123”进行基于枚举的形如“’abc”的错误注入测试,并通过分析响应中的数据库错误来判断SQLIV。基于枚举的错误注入式检测方法较难检测出具有状态转移特性的SQLIV,主要包括盲注入漏洞和时间延迟注入漏洞等。以盲注入漏洞为例,其为一种基于页面相似度进行推断的SQL注入漏洞。可对参数SessionID分别注入“AND 1=1--”与“AND 1=2--”,且有如下注入后的查询语句(B)与语句(C):
(B)SELECT*FROM Costomers WHERE CustomerID=001 AND SessionID=123 AND1=1--。
(C)SELECT*FROM Costomers WHERE CustomerID=001 AND SessionID=123 AND1=2--。
语句(B)中“1=1”为“真”,其经过“与”运算后,其逻辑与原始语句相同,响应页面与原始页面相似;而语句(C)的逻辑始终为“假”,响应页面与原始的页面不相似。其成功的检测流程可通过图1示例模型中的路径“A→B→E”来描述。原始语句逻辑为“假”的情况下,无法读出数据库信息,但可通过对参数“CustomerID=001”分别注入“AND 1=1--”和“AND1=2--”来推断SQLIV。由于注释符“--”注释掉了对“SessionID”的判断,“1=1”经过逻辑“与”运算,其可以读出“CustomerID”为“001”的客户信息,注入后页面发生变化;而注入“AND 1=2--”后,SQL语句逻辑依然为“假”,响应页面与原始页面相似。其对应的检测流程可通过图1中的路径“A→C→E”来描述。
针对上述问题,本发明通过对测试用例对用的响应状态之间的逻辑和时序关系进行分析和研究,通过对SQLIV渗透测试用例的语义特征进行分类和建模,并根据SQLIV黑盒渗透测试相关规则建立测试用例及其所对应响应的安全特征扩展有限状态机模型,通过对不同测试用例及其响应状态之间的状态转换规律进行分析来检测SQL注入漏洞。
图2为本发明电力信息系统SQL注入漏洞检测方法的流程示意图。如图2所示,本发明电力信息系统SQL注入漏洞检测方法包括以下步骤:
步骤100:根据SQL语句的逻辑语义特征,获取SQL注入漏洞的测试用例的语义特征。不同的语义特征对应不同的测试动作。不同的测试用例在相同的SQL语句上下文可能出现不同的响应,即便是相同的测试用例在不同环境下也有可能表现出不同的响应。究其原因是每一条测试用例都包含特定的逻辑语义,故当其与被注入的原始SQL语句融合并同时参与运算时,其逻辑语义与原始SQL语句共同作用并运算生成特定的逻辑语义结果。本步骤中SQL注入漏洞的测试用例的语义特征具体包括:错误注入特征E、排序注入特征τ、联合查询注入特征∪、“与.真”注入特征∧T[--]、“与.假”注入特征∧F、“与.假”注入特征∧F--、“或.真”注入特征∨T、“或.假”注入特征∨F、“IF.真”注入特征IF(T)、“IF.假”注入特征IF(F)和时间延迟注入特征TD(n)。其中,错误注入特征E,表示造成数据库错误的注入特征;排序注入特征τ,表示进行排序操作的注入特征;联合查询注入特征∪,表示进行联合查询操作的注入特征;“与.真”注入特征∧T[--],表示注释符可选的逻辑运算为与的真运算的注入特征,“与.假”注入特征∧F,表示逻辑运算为与的假运算的注入特征;“与.假”注入特征∧F--,表示以注释符结束的逻辑运算为与的假运算的注入特征;“或.真”注入特征∨T,表示逻辑运算为或的真运算的注入特征;“或.假”注入特征∨F,表示逻辑运算为或的假运算的注入特征;“IF.真”注入特征IF(T),表示与数据库语句逻辑相同的注入特征;“IF.假”注入特征IF(F),表示与数据库语句逻辑不同的注入特征;时间延迟注入特征TD(n),表示进行时间间隔为n妙的时间延迟注入特征。
步骤200:根据语义特征,基于SQL注入漏洞黑盒渗透测试的规则,构建每个语义特征对应的测试用例以及安全特征扩展有限状态机模型。安全特征扩展有限状态机模型包括每个测试用例的响应状态以及状态转换规则。
首先,根据语义特征,构建不同状态的语义特征对应的测试用例及所述测试用例对应的变体;所述变体为与所述测试用例具有相同结构和逻辑语义的测试用例。具体如表1所示,表1为语义特征及测试用例分类表。
表1语义特征及测试用例分类表
Figure BDA0002336222170000121
Figure BDA0002336222170000131
表1中,错误注入由“E”(Error)表示,其为可造成数据库错误的SQL注入测试语句,如“’abc”等;“τ”表示排序注入测试,如“ORDER BY 2”等测试用例;“∪”符号表示联合查询注入测试,例如“UNION SELECT 1,2,3,…”;包含字母“T”(True)与“F”(False)的测试用例分类涉及到“真”和“假”运算,“T”代表“1=1”或“‘a’=‘a’”这类重言式,“F”代表“1=2”或“‘a’=‘b’”这类永假式;符号“∧”表示逻辑为“与”的运算,包括“AND”、“HAVING”、“IN”等关键词,例如“AND 1=1”及“’HAVING‘a’=’a”属于分类“∧T”,而“AND 1=2”及“HAVING 1=2”属于分类“∧F”,“∧T--”及“∧F--”中的“--”符号表示该类测试用例以注释符结束,例如“AND 1=1--”与“AND 1=2--”,其中[--]表示此时注释符“--”为可选的;符号“∨”表示逻辑为“或”的运算,包括“||”、“OR”等关键词,例如“OR1=1”包含于分类“∨T”,而“∨F”包括测试用例形如“’OR‘a’=’b’--”等;符号“IF()”表示“IF”注入测试语句,“IF(T)”表示与原始SQL语句逻辑相同的注入测试语句,如“IF(1=1,ORI,ERR)”,“IF(F)”表示与原始逻辑不同的测试语句,如“IF(1=2,ORI,ERR)”,“ORI”表示注入前的初始参数值,“ERR”表示错误的一条查询或语句;“TD(n)”则表示进行时间间隔为n秒的时间延迟(TD:Time Delay)注入测试,例如“SLEEP(n)--”。
表1通过相应的符号和逻辑语义列出了包括错误推断注入测试、相似度推断测试、时间延迟注入测试等多种类别的SQLIV渗透测试用例及其对应的变体,测试用例对应的变体是指在该测试用例基础上进行变化,但与该测试用例具有相同的结构及逻辑语义的测试用例,如“AND(3+2)=5”即为“AND1=1”的变体。由于测试用例仅需要发现漏洞存在的证据,并且应尽量减少对被测系统的破坏,因此本发明方法去除了带有“DELETE”、“ALTER”等攻击性关键词的SQL语句。
采用表1中某个状态T所对应的的测试用例在注入到原始的目标SQL语句后,经过数据库运算,其最终运算结果应表现为某种特定的逻辑值,“真”(T)或是“假”(F)。如果实际渗透测试结果满足该特定的逻辑,那么就判定该SQL语句存在SQL注入漏洞。
然后,根据语义特征,构建安全特征扩展有限状态机模型。安全特征扩展有限状态机(Extended Finite State Machine,EFSM)是有限状态机(Finite State Machine,FSM)模型的扩展,其通过状态、状态间的转移、前置条件、上下文变量、操作、输入和输出来描述对象,其可精确描述软件系统的复杂动态行为,从而可有效应用于复杂系统的测试过程中。为了描述SQL注入漏洞渗透测试过程中的状态转移规律,本发明基于语义特征建立了其EFSM模型。
安全特征扩展有限状态机模型的测试控制状态包括分析状态、存在漏洞状态、无漏洞状态、集合判断状态和终止状态,具体如表2所示,表2为测试控制状态分类表。
表2测试控制状态分类表
Figure BDA0002336222170000141
基于测试控制状态和语义特征,构建的EFSM模型采用六元组表示,六元组PT-EFSM=<Q,I,T,q0,E,V>,其中Q为非空的有限状态集合,I为有穷的输入事件集合,T为状态转移函数,q0是初始状态,E是终止状态的集合,V为同步变量集合。
非空有限的状态集合Q={S0,…,S4,T0,…,T9},如表2,状态S0至S4为通用的测试控制状态,S0用于分析当前测试用例所属的测试用例语义特征状态t(见表1);S1表示发现SQLIV的证据并对漏洞证据数量vul加1;S2表示当前测试用例未测出漏洞;S3表示分析测试用例集合是否为空(set=0),测试用例集合表示在测试过程中所使用的所有测试用例;S4则为终止状态。状态T0至T9分别代表经过逻辑语义分类的十种测试用例所对应的状态,该方法所使用的初始测试用例集合TCSet(Test Case Set)中的测试用例即由上述分类中的用例组成,其中TCSet是测试开始阶段所使用的测试用例集合,有TCSet={<Tmn>},其是表1中每个测试语义特征所对应的测试用例Tmn所构成的集合。其中T0可单独执行测试;T1及T2为标准的ORDER和UNION语句测试;T3至T9则是通过运算符号“∧”(逻辑“与”运算)、“∨”(逻辑“或”运算)、“IF”(“条件”运算)分组为三组,根据逻辑值“T”(真)与“F”(假)成对出现的,如表1中T6“∨T”与T7“∨F”成对出现。与顺序枚举测试方法不同,本发明的EFSM模型采用的方法是通过初始测试用例及其对应的响应逻辑进行状态转移生成后续相关的测试用例,因此初始测试用例集TCSet中仅需包含属于状态集合{T0,T1,T2,T3,T6,T8}的测试用例即可完成测试。其初始状态为q0=S0,终结状态集合为E={S4}。
V={t,r,vul,set}为同步变量集合,其中变量t表示本轮测试对应的响应状态,例如“t=2”表示即将进入T2状态;r表示某条测试用例的响应页面与原始响应页面对比是否发生异常;vul表示测试出的SQLIV数量;set为布尔变量,其表示集合TCSet是否为空。
输入事件集合I={“t=m”,“r=0”,“r=1”,“set=0”,“set=1”,ε},(m∈N,且0≤m≤10)。其中等式左边的变量t、r、s均属于集合V,“t=m”表示EFSM即将进入Tm测试状态;“r=1”表示测试响应页面与原始页面相似且页面信息与响应时间正常,“r=0”表示测试响应页面发生变化、页面报错或响应时间异常;“set=0”表示测试用例集合为空集合,而“set=1”表明依然存在待测的用例;“ε”为空输入,表示不进行任何输入。
状态转移函数T表示状态集合Q中的某个状态,在接收集合I中的输入后,转移到集合Q中的某个状态的映射函数,其可通过状态转移矩阵进行描述。图3为本发明电力信息系统SQL注入漏洞检测方法中状态转移函数的矩阵图,如图3所示,矩阵用公式可以表示为:
Figure BDA0002336222170000161
结合图3对状态转移函数进行说明,状态转移函数包含了SQL注入漏洞渗透测试响应状态之间的转移关系与时序逻辑规律,决定了渗透测试的具体流程和漏洞判断规则。图3中行与列均代表状态集合Q中的状态,行与列的交点为输入集合I中的元素,表示从行所表示状态转移到列所代表状态的转移条件。set=1表示测试用例集合不为空,r=1表示本轮测试中测试用例的响应页面与原始响应页面相似且页面信息与响应时间正常,r=0表示本轮测试中测试用例的响应页面发生变化、页面报错或相应时间异常,ε表示无需输入,t=0表示本轮测试对应的响应状态为T0,t=1表示本轮测试对应的响应状态为T1,t=2表示本轮测试对应的响应状态为T2,t=3表示本轮测试对应的响应状态为T3,t=6表示本轮测试对应的响应状态为T6,t=8表示本轮测试对应的响应状态为T8
例如,行T3与列T4交点处有“r=1”,表示从状态T3转移到状态T4的输入条件为“r=1”。行S1与列S3交点处的“ε”表示从状态S1转移到状态S3无需任何输入即可发生状态转移,而无内容的交点(矩阵中0元素)表示先后两个状态之间不存在状态转移。该状态转移矩阵应用于实际的SQLIV渗透测试过程。
步骤300:根据测试用例,采用安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测,得到漏洞证据。采用安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测主要为两部分:(1)对状态转移规则(Status Transfer Rule,STR)的执行,其可由图3所示的状态转移矩阵表示;(2)每个状态下所执行的具体动作(Action),其可见表1和表2中每个状态所对应的动作,例如状态T6执行的动作为发送语义特征为“∨T”的测试用例为“OR1=1”的“或﹒真”逻辑SQLIV渗透测试请求,并接收和分析其HTTP响应信息。对此,本发明采用循环状态转移算法(Circulation Status Transfer Algorithm,CSTA)来实现基于EFSM的SQLIV渗透测试方法的应用,具体过程如下:
获取本轮测试所处的状态。
当本轮测试所处的状态为S0、S1、S2或S3时,根据本轮测试所处的状态执行对应的测试控制操作,得到本轮测试的同步变量;所述同步变量包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量。
当本轮测试所处的状态为T0、T1、T2、T3、T4、T5、T6、T7、T8或T9时,根据本轮测试所处的状态执行对应的测试用例注入操作,得到本轮测试的同步变量。
根据本轮测试的同步变量,得到触发下一个状态的输入变量。
根据所述输入变量,基于所述状态转移函数,进行状态转移操作,确定下一轮测试的状态。
当本轮测试所处的状态为S4时,获得所有轮测试的同步变量,得到所有漏洞证据,结束检测。
循环状态转移算法如下:
变量:status,testcase,input,result;
输入:状态转移规则STR,初始测试用例集合数组TCSet[];
输出:漏洞证据数量vul。
(1)开始运行。
(2)初始化操作:令变量status等于S0。
(3)令变量testcase的值为TCset[0],即TCset[]数组的第一条数据。
(4)确定status当前值。如果变量status属于集合{S0,S1,S2,S3},执行步骤(5);如果变量status属于集合{T0,T1,T2,T3,T4,T5,T6,T7,T8T9},执行步骤(6)。
(5)则对变量result赋值,使其值等于ActionS(status,testcase)操作的运算结果,然后执行步骤(7)。
(6)则对结果变量result赋值,使其值等于ActionT(status,testcase)操作的运算结果,然后执行步骤(7)。
(7)将输入变量input赋值,令其值等于结果分析操作ResAnalyzing的执行结果。
(8)执行状态转移操作StatusTransfer(STR,status,input),并将结果赋值于status。
(9)将TCset[]数组中的第一条数据移除。
(10)判断TCset[]是否为空以及status是否等于S4。当TCset[]不为空且status不等于S4,则返回步骤(3),进入下一轮测试;否则,继续执行步骤(11)。
(11)终止算法,并返回测试结果result。
结束运行。
对于上述算法,变量解释如下:
状态变量status存储当前测试所处于的状态;testcase保存当前测试用例字符串;input存储状态转移的输入条件;result=<t,r,vul,set>,保存每个状态执行动作后的结果变量。
输入解释:
状态转移规则STR以三元组<Pre,InputCondition,Aft>存储状态转移矩阵中的规则;测试用例集合TCSet(Test Case Set),TCSet为存储初始测试用例了集合的字符串数组。
输出解释:
vul为检测出的漏洞证据数量。
算法过程中出现的函数解释:
算法CSTA通过循环调用TCSet中的测试用例,并根据其对应的状态来调用相应的动作函数ActionS或ActionT,并返回其结果变量result。
其中,ActionT是测试用例状态Ti(Ti∈{T0,…,T9})所对应的动作ActionT,如表1所示;ActionS是通用的控制状态Sj(Sj∈{S0,…,S3})进行的动作,如表2所示;函数ResAnalyzing()用于分析result内部的变量值并得到触发下一个状态的input变量值;函数StatusTransfer()根据状态转移矩阵中的规则STR,以及目前状态status和输入input来确定下一阶段的状态。
算法CSTA实现了调用状态转移矩阵及各状态对应的动作,并循环处理初始测试用例集合TCSet,直至其为空集。
本发明的检测方法通过状态转机矩阵,捕捉分析测试响应之间的状态转移规律,可更有效检测具有推断和动态特性的漏洞,从而降低了漏报,进而提高渗透测试的准确度。同时,本发明的检测方法基于状态变换进行多步骤的测试,增加的验证的充分性,从而降低了误报的可能性。本发明的检测方法在保证其检测准确度的前提下,效率与其他检测工具相当,其内在原因是EFSM可减少无效测试状态下的测试请求,从而可进行更为准确高效的检测。
图4为本发明电力信息系统SQL注入漏洞检测系统的结构示意图。如图4所示,本发明电力信息系统SQL注入漏洞检测系统包括以下结构:
语义特征获取模块401,用于根据SQL语句的逻辑语义特征,获取SQL注入漏洞的测试用例的语义特征;不同的语义特征对应不同的测试动作。所述SQL注入漏洞的测试用例的语义特征包括:错误注入特征E,表示造成数据库错误的注入特征;排序注入特征τ,表示进行排序操作的注入特征;联合查询注入特征∪,表示进行联合查询操作的注入特征;“与.真”注入特征∧T[--],表示注释符可选的逻辑运算为与的真运算的注入特征,“与.假”注入特征∧F,表示逻辑运算为与的假运算的注入特征;“与.假”注入特征∧F--,表示以注释符结束的逻辑运算为与的假运算的注入特征;“或.真”注入特征∨T,表示逻辑运算为或的真运算的注入特征;“或.假”注入特征∨F,表示逻辑运算为或的假运算的注入特征;“IF.真”注入特征IF(T),表示与数据库语句逻辑相同的注入特征;“IF.假”注入特征IF(F),表示与数据库语句逻辑不同的注入特征;时间延迟注入特征TD(n),表示进行时间间隔为n妙的时间延迟注入特征。
测试用例及安全特征扩展有限状态机模型构建模块402,用于根据所述语义特征,基于SQL注入漏洞黑盒渗透测试的规则,构建每个语义特征对应的测试用例以及安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括每个测试用例的响应状态以及状态转换规则。
检测模块403,用于根据所述测试用例,采用所述安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测,得到漏洞证据。
所述测试用例及安全特征扩展有限状态机模型构建模块402具体包括:
测试用例构建单元,用于根据所述语义特征,构建不同状态的语义特征对应的测试用例及所述测试用例对应的变体;所述变体为与所述测试用例具有相同结构和逻辑语义的测试用例。
测试控制状态获取单元,用于获取测试控制状态;所述测试控制状态包括分析状态、存在漏洞状态、无漏洞状态、集合判断状态和终止状态。
安全特征扩展有限状态机模型构建单元,用于根据所述语义特征和所述测试控制状态集合,确定所述安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括非空的有限状态集合、有穷的输入事件集合、状态转移函数、初始状态、终止状态的集合和同步变量集合;所述有限状态集合的元素为所述语义特征的状态和所述测试控制状态;所述状态转移函数为接收所述输入事件集合中的输入后,由所述有限状态集合中第一状态转移至所述有限状态集合中第二状态的映射函数;所述同步变量集合包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量;所述测试用例集合为未进行测试的测试用例集合。
所述状态转移函数具体为:
Figure BDA0002336222170000211
其中,矩阵中第1行至第15行和第1列至第15列均依次表示分析状态S0、存在漏洞状态S1、无漏洞状态S2、集合判断状态S3、终止状态S4、错误注入特征的状态T0、排序注入特征τ的状态T1、联合查询注入特征∪的状态T2、“与.真”注入特征∧T[--]的状态T3、“与.假”注入特征∧F的状态T4、“与.假”注入特征∧F--的状态T5、“或.真”注入特征∨T的状态T6、“或.假”注入特征∨F的状态T7、“IF.真”注入特征IF(T)的状态T8、“IF.假”注入特征IF(F)的状态T9和时间延迟注入特征TD(n)的状态T10
矩阵中的元素set=1表示从元素set=1所在行的状态转移到元素set=1所在列的状态的输入条件为测试用例集合不为空;矩阵中的元素r=1表示从元素r=1所在行的状态转移到元素r=1所在列的状态的输入条件为本轮测试中测试用例的响应页面与原始响应页面相似且页面信息与响应时间正常;矩阵中的元素r=0表示从元素r=0所在行的状态转移到元素r=0所在列的状态的输入条件为本轮测试中测试用例的响应页面发生变化、页面报错或相应时间异常;矩阵中的元素ε表示从元素ε所在行的状态转移到元素ε所在列的状态无需输入;矩阵中的元素0表示从元素0所在行的状态不能转移到元素0所在列的状态;矩阵中的元素t=0表示从元素t=0所在行的状态转移到元素t=0所在列的状态的输入条件为本轮测试对应的响应状态为T0;矩阵中的元素t=1表示从元素t=1所在行的状态转移到元素t=1所在列的状态的输入条件为本轮测试对应的响应状态为T1;矩阵中的元素t=2表示从元素t=2所在行的状态转移到元素t=2所在列的状态的输入条件为本轮测试对应的响应状态为T2;矩阵中的元素t=3表示从元素t=3所在行的状态转移到元素t=3所在列的状态的输入条件为本轮测试对应的响应状态为T3;矩阵中的元素t=6表示从元素t=6所在行的状态转移到元素t=6所在列的状态的输入条件为本轮测试对应的响应状态为T6;矩阵中的元素t=8表示从元素t=8所在行的状态转移到元素t=8所在列的状态的输入条件为本轮测试对应的响应状态为T8
所述检测模块403具体包括:
本轮测试所处状态获取单元,用于获取本轮测试所处的状态。
测试控制操作单元,用于当本轮测试所处的状态为S0、S1、S2或S3时,根据本轮测试所处的状态执行对应的测试控制操作,得到本轮测试的同步变量;所述同步变量包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量。
测试用例注入操作单元,用于当本轮测试所处的状态为T0、T1、T2、T3、T4、T5、T6、T7、T8或T9时,根据本轮测试所处的状态执行对应的测试用例注入操作,得到本轮测试的同步变量。
输入变量触发单元,用于根据本轮测试的同步变量,得到触发下一个状态的输入变量。
状态转移单元,用于根据所述输入变量,基于所述状态转移函数,进行状态转移操作,确定下一轮测试的状态。
漏洞证据获取单元,用于当本轮测试所处的状态为S4时,获得所有轮测试的同步变量,得到所有漏洞证据,结束检测。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种电力信息系统SQL注入漏洞检测方法,其特征在于,包括:
根据SQL语句的逻辑语义特征,获取SQL注入漏洞的测试用例的语义特征;不同的语义特征对应不同的测试动作;
根据所述语义特征,基于SQL注入漏洞黑盒渗透测试的规则,构建每个语义特征对应的测试用例以及安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括每个测试用例的响应状态以及状态转换规则;
根据所述测试用例,采用所述安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测,得到漏洞证据。
2.根据权利要求1所述的电力信息系统SQL注入漏洞检测方法,其特征在于,所述SQL注入漏洞的测试用例的语义特征包括:
错误注入特征E,表示造成数据库错误的注入特征;
排序注入特征τ,表示进行排序操作的注入特征;
联合查询注入特征∪,表示进行联合查询操作的注入特征;
“与.真”注入特征∧T[--],表示注释符可选的逻辑运算为与的真运算的注入特征,
“与.假”注入特征∧F,表示逻辑运算为与的假运算的注入特征;
“与.假”注入特征∧F--,表示以注释符结束的逻辑运算为与的假运算的注入特征;
“或.真”注入特征∨T,表示逻辑运算为或的真运算的注入特征;
“或.假”注入特征∨F,表示逻辑运算为或的假运算的注入特征;
“IF.真”注入特征IF(T),表示与数据库语句逻辑相同的注入特征;
“IF.假”注入特征IF(F),表示与数据库语句逻辑不同的注入特征;
时间延迟注入特征TD(n),表示进行时间间隔为n妙的时间延迟注入特征。
3.根据权利要求2所述的电力信息系统SQL注入漏洞检测方法,其特征在于,所述根据所述语义特征,基于SQL注入漏洞黑盒渗透测试的规则,构建每个语义特征对应的测试用例以及安全特征扩展有限状态机模型,具体包括:
根据所述语义特征,构建不同状态的语义特征对应的测试用例及所述测试用例对应的变体;所述变体为与所述测试用例具有相同结构和逻辑语义的测试用例;
获取测试控制状态;所述测试控制状态包括分析状态、存在漏洞状态、无漏洞状态、集合判断状态和终止状态;
根据所述语义特征和所述测试控制状态集合,确定所述安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括非空的有限状态集合、有穷的输入事件集合、状态转移函数、初始状态、终止状态的集合和同步变量集合;所述有限状态集合的元素为所述语义特征的状态和所述测试控制状态;所述状态转移函数为接收所述输入事件集合中的输入后,由所述有限状态集合中第一状态转移至所述有限状态集合中第二状态的映射函数;所述同步变量集合包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量;所述测试用例集合为未进行测试的测试用例集合。
4.根据权利要求3所述的电力信息系统SQL注入漏洞检测方法,其特征在于,所述状态转移函数具体为:
Figure FDA0002336222160000021
其中,矩阵中第1行至第15行和第1列至第15列均依次表示分析状态S0、存在漏洞状态S1、无漏洞状态S2、集合判断状态S3、终止状态S4、错误注入特征的状态T0、排序注入特征τ的状态T1、联合查询注入特征∪的状态T2、“与.真”注入特征∧T[--]的状态T3、“与.假”注入特征∧F的状态T4、“与.假”注入特征∧F--的状态T5、“或.真”注入特征∨T的状态T6、“或.假”注入特征∨F的状态T7、“IF.真”注入特征IF(T)的状态T8、“IF.假”注入特征IF(F)的状态T9和时间延迟注入特征TD(n)的状态T10
矩阵中的元素set=1表示从元素set=1所在行的状态转移到元素set=1所在列的状态的输入条件为测试用例集合不为空;矩阵中的元素r=1表示从元素r=1所在行的状态转移到元素r=1所在列的状态的输入条件为本轮测试中测试用例的响应页面与原始响应页面相似且页面信息与响应时间正常;矩阵中的元素r=0表示从元素r=0所在行的状态转移到元素r=0所在列的状态的输入条件为本轮测试中测试用例的响应页面发生变化、页面报错或相应时间异常;矩阵中的元素ε表示从元素ε所在行的状态转移到元素ε所在列的状态无需输入;矩阵中的元素0表示从元素0所在行的状态不能转移到元素0所在列的状态;矩阵中的元素t=0表示从元素t=0所在行的状态转移到元素t=0所在列的状态的输入条件为本轮测试对应的响应状态为T0;矩阵中的元素t=1表示从元素t=1所在行的状态转移到元素t=1所在列的状态的输入条件为本轮测试对应的响应状态为T1;矩阵中的元素t=2表示从元素t=2所在行的状态转移到元素t=2所在列的状态的输入条件为本轮测试对应的响应状态为T2;矩阵中的元素t=3表示从元素t=3所在行的状态转移到元素t=3所在列的状态的输入条件为本轮测试对应的响应状态为T3;矩阵中的元素t=6表示从元素t=6所在行的状态转移到元素t=6所在列的状态的输入条件为本轮测试对应的响应状态为T6;矩阵中的元素t=8表示从元素t=8所在行的状态转移到元素t=8所在列的状态的输入条件为本轮测试对应的响应状态为T8
5.根据权利要求4所述的电力信息系统SQL注入漏洞检测系统,其特征在于,所述根据所述测试用例,采用所述安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测,得到漏洞证据,具体包括:
获取本轮测试所处的状态;
当本轮测试所处的状态为S0、S1、S2或S3时,根据本轮测试所处的状态执行对应的测试控制操作,得到本轮测试的同步变量;所述同步变量包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量;
当本轮测试所处的状态为T0、T1、T2、T3、T4、T5、T6、T7、T8或T9时,根据本轮测试所处的状态执行对应的测试用例注入操作,得到本轮测试的同步变量;
根据本轮测试的同步变量,得到触发下一个状态的输入变量;
根据所述输入变量,基于所述状态转移函数,进行状态转移操作,确定下一轮测试的状态;
当本轮测试所处的状态为S4时,获得所有轮测试的同步变量,得到所有漏洞证据,结束检测。
6.一种电力信息系统SQL注入漏洞检测系统,其特征在于,包括:
语义特征获取模块,用于根据SQL语句的逻辑语义特征,获取SQL注入漏洞的测试用例的语义特征;不同的语义特征对应不同的测试动作;
测试用例及安全特征扩展有限状态机模型构建模块,用于根据所述语义特征,基于SQL注入漏洞黑盒渗透测试的规则,构建每个语义特征对应的测试用例以及安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括每个测试用例的响应状态以及状态转换规则;
检测模块,用于根据所述测试用例,采用所述安全特征扩展有限状态机模型对待检测系统的SQL注入漏洞进行检测,得到漏洞证据。
7.根据权利要求6所述的电力信息系统SQL注入漏洞检测系统,其特征在于,所述SQL注入漏洞的测试用例的语义特征包括:
错误注入特征E,表示造成数据库错误的注入特征;
排序注入特征τ,表示进行排序操作的注入特征;
联合查询注入特征∪,表示进行联合查询操作的注入特征;
“与.真”注入特征∧T[--],表示注释符可选的逻辑运算为与的真运算的注入特征,
“与.假”注入特征∧F,表示逻辑运算为与的假运算的注入特征;
“与.假”注入特征∧F--,表示以注释符结束的逻辑运算为与的假运算的注入特征;
“或.真”注入特征∨T,表示逻辑运算为或的真运算的注入特征;
“或.假”注入特征∨F,表示逻辑运算为或的假运算的注入特征;
“IF.真”注入特征IF(T),表示与数据库语句逻辑相同的注入特征;
“IF.假”注入特征IF(F),表示与数据库语句逻辑不同的注入特征;
时间延迟注入特征TD(n),表示进行时间间隔为n妙的时间延迟注入特征。
8.根据权利要求7所述的电力信息系统SQL注入漏洞检测系统,其特征在于,所述测试用例及安全特征扩展有限状态机模型构建模块具体包括:
测试用例构建单元,用于根据所述语义特征,构建不同状态的语义特征对应的测试用例及所述测试用例对应的变体;所述变体为与所述测试用例具有相同结构和逻辑语义的测试用例;
测试控制状态获取单元,用于获取测试控制状态;所述测试控制状态包括分析状态、存在漏洞状态、无漏洞状态、集合判断状态和终止状态;
安全特征扩展有限状态机模型构建单元,用于根据所述语义特征和所述测试控制状态集合,确定所述安全特征扩展有限状态机模型;所述安全特征扩展有限状态机模型包括非空的有限状态集合、有穷的输入事件集合、状态转移函数、初始状态、终止状态的集合和同步变量集合;所述有限状态集合的元素为所述语义特征的状态和所述测试控制状态;所述状态转移函数为接收所述输入事件集合中的输入后,由所述有限状态集合中第一状态转移至所述有限状态集合中第二状态的映射函数;所述同步变量集合包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量;所述测试用例集合为未进行测试的测试用例集合。
9.根据权利要求8所述的电力信息系统SQL注入漏洞检测系统,其特征在于,所述状态转移函数具体为:
Figure FDA0002336222160000061
其中,矩阵中第1行至第15行和第1列至第15列均依次表示分析状态S0、存在漏洞状态S1、无漏洞状态S2、集合判断状态S3、终止状态S4、错误注入特征的状态T0、排序注入特征τ的状态T1、联合查询注入特征∪的状态T2、“与.真”注入特征∧T[--]的状态T3、“与.假”注入特征∧F的状态T4、“与.假”注入特征∧F--的状态T5、“或.真”注入特征∨T的状态T6、“或.假”注入特征∨F的状态T7、“IF.真”注入特征IF(T)的状态T8、“IF.假”注入特征IF(F)的状态T9和时间延迟注入特征TD(n)的状态T10
矩阵中的元素set=1表示从元素set=1所在行的状态转移到元素set=1所在列的状态的输入条件为测试用例集合不为空;矩阵中的元素r=1表示从元素r=1所在行的状态转移到元素r=1所在列的状态的输入条件为本轮测试中测试用例的响应页面与原始响应页面相似且页面信息与响应时间正常;矩阵中的元素r=0表示从元素r=0所在行的状态转移到元素r=0所在列的状态的输入条件为本轮测试中测试用例的响应页面发生变化、页面报错或相应时间异常;矩阵中的元素ε表示从元素ε所在行的状态转移到元素ε所在列的状态无需输入;矩阵中的元素0表示从元素0所在行的状态不能转移到元素0所在列的状态;矩阵中的元素t=0表示从元素t=0所在行的状态转移到元素t=0所在列的状态的输入条件为本轮测试对应的响应状态为T0;矩阵中的元素t=1表示从元素t=1所在行的状态转移到元素t=1所在列的状态的输入条件为本轮测试对应的响应状态为T1;矩阵中的元素t=2表示从元素t=2所在行的状态转移到元素t=2所在列的状态的输入条件为本轮测试对应的响应状态为T2;矩阵中的元素t=3表示从元素t=3所在行的状态转移到元素t=3所在列的状态的输入条件为本轮测试对应的响应状态为T3;矩阵中的元素t=6表示从元素t=6所在行的状态转移到元素t=6所在列的状态的输入条件为本轮测试对应的响应状态为T6;矩阵中的元素t=8表示从元素t=8所在行的状态转移到元素t=8所在列的状态的输入条件为本轮测试对应的响应状态为T8
10.根据权利要求9所述的电力信息系统SQL注入漏洞检测系统,其特征在于,所述检测模块具体包括:
本轮测试所处状态获取单元,用于获取本轮测试所处的状态;
测试控制操作单元,用于当本轮测试所处的状态为S0、S1、S2或S3时,根据本轮测试所处的状态执行对应的测试控制操作,得到本轮测试的同步变量;所述同步变量包括表示本轮测试对应的响应状态的变量、表示本轮测试中测试用例的响应页面与原始响应页面是否发生异常的变量、表示漏洞证据数量的变量和表示测试用例集合是否为空的布尔变量;
测试用例注入操作单元,用于当本轮测试所处的状态为T0、T1、T2、T3、T4、T5、T6、T7、T8或T9时,根据本轮测试所处的状态执行对应的测试用例注入操作,得到本轮测试的同步变量;
输入变量触发单元,用于根据本轮测试的同步变量,得到触发下一个状态的输入变量;
状态转移单元,用于根据所述输入变量,基于所述状态转移函数,进行状态转移操作,确定下一轮测试的状态;
漏洞证据获取单元,用于当本轮测试所处的状态为S4时,获得所有轮测试的同步变量,得到所有漏洞证据,结束检测。
CN201911357101.3A 2019-12-25 2019-12-25 一种电力信息系统sql注入漏洞检测方法及系统 Active CN111064735B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911357101.3A CN111064735B (zh) 2019-12-25 2019-12-25 一种电力信息系统sql注入漏洞检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911357101.3A CN111064735B (zh) 2019-12-25 2019-12-25 一种电力信息系统sql注入漏洞检测方法及系统

Publications (2)

Publication Number Publication Date
CN111064735A true CN111064735A (zh) 2020-04-24
CN111064735B CN111064735B (zh) 2021-10-15

Family

ID=70303560

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911357101.3A Active CN111064735B (zh) 2019-12-25 2019-12-25 一种电力信息系统sql注入漏洞检测方法及系统

Country Status (1)

Country Link
CN (1) CN111064735B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306889A (zh) * 2020-11-23 2021-02-02 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器
CN113111008A (zh) * 2021-05-12 2021-07-13 中国工商银行股份有限公司 测试用例生成方法及装置
CN113127366A (zh) * 2021-04-28 2021-07-16 芜湖雄狮汽车科技有限公司 基于模型的矩阵自动化测试方法及计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102831345A (zh) * 2012-07-30 2012-12-19 西北工业大学 Sql注入漏洞检测中的注入点提取方法
US8381026B2 (en) * 2009-06-22 2013-02-19 Citrix Systems, Inc. Systems and method for transaction stall detection and propagating the result in a multi-core architecture
US20140283033A1 (en) * 2013-03-15 2014-09-18 Kunal Anand Systems and methods for tokenizing user-generated content to enable the prevention of attacks
CN104184728A (zh) * 2014-08-14 2014-12-03 电子科技大学 一种Web应用系统的安全检测方法及安全检测装置
CN107292170A (zh) * 2016-04-05 2017-10-24 阿里巴巴集团控股有限公司 Sql注入攻击的检测方法及装置、系统
CN110581864A (zh) * 2019-11-11 2019-12-17 北京安博通科技股份有限公司 一种sql注入攻击的检测方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8381026B2 (en) * 2009-06-22 2013-02-19 Citrix Systems, Inc. Systems and method for transaction stall detection and propagating the result in a multi-core architecture
CN102831345A (zh) * 2012-07-30 2012-12-19 西北工业大学 Sql注入漏洞检测中的注入点提取方法
US20140283033A1 (en) * 2013-03-15 2014-09-18 Kunal Anand Systems and methods for tokenizing user-generated content to enable the prevention of attacks
CN104184728A (zh) * 2014-08-14 2014-12-03 电子科技大学 一种Web应用系统的安全检测方法及安全检测装置
CN107292170A (zh) * 2016-04-05 2017-10-24 阿里巴巴集团控股有限公司 Sql注入攻击的检测方法及装置、系统
CN110581864A (zh) * 2019-11-11 2019-12-17 北京安博通科技股份有限公司 一种sql注入攻击的检测方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
LEI LIU ET AL: "Exposing SQL Injection Vulnerability through Penetration Test Based on Finite State Machine", 《2016 2ND IEEE INTERNATIONAL CONFERENCE ON COMPUTER AND COMMUNICATIONS》 *
文 硕等: "基于策略推导的访问控制漏洞测试用例生成方法", 《计 算 机 学 报》 *
李 栋等: "基于扩展 FSM 的 Web 应用安全测试研究", 《计算机应用与软件》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306889A (zh) * 2020-11-23 2021-02-02 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器
CN112306889B (zh) * 2020-11-23 2023-10-20 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器
CN113127366A (zh) * 2021-04-28 2021-07-16 芜湖雄狮汽车科技有限公司 基于模型的矩阵自动化测试方法及计算机可读存储介质
CN113127366B (zh) * 2021-04-28 2023-08-15 芜湖雄狮汽车科技有限公司 基于模型的矩阵自动化测试方法及计算机可读存储介质
CN113111008A (zh) * 2021-05-12 2021-07-13 中国工商银行股份有限公司 测试用例生成方法及装置
CN113111008B (zh) * 2021-05-12 2024-02-23 中国工商银行股份有限公司 测试用例生成方法及装置

Also Published As

Publication number Publication date
CN111064735B (zh) 2021-10-15

Similar Documents

Publication Publication Date Title
CN111064735B (zh) 一种电力信息系统sql注入漏洞检测方法及系统
Li et al. Block: a black-box approach for detection of state violation attacks towards web applications
Xue et al. Detection and classification of malicious JavaScript via attack behavior modelling
CN107292170B (zh) Sql注入攻击的检测方法及装置、系统
Akrout et al. An automated black box approach for web vulnerability identification and attack scenario generation
CN114866358B (zh) 一种基于知识图谱的自动化渗透测试方法及系统
Xiao et al. An approach for SQL injection detection based on behavior and response analysis
CN113098887A (zh) 一种基于网站联合特征的钓鱼网站检测方法
Zhang et al. ART4SQLi: The ART of SQL injection vulnerability discovery
Zhuo et al. Long short‐term memory on abstract syntax tree for SQL injection detection
RU2659482C1 (ru) Способ защиты веб-приложений при помощи интеллектуального сетевого экрана с использованием автоматического построения моделей приложений
US20230222223A1 (en) Computer-implemented method for testing the cybersecurity of a target environment
Zhuang et al. Just-in-time defect prediction based on AST change embedding
Alidoosti et al. Evaluating the web‐application resiliency to business‐layer DoS attacks
Meena Siwach Anomaly detection for web log data analysis: a review
CN116663018A (zh) 一种基于代码可执行路径的漏洞检测方法及装置
Zhang et al. Research on SQL injection vulnerabilities and its detection methods
CN107368427B (zh) 一种基于自适应随机测试的Sql注入漏洞自动检测平台及方法
Shi et al. A new approach for SQL-injection detection
Praveen et al. Nosql injection detection using supervised text classification
Wang et al. A model-based behavioral fuzzing approach for network service
US10515219B2 (en) Determining terms for security test
Lin et al. Novel JavaScript malware detection based on fuzzy Petri nets
Wang et al. A model-based fuzzing approach for DBMS
Khan Detecting phishing attacks using nlp

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210202

Address after: No.38, Tongyan Road, Haihe Education Park, Jinnan District, Tianjin

Applicant after: NANKAI University

Applicant after: STATE GRID TIANJIN ELECTRIC POWER Co.

Applicant after: STATE GRID CORPORATION OF CHINA

Address before: No.38, Tongyan Road, Haihe Education Park, Jinnan District, Tianjin

Applicant before: NANKAI University

Applicant before: STATE GRID TIANJIN ELECTRIC POWER Co.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240220

Address after: 300384 No. 8, Haitai Huake 4th Road, Binhai New Area, Tianjin

Patentee after: ELECTRIC POWER SCIENCE & RESEARCH INSTITUTE OF STATE GRID TIANJIN ELECTRIC POWER Co.

Country or region after: China

Patentee after: STATE GRID TIANJIN ELECTRIC POWER Co.

Patentee after: STATE GRID CORPORATION OF CHINA

Patentee after: NANKAI University

Address before: No.38, Tongyan Road, Haihe Education Park, Jinnan District, Tianjin

Patentee before: NANKAI University

Country or region before: China

Patentee before: STATE GRID TIANJIN ELECTRIC POWER Co.

Patentee before: STATE GRID CORPORATION OF CHINA