一种双向流量的SQL注入攻击检测方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201810072117.9
(22)申请日 2018.01.25
(71)申请人 华东师范大学
地址 200241 上海市闵行区东川路500号
(72)发明人 陈铭松 顾海峰 王红祥 胡铭 
段文雪 
(74)专利代理机构 上海蓝迪专利商标事务所
(普通合伙) 31215
代理人 徐筱梅 张翔
(51)Int.Cl.
H04L  29/06(2006.01)
(54)发明名称
一种双向流量的SQL注入攻击检测方法
(57)摘要
本发明公开了一种双向流量的SQL注入攻击
检测方法,包括以下步骤:步骤一:使用一级正则
表达式匹配并抓取可能含有SQL注入攻击的网络
流量;步骤二:使用二级正则表达式对抓取到的
网络流量进行行为判定分析;步骤三:通过使用
第三级正则表达式对确认的SQL注入攻击流量进
数据提取。本发明双向流量的行为判定分析,
通过多级正则表达式过滤出真正成功的SQL注入
攻击,同时通过第三级正则表达式提取出由于成
功SQL注入攻击导致泄漏的用户信息数据,从而
体现出SQL注入攻击的危害性以及该SQL注入攻
击检测方法的有效性。权利要求书1页  说明书9页  附图1页CN 108521392 A 2018.09.11
C N  108521392
A
1.一种双向流量的SQL注入攻击检测方法,其特征在于,该方法包括以下步骤:
步骤1:使用一级正则表达式匹配并抓取含有疑似SQL注入攻击的网络流量;
步骤2:使用二级正则表达式对抓取到的含有疑似SQL注入攻击网络流量进行行为判定分析,确认SQL注入攻击流量;
步骤3:使用第三级正则表达式对确认的SQL注入攻击流量中所含泄漏的数据信息进行提取。
2.如权利要求1所述的SQL注入攻击检测方法,其特征在于,所述一级正则表达式包括:针对基于Boolean的SQL注入攻击的正则表达式、针对基于Time的SQL注入攻击的正则表达式、针对基于Error的SQL注入攻击的正则表达式、针对基于Union的SQL注入攻击的正则表达式和针对基于Stack的SQL注入攻击的正则表达式;其中,
所述针对基于Boolean的SQL注入攻击的正则表达式匹配并抓取采用Boolean方式的SQL注入攻击的流量;
所述针对基于Time的SQL注入攻击的正则表达式匹配并抓取采用Time延时注入方式的SQL注入攻击的流量;
所述针对基于Error的SQL注入攻击的正则表达式匹配并抓取采用Error错误回显注入方式的SQL注入攻击的流量;
所述针对基于Union的SQL注入攻击的正则表达式匹配并抓取采用Union方式在正常SQL语句中追加一段Union联合查询语句的SQL注入攻击的流量;
所述针对基于Stack的SQL注入攻击的正则表达式匹配并抓取采用Stack方式在正常SQL语句中插入或追加一段以分号开始的SQL查询语句的SQL注入攻击的流量。
3.如权利要求1所述的SQL注入攻击检测方法,其特征在于,所述二级正则表达式包括:针对SQL注入攻击的通用正则表达式、针对基于Boolean的SQL注入攻击的正则表达式、基于Time的SQL注入攻击的正则表达式和针对基于Error的SQL注入攻击的正则表达式。
4.如权利要求1所述的SQL注入攻击检测方法,其特征在于,所述行为判定分析包括:首先分析流量中会话的请求数据,从请求数据中匹配到符合二级正则表达式的字符串,然后结合流量中会话的响应数据信息,搜索响应数据信息中是否含有同样的所述表达式的字符串,如果在响应数据信息中含有同样的字符串,则该SQL注入攻击被判定为一次成功的攻击,否则该SQL注入攻击被判定为一次失败的攻击;其中,所述在响应数据信息中含有的同样的字符串称为SQL  注入攻击的攻击标识或特征字符串。
5.如权利要求1所述的SQL注入攻击检测方法,其特征在于,所述第三级正则表达式是以 SQL  注入攻击的攻击标识即特征字符串作为正则匹配对象的正则表达式。
权 利 要 求 书1/1页CN 108521392 A
一种双向流量的SQL注入攻击检测方法
技术领域
[0001]本发明属于计算机技术领域,涉及正则表达式技术、HTTP协议以及SQL注入攻击技术,尤其涉及到了对SQL注入攻击的行为判定分析,并将判定为成功的SQL注入攻击的流量进一步分析提取其中泄漏的数据信息,能够体现出SQL注入攻击的危害性以及该SQL注入攻击检测方法的有效性。
背景技术
[0002]正则表达式(Regular Expression)是一个用于匹配符合某种指定规则的字符串的表达式,它通常也被称作为pattern。正则表达式的应用场景非常多,例如用于检索、替换符合指定规则/pattern的字符串文本,或用于验证某字符串是否符合指定的特征。正则表达式将一系列符合某个句法规则的字符串文本使用单个字符串表示,因此能够使用正则表达式定义字符串匹配规则。
[0003]HTTP协议是基于请求与响应模式的、无状态的web通信协议,它是一个属于应用层的协议。当浏览器给web服务器发送了一个Request请求,web服务器接到Request请求后进行相应的处理,然后产生相应的Response响应发送给浏览器,浏览器解析Response响应中的HTML即可展现出网页给用户。HTTP协议的请求分为三个部分:请求行、请求头以及请求体。请求行中的方法(Method)包含有GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT以及OPTIONS。而这其中的GET和POST是最常见的方法。HTTP协议的响应也分为三个部分:响应行、响应头以及响应体。
[0004]SQL注入攻击的类型基本可以分为五种类型:基于Boolean的盲注、基于Time的盲注、基于Error的错误回显的SQL注入攻击、基于Union查询的SQL注入攻击以及基于Stack查询的SQL注入攻击。基于Boolean的盲注主要是在正常的SQL语句中插入或追加一段逻辑运算的语句,包含AND、OR、OR NOT等布尔运算符以及MAKE_SET、ELT、IFF等数据库内置函数等特征。基于Time的盲注(延时注入方式)主要通过在SQL语句中插入或追加一些数据库中的时间函数来延迟SQL语句的执行,包含了例如SLEEP、BENCHMARK、GENERATE_SERIES、WAITFOR DELAY、REGEXP_SUBSTRING等时间函数的特征。基于Error的错误回显的SQL注入攻击主要通过在SQL语句中插入或追加一些特殊的数据库操作语句,导致SQL语句在数据库中执行时出现运行时错误并将错误信息返回给客户端的方式,常见的SQL查询语句运行时报错的函数有EXP、JSON_KEYS、EXTRACTVALUE、UPDATEXML、ROW、CONVERT、XMLTYPE、DUTL_INADDR、FLOOR 等函数。基于Union查询的SQL注入攻击需要在正
常的语句中追加一段Union联合查询语句,非法地获取被攻击应用服务程序的数据库中重要数据信息,达到有效地进行SQL注入攻击的目的。因此,基于Union查询的SQL注入攻击最大的特征是存在Union查询语句。基于Stack 查询的SQL注入攻击需要在正常的语句中插入或追加一段以分号“;”开始的SQL查询语句,有效地覆盖前面的查询结果而获得最后一条查询语句的输出结果,达到利用SQL注入漏洞进行非法地窃取数据信息的目的。因此,基于Stack查询的SQL注入攻击最大的特征是存在以“;”开始的SQL查询语句。
发明内容
[0005]本发明的目的是提出一种双向流量的SQL注入攻击检测方法,该方法使用多级正则表达式抓取可能含有SQL注入攻击的网络流量并对抓取到的网络流量进行行为判定分析,从而可以判定SQL注入攻击是否为成功的攻击,并以此来提取由成功的SQL注入攻击导致泄漏的数据信息。
[0006]实现本发明目的的具体技术方案是:
[0007]一种双向流量的SQL注入攻击检测方法,特点是:该方法包括以下步骤:[0008]步骤1:使用一级正则表达式匹配并抓取含有疑似SQL注入攻击的网络流量;[0009]步骤2:使用二级正则表达式对抓取到的含有疑似SQL注入攻击网络流量进行行为判定分析,确认SQL注入攻击流量;
[0010]步骤3:使用第三级正则表达式对确认的SQL注入攻击流量中所含泄漏的数据信息进行提取。
[0011]所述一级正则表达式包括:针对基于Boolean的SQL注入攻击的正则表达式、针对基于Time的SQL注入攻击的正则表达式、针对基于Error的SQL注入攻击的正则表达式、针对基于Union的SQL注入攻击的正则表达式和针对基于Stack的SQL注入攻击的正则表达式;其中,
[0012]所述针对基于Boolean的SQL注入攻击的正则表达式匹配并抓取采用Boolean方式的SQL注入攻击的流量;
[0013]所述针对基于Time的SQL注入攻击的正则表达式匹配并抓取采用Time延时注入方式的SQL注入攻击的流量;
[0014]所述针对基于Error的SQL注入攻击的正则表达式匹配并抓取采用Error错误回显注入方式的SQL注入攻击的流量;
[0015]所述针对基于Union的SQL注入攻击的正则表达式匹配并抓取采用Union方式在正常SQL语句中追加一段Union联合查询语句的SQL注入攻击的流量;
[0016]所述针对基于Stack的SQL注入攻击的正则表达式匹配并抓取采用Stack方式在正常SQL语句中插入或追加一段以分号开始的SQL查询语句的SQL注入攻击的流量。[0017]所述二级正则表达式包括:针对SQL注入攻击的通用正则表达式、针对基于Boolean的SQL注入攻击的正则表达式、基于Time的SQL注入攻击的正则表达式和针对基于Error的SQL注入攻击的正则表达式。
[0018]所述行为判定分析是用来确定流量中哪些SQL注入攻击在被攻击的应用服务程序上被成功地执行了,导致被攻击的应用服务程序出现数据泄漏。该行为判定分析过程是:首先分析流量中会话的请求数据,从请求数据中匹配到符合二级正则表达式的字符串,然后结合流量中会话的响应数据信息,搜索响应数据信息中是否含有同样的所述表达式的字符串,如果在响应数据信息中含有同样的字符串,则该SQL注入攻击被判定为一次成功的攻击,否则该SQL注入攻击被判定为一次失败的攻击;这种双向流量的分析(即同时分析流量中的请求和响应数据)能够有效地提高检测SQL注入攻击的准确率。
[0019]所述第三级正则表达式是以SQL注入攻击的攻击标识(特征字符串)作为正则匹配对象的正则表达式。
[0020]本发明提出的双向流量的SQL注入攻击检测方法,使用一级正则表达式抓取可能含有SQL注入攻击的流量,然后利用二级正则表达式对其请求数据和响应数据进行双向的行为判定分析来确认一次SQL注入攻击是否为成功的攻击。
[0021]本发明的有益效果:可以高效地抓取网络中存在的可疑SQL注入攻击的流量,同时对抓取到的流量中会话的请求数据和响应数据进行双向的行为判定分析来确认一次SQL注入攻击是否为成功的攻击,对于成功的SQL注入攻击提取泄漏出来的数据信息。这不仅能够更加准确地检测出SQL注入攻击,而且提取出的泄漏数据可以体现该SQL注入攻击的危害性以及该SQL注入攻击检测方法的有效性。
附图说明
[0022]图1为本发明流程图;
[0023]图2为本发明中抓取的SQL注入攻击的样例图;
具体实施方式
[0024]以下结合具体实施例和附图,对本发明作进一步的详细说明。
[0025]本发明的一种双向流量的SQL注入攻击检测方法,包括以下步骤:
[0026]步骤1:使用一级正则表达式匹配并抓取可能含有SQL注入攻击的网络流量;[0027]步骤2:使用二级正则表达式对抓取到的网络流量进行行为判定分析,确认SQL注入攻击流量;
[0028]步骤3:通过使用第三级正则表达式对确认的SQL注入攻击流量进行数据提取。本发明中针对基于Boolean的SQL注入攻击的一级正则表达式包括:
[0029]Boolean_based_model=\
[0030][
[0031]"^(POST|GET).*?(OR|AND)\s+\d+=\d+",
[0032]"^(POST|GET).*?OR\s+NOT\s+\d+=\d+",
[0033]"^(POST|GET).*?(OR|AND){0,1}\s+MAKE_SET\(\d+=\d+,\d+\)", [0034]"^(POST|GET).*?(OR|AND){0,1}\s+ELT\(\d+=\d+,\d+\)",
[0035]"^(POST|GET).*?(OR|AND)\s+(\d+=\d+)\*\d+",
[0036]"^(POST|GET).*?IIF\(\d+=\d+,\d+,\d+/\d+\)",
[0037]]
[0038]本发明中针对基于Time的SQL注入攻击的一级正则表达式包括:
[0039]Time_based_model=\
[0040][
[0041]"^(POST|GET).*?SLEEP\(\d+\)",
[0042]"^(POST|GET).*?WAITFOR\s+DELAY\s+'[\d:]+'",
[0043]"^(POST|GET).*?BENCHMARK\(",
[0044]"^(POST|GET).*?GENERATE_SERIES\(\d+",
[0045]"^(POST|GET).*?(SYSUSERS\s+AS\s+SYS\d+,?){3,}",
[0046]"^(POST|GET).*?DBMS_PIPE\.RECEIVE_MESSAGE\(",

本文发布于:2024-09-22 22:33:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/462707.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:注入   攻击   数据   流量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议