SQL注入攻击及防范技术研究

2015-07-02 00:18
安徽科技学院学报 2015年2期
关键词:攻击者语句数据库

张 成

(安徽审计职业学院 基础部,安徽 合肥 230601)

SQL注入攻击及防范技术研究

张 成

(安徽审计职业学院 基础部,安徽 合肥 230601)

文章介绍了SQL注入的原理和基本过程,构造SQL语句进行注入入侵的常用方法,并以ASP网站为例,介绍SQL注入攻击的步骤,并提出针对SQL注入的防范技术。

SQL注入;WEB安全;网络安全;网页木马

SQL注入攻击是指利用数据库不安全配置以及数据库平台的漏洞,或利用网站不过滤用户输入字符,构造包含一些非法输入参数的SQL语句,通过执行精心构造的这些SQL语句,进行非授权访问,实现攻击者想要完成的操作,从而达到非法入侵系统的目的。

在上个世纪90年代,就出现了SQL注入。近年来,随着网络的普及,大量的数据存放于数据库中,尤其是一些敏感的重要的数据对于安全性要求很高,SQL注入是目前非常重要的的一种网络攻击手段,它在网络攻击中占的比重高,所带来的风险和损失很大。在国际信息安全组织OWSAP 2013年的研究报告中指出,针对WEB安全的攻击行为排名中,SQL 注入攻击排名第一[1]。

SQL注入做为广泛使用的网络攻击手段,具有以下特点:

(1)工具化。现在有很多SQL注入工具,例如明小子Domain、阿D、CASI、SQLmap、Burp Suite等工具。利用这些工具软件就可以很轻易地进行SQL注入攻击。有些经典的SQL注入工具被集成在Kali linux操作系统里,这样攻击者安装这类操作系统,就能直接利用内置的大量集成工具进行渗透攻击,简化了安装步骤。

(2)危害大。当前很多重要数据存放于数据库中,使用SQL注入方式攻击成功后,可以窃取数据库的数据,并可以通过对数据库的数据进行更改,达到篡改网站首页,获取系统管理员权限等提权操作,给个人和公司带来重大安全隐患和经济损失。

(3)比例高。在网络安全隐患中,因对数据类型处理不当,对数据库未进行安全配置,对错误未进行正确处理以及对转义字符未过滤等情况很多,这些问题为SQL注入攻击提供了空间,因而SQL注入是进行网络攻击的一种常用方式。

1 SQL注入攻击原理

结构化查询语言(SQL)是1986年10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准。SQL是一种数据库查询标准化语言,在关系数据库中得到广泛的应用,可以通过SQL语言对数据库进行存取数据、查询、删除、更新和其他管理操作。用户可以使用SQL语言在高层数据结构上工作,所以应用很广泛。因而用户不需要指定对数据的存放方式和存放方法,只需要使用SQL语言就可以实现对数据的操作,从而解决了不同数据库的移植问题,同时避免了不同操作系统兼容性的影响,这样大大增加了SQL语言的灵活性和适用性,也使得SQL语言在数据库领域中得到大量应用,在其他领域中也可以通过嵌入SQL语句来实现对数据库的操作。

SQL注入攻击常见形式是网络攻击者精心构造一些特殊的具备某些功能的SQL语句或语句组合,这些语句在执行时,会将一些输入或参数传递给应用程序或数据库等[2]。以较常见的登录系统为例,在使用SQL 注入方式进行网络攻击时,可以构造SQL语句来实现某些入侵操作。在数据库中用户和密码通常存放在user表中,users表中的字段通常会用username表示用户名,用password表示密码[3],这时构造语句: Select * from users where username=‘admin’ and password=‘admin’

如果系统使用的用户名和密码均为admin,将会显示users表中所有数据。

如果利用正则表达式,也可以将上述语句构造为:

Select * from users where username=‘admin’or a=a and password=‘admin’

这个语句在执行时判断or后面有恒等式a=a,后面的语句不管如何都会显示出表中所有的数据,因此,在构造语句时,只要构造类似语句就可以对数据库进行查询、插入、删除、更新等操作,从而达到网络攻击者的目的。

2 SQL注入攻击实现过程

SQL注入攻击可以通过手工构造语句实现,也可以通过一些工具软件实现,下面以阿D软件为例介绍在进行网络攻击时,通常分为以下几个过程:

(1)扫描注入点

在阿D的检测网址栏中,输入目标主机的域名或IP地址,本例在本机上安装WEB服务器程序,搭建一个网站用于测试,这时可以检测到有注入点的连接以红色显示在窗口下方。如图1

(2)对检测出的注入点进行SQL注入检测,依次检测表段,检测字段,最后检测字段内容,得到数据库中数据。

(3)对网站进行管理入口检测,显示出可用连接,如图3。从检测出的管理页面进行登陆,输入SQL注入检测得到的用户名管密码,进行到网站后台,成功进行入侵,如图4。

图3 SQL管理入口检测 图4 进入网站后台页面

Fig.3 SQL management entrance test Fig.4 Into the web page

3 云计算环境下的SQL注入攻击

SQL注入攻击对云计算环境也有着一定的影响。云计算是一种新型的计算方式,利用互联网的计算能力来进行处理加工提供服务。利用云计算提供的服务往往往可以按需分配、动态扩展并且是虚拟化的的资源。因为在网络拓扑图中,经常用云的形状表示通信网络、互联网、广域网,所以经常将计算机网络简称为“云”[6]。以开源的云平台软件openstack为例,其使用了mysql作为数据库,而SQL注入针对数据库的攻击对mysql数据库同样有效。openstack中keystone等组件的数据存放在mysql数据库中,成功进行SQL注入,可以获得ADMIN的token,然后访问keystone服务,从而带来安全危害。

4 SQL注入攻击防范技术

针对SQL 注入攻击,可以采用以下方式进行防范:

(1)服务器端在处理客户端传递的数据前先进行合法性检查。

(2)对提交的数据中的敏感字符串进行替换。

(3)对于需用户提交的表单数据,不允许输入转义字符;对表单控件的属性做设置,限制字符类型和长度,降低风险。

(4)对WEB服务器进行优化,取消写和执行等权限,按权限最小化原则分配权限。

(5)不允许提交含命令的数据。

(6)安装WEB防火墙,由WEB防火墙来防范SQL注入攻击。

5 结束语

网络攻击者往往通过客户端提交构造的SQL注入语句来进行攻击,而构造的 SQL语句往往很难被识别,对于SQL注入攻击的防范往往需要从多个方面入手,对SQL语句进行过滤是必不可少的步骤,安装WEB防火墙等方式也能有效地进行防范。

[1]OWASP Top Ten Project [EB/0L].Https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project,2014-10-22.

[2]徐陋, 姚国祥.SQL注入攻击全面预防办法及其应用[J].微计算机信息,2006(3):18-20.

[3]陈小兵,张汉煜,骆力明,等. SQL 注入攻击及其防范检测技术研究[J]. 计算机工程与应用,2007, 43(11):150-152,203.

[4]徐书欣,王希军.Web页面中SQL注入攻击过程及防御措施[J].信息技术,2014(8):187-194.

[5]袁广智.SQL注入问题研究与防范方法[J].电脑知识与技术.2014(35):8400-8401.

[6]冯登国,张敏,张妍,等.云计算安全研究[J].软件学报,2011,22(1):71-83.

( 责任编辑:窦鹏)

Research on Prevention of the SQL Injection

ZHANG Cheng

(Department of Basic Courses, Anhui Audit College, Hefei 230601, China)

This paper introduces the principle of SQL injection and the basic process,and constructs a SQL statement into the commonly used method of intrusion.Taking the ASP website as an example,it introduces the SQL injection attacksteps, and puts forward the prevention of SQL injection technology.

SQL injection;WEB security;network security;Web Trojan- horse

2014-11-10

安徽省高校优秀青年人才基金重点项目(2013SQRL113ZD);安徽省质量工程项目(2013jyxm488,2013jxtd099,2014jyxm627)。

张成(1982-),男,安徽省长丰县人,硕士,讲师,主要从事网络与信息安全和数据挖掘技术研究。

TP311.13

A

1673-8772(2015)02-0063-03

猜你喜欢
攻击者语句数据库
基于贝叶斯博弈的防御资源调配模型研究
正面迎接批判
正面迎接批判
数据库
数据库
数据库
数据库
我喜欢
冠词缺失与中介语句法损伤研究
作文语句实录