一、引言
随着互联网技术的发展,web 服务越来越被各大行业青睐,同时也伴随着越来越多的web 服务安全问题,如SQL 注入、跨站脚本、跨站请求伪造和DDOS 攻击等各种安全问题。2013年OWASP 发布SQL 注入攻击为十大WEB 应用安全漏洞中排名第一,其特点是在用户输入或者信息上传时,将恶意数据或者代码上传到web 应用系统中,导致系统崩溃、获取敏感信息、或者篡改数据,甚至控制系统等恶劣行为。特别是随着J avascript 脚本语言、Ajax 技术的引入和普及,以及HTML5和WEB2.0等新兴技术而发展的新型SQL 注入技术,使得web 应用程序安全问题更加难以发现和检测。
二、SQL 注入攻击原理及成因
SQL 注入攻击是通过构建特殊的输入作为参数
传入Web 应用程序,而这些输入大都是SQL 语法里的一些组合,通过执行SQL 语句进而执行攻击者所要的操作,从而达到攻击目的。SQL 注入攻击的技术门槛低、隐蔽性强、危害性大、杀毒软件也无法查杀,一旦若获取网站WebShell 权限,便可上传网页木马、控制整站等违法操作。
SQL 注入攻击主要是因开发者缺乏安全意识、安全知识或安全编程经验等,导致SQL 语句书写不规范,代码编写不够完善等问题。如:1)对用户输入没有进行过滤和验证;2)给用户权限过大、数据库操作权限过大;3)不当的错误处理;4)转移字符处理不
Summary of Key Technologies for SQL Injection Vulnerability Detection and Defense
Ye Liangyan
(Anhui Vocational College of Electronic &Information Technology,Bengbu 233000,China)
Abstract :In view of all kinds of malicious SQL injection attacks,the principle of attack is analyzed.The research progress of SQL injection vulnerability detection in recent years is reviewed,and the SQL injection defense method is expounded.Finally,the research prospect is given.Key words :SQL injection,vulnerability detection,SQL injection defense
眼文章编号演1671-802X穴2018雪03-0019-04
SQL 注入漏洞检测防御关键技术综述
叶良艳
(安徽电子信息职业技术学院,
安徽
蚌埠
233000)
要:针对各种恶意SQL 注入攻击,分析其攻击原理,综述近年来研究人员提出SQL 注入式漏洞检测的
研究进展,阐述了SQL 注入防御方法,最后给出了研究展望。
关键词:SQL 注入;漏洞检测;SQL 注入防御中图分类号:TP393.08
文献标识码:A
*收稿日期:2018-03-25作者简介:叶良艳(1981-),女,安徽池州人,讲师,研究方向:计算机应用。E-mail:68366314@qq.基金项目:安徽电子信息职业技术学院院级2016自然科研项目(ADZX1619).
No.32018General No.96
Vol.172018年第3期
第17卷穴总第96期雪安徽电子信息职业技术学院学报JOURNALOF ANHUI VOCATIONAL COLLEGE OF ELECTRONICS &INFORMATION TECHNOLOGY
合适;5)使用字符串联结组合多条SQL 指令,导致数据和控制结构使用同一传输通道[1]。
三尧SQL 注入攻击技术
传统SQL 注入技术可以分为重言式攻击、联合查询攻击、附带查询攻击、非法/逻辑错误查询、联合查询、附带查询、重言式、基于响应的SQL 盲注等5种[2];新型SQL 注入技术有客户端SQL 注入、防注
检测绕过技术和二阶SQL 注入[3]。
(一)重言式攻击
重言式攻击即攻击者构造SQL 查询条件恒为
真,导致限定条件无效,绕过服务器对用户的身份证验证,从而获取数据库中相应信息。常用“or 1=1”恒等式实现查询条件为真,例如登录注册的一条查询语句"Select *from users
where username ='".
$username ."'and password='".$pwd."'",给该语句添加恒等式变为:"Select *from users where
username='‘or 1=1and password=’’",4绕过用
户验证,实现修改用户密码等攻击行为。
(二)联合查询攻击
联合(UNION )查询攻击技术利用SQL 语句中的UNION 操作符把多个select 查询语句整合到一起,攻击者结合前面介绍的重言式攻击使原查询
WHERE 条件为false ,最后返回攻击者构造的查询结果。例如:SQL 查询:select title ,content from
article where id=$id ,手工注入后变成:select title ,content from article where id=1and 1=2union select 2,3from user limit 0,1,从而获取用户信息。
(三)附带查询攻击
附带查询攻击是利用分号(;)在语句后面加入
新的查询语句,相当执行多条SQL 语句,从而对数据库进行增加、删处、修改等操作,甚至可以读写底层操作系统,其危害性极大。例如:”select *from
student where id=1;delete from student;”数据库的配置若不支持多语句,该攻击难以实现。
(四)逻辑错误查询
逻辑错误查询主要通过构造不能执行的SQL
语句引起数据库错误并返回错误提示信息,攻击者从错误提示信息中获取数据库的类型、版本和参数
等。数据库错误包括语法、逻辑错误和类型转换等。攻击者通过构造语法错误语句获取查询中的参数信息,通过构造逻辑错误语句获取数据库的元数据,通过构造类型转换错误语句推断参数的数据类型并获取表中数据等信息。
(五)盲注
盲注[4]常用于开发者对返回错误信息进行过滤,
无法直接获取数据库相关信息,而采用对某一个参数构造不同查询语句,返回不同结果,攻击者根据结果变化以及抓取数据包来推测出数据库中有哪些参数、哪些表等。盲注有分时间盲注和内容盲注,主要通过and 1=1和and 1=2以及BENCHMARK()函数实行盲注。
(六)存储过程
有些存储过程是默认开启的,攻击者利用这些存储过程进行非法操作,如利用Xp_Cmdshell 取得服务器的管理权,增加用户等功能。
(七)客户端SQL 注入技术
随着HTML5的新技术的出现,带来了便利同
时也带来了隐患,例如HTML5支持应用程序离线运行,并且容许数据存入客户端等,若客户端应用程序运行了攻击者控制的客户端数据,就会产生客户端SQL 注入攻击。客户端SQL 注入技术发送攻击数据的渠道和提取数据的机制与传统SQL 注入技术有别,社交网络、web 邮件容易发送该类型攻击。
(八)二阶SQL 注入
二阶SQL 注入是攻击者先构造语句(有被转义字符的语句),并通过http 请求将恶意语句存入数据库中,再次构造语句(结合前面已经存入数据库的语句)实施攻击,二阶SQL 注入经过存储和触发两个阶段。假设一个网站数据库中存在一个用户名为:“root ”,密码为:“123456”。攻击者注册用户名为:“root'--”,密码为:“123”;用户名“root '--”被存入数据库中。攻击者再次构造语句修改该用户密码:“update
user
set
password
=“888888”where
username='root '--'”,在数据库语句这种“--”表示注释,因此“--”后面的语句不会执行;最终攻击者改变的不是“root'--”
密码
,而是
root 的密码
第3期
叶良艳———SQL 注入漏洞检测防御关键技术综述
从而实现攻击,可见二阶SQL 注入更加难以被发现。
四、SQL 注入攻击检测的关键技术
SQL 注入漏洞主要是开发者编码不够严谨和程
序自身的特点等造成,漏洞种类繁多,针对不同的漏洞,研究人员提出多种检测技术,下面介绍几种常见的检测技术。
(一)基于网络爬虫技术的检测
网络爬虫是一种自动的访问网页元素程序。文献【5】提出基于爬虫的SQL 注入自动化检测,其思想是将网络爬虫技术和Fuzzingji 技术结合,实现自动化与智能化SQL 注入检测。文献【6】提出基于改进网络爬虫技术的SQL 注入漏洞检测,主要从两个方面对其改进:①网络爬虫抓取的新URL 时,剔除重复的URL 和网站之外的URL ;②对网络的URL 筛选策略和流程进行改进。从而降低了检测的漏报率。文献【7】提出基于表单爬虫的web 漏洞探测,收集表单页,构造url 发送请求,然后应用相应准则和模式分析WEB 服务器的反应,发现漏洞。
(二)基于静态分析
基于静态分析主要包括两个部分:①静态分析
源码中可能存在SQL 注入漏洞,构造路径,创建检测规则;②动态执行检测规则,对用户输入进行检测,并与比源SQL 语句在语义和结构上比较,判断是否SQL 注入攻击,静态检测工具有Pixy 【8】。文献【9】在第一步添加了过滤用户输入,提高准确性,在第二步添加了动态构造自动机模型,提高实时性和准确性。文献【1】总结静态分析技术有:基于语法、语义、javascript 脚本分析的方法,基于字符串评价的方法,基于输入输出数据检测方法,基于异常行为监控的方法等。文献【10】针对JAVA 语言的web 网站漏洞,提出基于缺陷模式匹配的针对字符流、中间代码的分析方法、抽象语法树和数据流分
析方法多种方法混合,达到降低漏报率。
(三)基于动态分析
基于动态分析是先根据用户的输入信息来动态构造SQL 查询语句,对其执行过程中控制流和数据流分析,通过设置断点实时跟踪控制状态转换来判
断调用函数漏洞,构造边界数据发现数据流漏洞。常用的动态检测方法有以下3种【11】:对合法请求的执行流分析、上下文敏感字符和语法的分析树判断。
(四)静态分析和动态分析相结合的方法静态分析和动态分析相结合的方法利用动静态的优点,将静态源码分析和运行时实时监控检查相结合。高覆盖率静态源码分析的检测效果全面,但其处理程序类有限,特别是脚本语言。目前有CodeSecure 、Fortify 和Rational Sofeware Analyzer 等
综合分析工具。
(五)基于污点分析技术的漏洞方法
基于污点分析技术的漏洞检测方法对基于污点数据传播和使用过程的跟踪,判断它是否会引发SQL 注入攻击。文献【1】介绍利用动态污点分析技术、采用修改php 解释器的方法动态跟踪php 中的污点数据、
符号化执行污点跟踪、通过动态污点渗透测试方法寻客户端javascript 代码注入和动态污点分析与程序错误有关输入数据集合等方法。
五、SQL 注入攻击防御技术
从SQL 注入漏洞成因角度出发,SQL 注入攻击防御从开发者编码开始防御,即安全编码,同时设置用户等级、屏蔽出错信息、封装SQL 查询串、SQL 指令随机化、对敏感信息加密及应用WEB 防火墙。
(一)安全编码
SQL 注入漏洞常因开发者编码不规范导致的,
所以进行安全编码提高其防御功能。安全编码是对
用户输入进行过滤,如对(and|or )\b.+?(>|<|=|in|like )|/\*.+?\*/|<\s*script\b|\b 等关键字符串过滤,从而降低一些SQL 注入攻击,该防御措施的误报率较高,因有时这些关键字符是合法的,不过该防御技术是最直接防御方案。
(二)用户等级制和鉴别
不同用户等级对资源的访问操作权限不同,从
而提高网站的安全性,同时用户登录时对其身份鉴别也很重要,目前常用方法有数字证书认证,智能卡认证和个人特征识别等。
(三)屏蔽出错信息
攻击
者利用
误提示信息
对Web 网站进行
第3期
叶良艳———SQL 注入漏洞检测防御关键技术综述
注入解爆破,开发者通过屏蔽出错信息来预防攻击者攻击。例如:用户登录密码输入错误时,错误提示信息不能设为“密码错误”,而应改为“用户名或密码错误,”,防止用户名信息泄露。若用户名泄露,攻击就会对其密码进行暴力破解。
(四)SQL 查询串封装
构造类将数据库中表明、属性名和属性数据构
造到类中,开发者直接使用类动态构建SQL 查询串,从而消除了特殊字符对SQL 查询串结构的改变。
(五)SQL 指令随机化
SQL 指令随机化是通过对SQL 关键字后添加
一个随机整数,有效阻止任何SQL 注入攻击,该方法是Boyd 等提出的一种新的SQL 防注技术,但其
弊端是系统运行开销大。
(六)对敏感信息加密
攻击者攻击终极目标是数据库,所以数据和数
据库的安全性比较重要,可以采取对数据重要的字段进行加密,对传输的数据加密等措施提高网站的安全性。例如:用户登录实行MD5加密。
(七)Web 应用防火墙(WAF )
Web 应用防护系统(Web Application Firewall,
简称:WAF )用以解决诸如防火墙一类传统设备束手无策的Web 应用安全问题,其应用功能有审计设备、访问控制设备、架构网络设计工具和加固工具等,可以有效防止网页篡改、信息泄露、木马植入等恶意网络入侵行为。
六、总结
本文介绍了SQL 注入的危害、攻击原理,详细阐述了针对SQL 注入漏洞,研究人员提出的SQL 注入检测方法和SQL 注入预防方法,为SQL 注入防御系统设计提供指导意见。今后研究方向:进一步融
合静态源码特征与动态执行路径之间的联系和制约,提高检测准备率和覆盖率;探索自动化漏洞分析,提高web 应用软件检测漏洞;提高漏洞检测覆盖率和准确率的同时,如何降低其资源消耗等。参考文献:
[1]王
丹,赵文兵,等.web 应用常见注入式安全漏洞检测关
键技术综述[J].北京工业大学学报,2016,(12):62-68.
[2]HALFOND W G,VIEGAS J,ORSO A.A Classification of SQL -injection Attacks and Countermeasures [C]//IEEE.IEEE International Symposium on Secure Software Engineering,March 13-15,2006,McLean,Virginia.Piscataway,NJ:IEEE,2006,(1):13-15.[3]李
鑫,张维纬,等.新型SQL 注入及其防御技术研究与分
析[J].理论研究.2016,(2):66-73.[4]赵瑞颖.基于时间的SQL 注入分析与防范[J].信息网络安全.2010,(1):56-57.
[5]肖秋平.基于爬虫的SQL 注入自动化检测系统设计[J].计算机与网络.2017,(2):70-72.[6]彭庚.基于改进网络爬虫技术的sql 注入漏洞检测[J].计算机应用究.2010,(7):2605-2607.[7]赵
亭,陆余良,等.基于表单爬虫的WEB 漏洞探测[J].计
算机工程,2008,34(9):186-188.
[8]JOVANOVIC N,KRUEGEL C,KIRDA
E.Pixy:a
static
analysis tool for detecting Web application vulnerabilities [C]//Proceedings of 2006IEEE Symposium on Secrity and Privacy.
Oakland:IEEE,2006:258-263.[9]秦广赞,郭
帆,等.一种防SQL 注入的静态分析方法[J].
计算机工程与科学.2013,(2):68-73.[10]孔
军.基于JAVA WEB 静态源码分析的应用系统中安
全漏洞检测的研究与实现[D].北京邮电大学2017-03.[11]田玉杰,赵泽茂,等.基于分类的SQL 注入攻击双层防御
模型研究[J].信息
网络安全
.2015
,(6):1-6.
(责任编辑:魏树峰
)
第3期
叶良艳———SQL 注入漏洞检测防御关键技术综述

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