基于通用规则的SQL注入攻击检测与防御系统的研究
2017-03-23王苗苗钱步仁许莹莹王雪凤
王苗苗,钱步仁,许莹莹,王雪凤
(1.中国石油大学(北京)地球物理与信息工程学院,北京 102249;2.国网山东电力公司招远市供电公司 山东 招远265400)
基于通用规则的SQL注入攻击检测与防御系统的研究
王苗苗1,钱步仁1,许莹莹1,王雪凤2
(1.中国石油大学(北京)地球物理与信息工程学院,北京 102249;2.国网山东电力公司招远市供电公司 山东 招远265400)
Web技术是通过Web采用HTTP或HTTPS协议访问外部并对外部请求提供服务和响应的应用程序,Web应用日益成为软件开发的主流之一,随之而来的是,Web应用程序中存在的多种安全漏洞渐渐显露出来,这些给人们的生活、工作、学习都带来了巨大的损失。面对Web网站存在的种种安全漏洞问题,文章通过对大量SQL注入攻击报文的攻击特征进行总结分析,结合SQL注入攻击的攻击特征和攻击原理,提出了一种基于通用规则的SQL注入攻击检测与防御的方法,并利用SQL注入检测工具Sqlmap进行SQL注入攻击模拟同时对网络流量捕捉抓包,对上述检测防御方法进行验证。SQL注入检测工具利用自带网络爬虫通过HTTP协议和URL链接来遍历网页并获取页面数据信息,然后进行SQL注入尝试并通过抓包工具捕捉网络攻击流量,提取攻击特征,总结通用规则,更新规则库,最终结合IPS入侵防御系统告警或阻断来提升网络环境的安全性。实验测试表明,该方法可有效检测SQL注入攻击漏洞。
SQL注入漏洞;检测工具;通用规则;特征提取;入侵检测系统
随着计算机网络的普及化,互联网给人们的生活、工作、学习等带来了极大的便利,同时也产生了越来越多的网络安全危害。Web技术是目前应用度最高的互联网应用技术,它是用户向服务器提交请求查询并得到服务器响应,获得请求页面的技术总称[1]。Web技术是通过Web采用HTTP或HTTPS协议访问外部并对外部请求提供服务和响应的应用程序,客户端通过浏览器请求访问Web服务器,通过统一资源标识符(URI)标识、定位服务器上的数据信息。Web应用的易用性好、信息共享度高、扩展性好以及多功能复用性等多种优点使互联网成为一项必备的社会基本设施,Web应用也日益成为软件开发的主流之一[2]。
在我国针对网站SQL注入漏洞的检测和研究,特别是通过网络爬虫查找各网页中所含的漏洞的研究并不是很多,而且还普遍存在着对SQL注入漏洞检测的高漏报率、低准确率等现象,并且多半相关应用都没有详细分析SQL注入检测与防御技术的原理。文中针对SQL注入漏洞检测与防御的方法,利用SQL注入检测工具中自带的网络爬虫覆盖率较高的特点,对某些链接进行了检测;通过对网络攻击流量的抓取及攻击特征的提取,提出了总结更新SQL注入攻击对应的漏洞通用规则库,并将该通用规则应用到SQL注入攻击的检测中,最终结合IPS入侵防御系统的告警或阻断动作来提升网络环境的安全性,降低了SQL注入检测防御系统检测的漏报率,并将该系统相关的核心技术进行了分析。
1 SQL注入攻击检测与防御系统相关技术
1.1 SQL注入攻击
目前虽然还没有对SQL注入攻击技术进行标准定义,但微软中国技术中心从两个方面进行了阐述[3]:
1)脚本注入式的攻击;
2)恶意用户输入用来影响被执行的SQL脚本。
利用SQL注入攻击,恶意攻击者就可以获得并且掌控整个网站的内容,同时可以篡改网站后端及底层数据库数据,更甚至可以给整个网站注入木马程序,从而通过获取的管理员权限任意浏览获取网站上的文件数据或者给网页挂上木马和各种恶意程序,最终达到控制整个服务器的目的[4]。
1.2 SQL注入攻击方法
当我们访问某个需要用户提交数据登录的网页时,Web应用服务程序一般都会通过向数据库发出请求查询命令,验证该用户登录信息及身份是否有效。其检验证的方法大多数可能就是在请求程序中构造SQL查询语句,例如:
“Select*from Users where UserName=‘”+user +“’and PassWord=‘”+password+“’”;
这里,在用户登录页面上需要输入的用户名和密码就是替代user和password的信息。假使我们使用的登录用户名为Admin,密码为1234,那么Web应用向数据库服务器发送请求的SQL语句为:
Select*from Users where UserName=‘Admin’and PassWord=‘1234’;
Web应用程序期望数据库能够返回一组与所登录用户相对应的数据。SQL语言与其他编程语言相似,也使用某些字符来表示对某段代码进行注释或忽略。其中,符号“--”为单行注释符,该符号代表数据库服务器可以忽略掉该注释付后面的所有内容,该注释符极其有效,下面就简单介绍一下它的特殊作用。如果我们不在user中输入Admin,而是输入:
Admin’or 1=1--
这样,数据库的服务器接收应用程序发送的SQL语句就变为:
Select*from Users where UserName=‘Admin’or 1=1--‘and PassWord=‘1234’;
我们知道,1=1的结果总是为真(true),由于or运算符中两个操作数只要有一个为真,结果就会为真,因此上面提交的查询语句会返回Users表中的全部信息。即便所获取的用户信息有可能并不完全显示给用户,但我们已经能够利用所获取的信息成功登录到网站上了,这种情况,我们就称之为SQL注入攻击。
1.3 IPS入侵防御系统简介
入侵防御系统(IPS)[5]是指不仅能够检测到攻击入侵的发生,而且能利用一定的响应方式,实时地中止入侵行为的发生和发展,实时地保护信息系统不受实质性攻击的一种智能化的安全体系。IPS是一种主动的、积极的入侵防范、阻止系统,其设计旨在预先对入侵活动和攻击性网络流量进行检测和拦截,避免其造成任何损失,而不是简单地在恶意流量传送时或传送后才发出警报。它部署在网络的进出口处,当它检测到攻击企图后,它会自动地将攻击包丢掉或采取措施将攻击源阻断[6]。文中通过将通用规则整合到规则库中,然后将IPS系统中规则库升级,最终对攻击报文进行告警或阻断。
2 SQL注入攻击检测防御系统结构
文章主要研究的基于通用规则的SQL注入攻击检测预防与防御系统是搭建在IPS系统之上的,其框架结构如图1所示。
图1 SQL注入攻击检测防御系统结构
2.1 技术储备
技术储备部分主要分析总结SQL语言的语言特点及语法操作,以便对SQL注入语言中中的异常字段进行识别;分析各大主流数据库的特性,以便了解各大数据库特有的语法特性及语句特征;分析常见攻击扫描工具,利用各个扫描工具进行SQL注入攻击实验攻防模拟,并抓取攻防过程中的数据流量,以便能够根据数据流量提取出SQL注入攻击特征的检测字符;分析实际SQL注入攻击方式,将以上过程所得到的研究成果形成通用化、层次化的SQL注入攻击模型,即通用规则,并将该模型形成相应的规则库语言,在实验环境下进行攻防测试,验证形成的攻击模型的可行性,进而验证该系统下SQL注入攻击检测与防御的性能。如达到要求,则将该模型特征语言精简提炼并更新到IPS系统的特征库中。下面详细介绍一下通用化、层次化的SQL注入攻击模型。
2.1.1 SQL注入攻击模型
SQL注入攻击模型也就是通用化、层次化的通用规则。在开始规则特征提取形成通用规则之前,先简单介绍一下正则表达式。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串[7]。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑[8]。
通过实验模拟抓取报文及设备现存攻击报文,分析总结了SQL注入攻击典型类型的通用规则,并利用正则表达式进行描述。
在本文中将详细介绍一下SQL注入典型的攻击类型中的盲注、建表操作和跨表查询。
“盲注”,就是在服务器没有错误回显时需要攻击者手动进行的暴力猜解,不停地探测数据库相关数据信息的值而完成的注入攻击。因为缺少错误信息,服务器没有错误回显,这对于攻击者来说就缺少了极其重要的“调试信息”,这就需要攻击者必须找到一种方法来验证注入的SQL语句是否得到了成功执行[9]。
1)布尔盲注
利用and 1=1、or 1=1、and 1=2判断是否存在注入点进行抓包,通过扫描进行的布尔盲注。
正则表达式的规则特征:
2)时间盲注
基于时间的盲注是一种高级技巧,在不同的数据库中,都有着类似于BENCHMARK()的延时函数,通过延时函数的延时时间来进行时间盲注[10]。
总结正则表达式的规则特征:
所谓“建表操作”就是在用户输入时额外增加语句进行建表操作,使后台数据库中新增恶意用户添加的新的数据表等内容[11]。
总结正则表达式的规则特征:
跨表查询[12],就是将跨越数据库的两个表联合进行数据查询操作,将两个表中各取得的数据合并整合为一个新的数据集,恶意用户就可通过跨表查询得到数据库的各个表中的信息,从而暴力破解所有列名的值等危害。
总结正则表达式的规则特征为:
2.1.2 更新SQL注入攻击通用规则规则库
特征库记录了设备可识别的攻击特征、病毒特征以及针对需要采取的相应动作等信息,因此对于安全设备来说,必须保证特征库能够实时更新升级。将上述总结的SQL注入攻击特征的通用规则实时更新到IPS入侵检测系统的规则库中,然后在规则库中进行攻击报文的回放检测,等待设备给出相关动作。
2.2 设备处理
在现实环境中运用更新好的IPS入侵检测系统特征库进行实战检测,将网络流量进行预处理,处理成设备可以识别的数据报文,然后大量投放到设备中通过与系统中通用规则进行特征匹配。如果检测的网络流量符合SQL注入攻击形成的通用模型,规则库就会做出相应反应,流量被阻断并上报设备发生攻击;若该网络流量并不匹配SQL注入攻击模型,则规则库会对流量不作处理,并上报设备放行该流量。
3 实验模拟SQL注入攻击
通过利用Sqlmap检测工具进行实验模拟,抓取攻击流量,验证该系统是否可用。
Sqlmap[13]是一个自动化的SQL注入工具,其主要功能是通过自带网络爬虫进行扫描,发现并利用给定URL中的SQL注入漏洞,目前支持的数据库是MS SQL Server、My SQL、ORACLE和POSTGRESQL。Sqlmap采用四种独特的SQL注入技术,分别是盲推理SQL注入、UNION查询SQL注入、堆查询和基于时间的SQL盲注入。网络爬虫[14]是通过网页的链接地址来寻找网页的程序,它从网站的某一个页面开始逐渐探寻网页的内容,并持续循环下去,直到把整个网站所有的网页都抓取完或到达预期目标为止。本文中利用Sqlmap进行SQL注入攻击测试,在攻击同时利用Wireshark抓包工具进行抓包,然后数据包中的攻击特征,提取通用规则。
以下是利用Sqlmap进行SQL注入漏洞检测的一个实例。
对于目标网站http://****.cn/shownews.php?id= 7519,首先我们将抓包工具WireShark和浏览器设置相同的代理端口IP地址,然后点击start开始抓取SqlMap进行注入的攻击流量。
1)SQL注入扫描
输入要扫描的Web应用地址,Sqlmap检测工具将逐一扫描网站下的所有链接,根据自带网络爬虫判断出页面中是否存在SQL注入点;
2)后台管理扫描
输入要扫描的Web应用地址,系统逐一扫描网站下的所有链接,判断出各链接的存在状态,再由链接状态判断是否存在后台管理的可能;
3)获取数据库信息
输入存在SQL注入的地址,系统将反馈数据库名称和数据库版本信息,判断当前数据库是否支持多句查询和子查询,判断当前连接的数据库用户及用户的权限;
4)获取表名及列名
输入存在SQL注入的地址,系统将猜解数据库中表名及表中数据量,同时系统可以对某个表中的列进行猜解,猜解得到表中列名及数据量,如图2所示。
图2 Sqlmap获取数据库字段名称和类型
5)获取数据内容
在上步的基础上进一步探索数据表中username和password获取用户名和密码等个人信息,其结果如图3所示。
图3 Sqlmap获取数据库字段值
在进行 SqlMap的注入过程中,我们通过WireShark进行抓包,分析其中一条攻击流量,数据流量如图4所示。
图4 Wireshatk抓包数据流量
对设备进行调试配置,将全部攻击流量投入设备中进行报文回放,看设备界面是否有命中信息,如图5所示。
图5 设备命中信息
从图5中可以看出回放的报文命中了规则库中的两个规则(SID2000135和SID2000132),同时设备检测出该报文中攻击特征的名称为SQL注入攻击,IPS系统对该流量采取的动作是Alert告警已提醒人员注意查看该流量。因此,图5验证了该系统的可行性。
4 实验测试与结果
通过实验验证基于通用规则的SQL注入攻击检测与防御系统对攻击的检测、防御能力。实验中,首先通过实验抓取大量SQL注入攻击报文,将抓取报文及系统现有SQL注入报文编码并存入设备中待设备回放,将通用规则更新至IPS规则库中,升级设备,回放攻击报文,看设备是否识别攻击做出告警或者阻断操作,最后计算检出率。
4.1 实验测试
进行大量报文的回放,同时连接虚拟机,并在虚拟机中打开Ixia应用,连接设备进行检出率的显示,将识别结果整理成表格,如表1所示。
表1 报文的检测情况
从表格中可以看出,设备回放了478个攻击报文,其中429个检测出为SQL注入攻击报文,49个未被识别为攻击报文,错误报文及跳过报文个数均为0。
4.2 实验结果
通过检出率计算公式:检出率=Blocked Strikes Count/Total Strikes Count*100%[15],可以得出该检测防御系统检出率约为89.75%。针对未被检出的报文可以单独分析,查看报文是否数据加密或者数据变性,根据报文自身攻击特征单独提取攻击特征更新到规则库中,这样既可以减少规则库中的总规则数量,又可以减少规则库的内存,提升运行速率。
至此,实验验证了通过抓取大量抓取SQL注入攻击报文,总结通用规则,更新IPS入侵检测系统规则库,进而采取告警或阻断动作,最终实现提升IPS系统中SQL注入检测与防御能力的设计是有效可行的,同时还降低了规则库中规则的总数量,降低了内存占用。
5 结 论
文中通过分析SQL注入攻击原理及攻击特征,利用检测工具进行SQL注入攻击模拟,基于大量攻击流量总结出通用规则,并在IPS入侵检测系统防御告警模式下实现对攻击流量的告警或阻断。实验证明该方法切实有效,可有效提升IPS系统中针对SQL注入攻击的检测防御水平,同时通用规则对防御未知的SQL注入攻击具有良好的参考价值。
[1]张哲.Web应用中安全漏洞检测技术的研究[D].西安:西安电子科技大学,2011.
[2]付堂欢,白中英.基于网络的Web漏洞扫描系统的分析与设计[D].北京:北京邮电大学,2012.
[3]刘帅.SQL注入攻击及其防范检测技术的研究[J].电脑知识与技术,2009,5(28):770-772.
[4]Brian Pinkerton.Web Crawler:Finding What People Want[M].Doctor of Philosophy University of Washington,2000.
[5]百度百科.S Intrusion Prevention Systems(IPS)[EB/ OL].[2016-02-21].http://nss.co.uk.
[6]李玉娟,李传林.一种基于Agent的入侵检测系统模型[J].计算机应用研究,2004,17(6):77-78.
[7]李小花,孙建华,陈浩.程序分析技术在SQL注入防御中的应用研究 [J].小型微型计算机系统,2011,32(6):1089-1093.
[8]百度百科.S正则表达式[EB/OL].[2014-3-20].http://baike.baidu.com/link?url=ngfljPWuYY0ewxjgeY0LYRxPb6i0zHt4KuYbzZuUX3u0dyr_z3r6HFm-RdSTumJphWT0Knzu0nmwUyuKtBJ-ru_.
[9]颜浩,蒋巍,蒋天发.SQLI和XSS漏洞检测与防御技术研究[J].信息网络安全,2011(12):51-53.
[10]彭赓,范明钰.基于改进网络爬虫技术的SQL注入漏洞检测[J].计算机应用研究,2010,27(7):2605-2607.
[11]丁允超.SQL注入攻击原理及其防范措施[J].重庆科技学院学报:自然科学版,2012,14(5):136-137.
[12]姚振军.正则表达式在汉英对照中国文化术语抽取中应用[J].大连理工大学学报,2010(2):56-58.
[13]吴飞.网络安全之脚本入侵[J].福建电脑,2010(11):176-177.
[14]缪纶,叶茂.SQL注入攻击及WEB应用安全防范技术研究与实践[J].计算机应用,2009(1):49.
[15]Ixia.S Ixia [EB/OL].[2016-03-01].http://www.ixiacom.com/.
Research of SQL injection attacks detection defense system based on the general rules
WANG Miao-miao1,QIAN Bu-ren1,XU Ying-ying1,WANG Xue-feng2
(1.College of Geophysics and Information Engineering,China University of Petroleum,Beijing 102249,China;2.State Grid Zhaoyuan Power Supply Company,Zhaoyuan 265400,China)
Web technology is to use HTTP or HTTPS protocol to provide service,and the application of the Web application has gradually become one of the mainstream of software development,but the various existing security vulnerabilities in Web application also exposed,bring huge economic losses.To solve the problem of Web site security,based on a large number of SQL injection attacks message,this paper summarizes and analyses attack characteristics,combined with the feature of SQL injection attacks,is put forward based on the general rules of SQL injection detect and defense method,and use the testing tool Sqlmap to SQL injection attacks for network traffic capture caught at the same time,the above testing defensive method is validated.The testing tools using the built-in web crawler through the HTTP protocol and URL link traverse the web information,inject and capture the network attack traffic,extract attack feature,summarizes the general rule and update the rule base,finally combine IPS intrusion prevention system alarms or block to improve the environment of network security.Experiments show that the method can effectively detect SQL injection attacks.
SQL injection vulnerabilities;inspection tools;general rules;feature extraction;IPS
TN91
:A
:1674-6236(2017)05-0024-05
2016-03-10稿件编号:201603127
王苗苗(1991—),女,山东招远人,硕士研究生。研究方向:信号检测与处理技术。