论文部分内容阅读
【摘要】通过SQL注入攻击技术,攻击者可以非法获得对Web应用系统数据库的无限制访问,进一步得到企业和用户的信息,给企业和用户带来了严重经济损失和危害。因此,针对Oracle数据库SQL注入技术的技术研究具有重要的现实意义。
【关键词】Oracle数据库, SQL注入技术
中图分类号:G250.74 文献标识码:A 文章编号:
一.前言
Oracle数据库SQL注入是应用程序开发人员未預期地把SQL代码传入到应用程序的过程。它由于应用程序的糟糕设计而成为可能,并且只有那些直接使用用户提供的值构建SQL语句的应用程序才会受影响。本文主要对Oracle数据库SQL注入技术进行了深入的研究。
二.Oracle网站数据库系统简介Oracle数据库是由全球最大的数据库厂商美国甲骨文公司(即Oracle)设计研发的一组软件系统产品,其核心是分布式数据库,基础是高级结构化查询语言(SQL)。自Oracle问世以来,市场占有率逐步攀升,据相关统计,全世界有90%以上的上市公司、65%的“全球100强”公司都运用Oracle数据库进行电子商务,绝大部分大型网站运行的都是Oracle数据库。Oracle之所以取得这样的成就,与他的以下特点密不可分:
1.Oracle数据库是一个通用系统,它的数据管理功能是非常完整的。
2.Oracle数据库是一个关系数据库,具有关系完备的特点。
3.Oracle数据库是一种分布式数据库,可实现分布式处理的功能。
4.适用于各种硬件平台,如PC机、大型机和服务器等。
5.适用于各种操作系统,如UNIX、Linux、Windows、Windows NT、VAX/VMS,和VM/CMS等。
6.能够处理多媒体信息,如图片、音频和视频等。
7.提供了广泛的安全特性。Oracle数据库设有多个安全层,访问控制、数据完整性验证、授权机制、视图机制、审计机制及加密机制。
三.Oracle数据库的的特点
1.支持多用户、大事务量的事务处理:以Oracle公司公布的数据为例,Oracle8可以支持2万人的并发用户数,支持的数据量为512PB(1024×1024GB),并充分利用硬件设备、支持多用户并发操作、保证数据一致性。
2.数据安全性和完整性控制:Oracle通过权限控制用户对于数据库的存取、实施数据库审计、追踪,以监控数据库的使用状况。
3.提供对于数据库操作的接口:Oracle提供了应用程序、软件、高级语言、异种数据库等对数据库来进行存取。
4.支持分布式数据处理:从Oracle7开始,Oracle数据库就支持分布式数据处理。使用分布式计算环境,可以充分利用计算机网络系统,使不同地域的硬件、数据资源实现共享。
5.可移植性、可兼容性、可连接性:Oracle数据库可以在不同的操作系统上运行,当从一种操作系统移植到另外的操作系统时,只修改少量的代码,其代码的修改率仅为4%。
四.Oracle网站数据库SQL注入技术分为以下几种:
1.内联注入是指向查询注入一些SQL代码后,原来的查询仍然会全部执行,
2.终止式SQL语句注入是指攻击者在注入SQL代码时,通过注释剩下的查询来成功结束该语句。
3.时间延迟
测试应用是否存在SQL注入漏洞时,经常发现某一潜在的漏洞难以确认。这可能源于多种原因,但主要是因为Web应用未显示任何错误,因而无法检索任何数据。
4.使用UNION语句提取数据
在SQL注入攻击中,UNION运算符的潜在价值非常明显:如果应用返回第一个(原始)查询得到的数据,那么通过在第一个查询后面注入一个UNION运算符,并添加另外一个任意查询,便可以读取到数据库用户访问过的任何一张表
5.使用条件语句注入
使用UINON注入任意查询是一种快速有效的提取数据的方法。但该方法不适用于所有情况,Web应用(即便它们易受到攻击)并不愿意轻易泄露数据。
五.通过SQL语句注入进行攻击
通过SQL语句注入进行攻击是目前黑客的常用攻击手段。Oracle数据库大多采用B/S模式进行开发,基于这种模式进行编程的程序员数量众多,而各个程序员经验、水平上的差异较大,有许多程序员在编程时,没有对输入的数据进行合法性判断,给数据库应用埋下了安全隐患。非法用户通过提交查询代码,依据程序的返回值,就能够非法得到数据,这就是SQL注入。比如在某个网站中,要求用户输入用户名和密码,然后方能登陆,假定该网站有一个用户kitty,其密码是hk0936,有一黑客不知道其密码,却想通过其身份进行登陆,在通常情形下,用户在用户名框里输入kitty,密码框里输入密码hk0936,输入正确则登陆进入,否则无法登陆。如果程序员的查询语句是:Sql="select*from client where clientname=‘"&name. values&"'and password= ‘"&pass. values&"' "那么在Oracle数据库系统中执行的程序语句如下:
select* from client where clientname =‘kitty' and password=‘ hk0936'
如果黑客在密码框中输入的不是hk0936, 而是hk0936‘"&"' or 0=0,这时在Oracle数据库数据库系统中执行的语句就成为了select* from client where clientname =‘kitty' and password=‘hk0936' or 0=0,这时,由于0=0一直为真,就会造成where条件为真,黑客成功以kitty为用户名登陆系统。
六. Oracle网站数据库SQL注入攻击技术特点
SQL注入攻击是目前网络攻击的主要手段之一,在一定程度上其安全风险高于缓冲区溢出漏洞,目前防火墙不能对SQL注入漏洞进行有效地防范。防火墙为了使合法用户运行网络应用程序访问服务器端数据,必须允许从Internet到Web服务器的正向连接,因此一旦网络应用程序有注入漏洞,攻击者就可以直接访问数据库进而甚至能够获得数据库所在的服务器的访问权,因此在某些情况下,SQL注入攻击的风险要高于所有其他漏洞。SQL注入攻击具有以下特点:
1.广泛性。SQL注入攻击利用的是SQL语法,因此只要是利用SQL语法的Web应用程序如果未对输入的SQL语句做严格的处理都会存在SQL注入漏洞,目前以Active/Java Server Pages、 Cold Fusion Management、 PHP、Perl等技术与SQL Server、Oracle、DB2、Sybase等数据库相结合的Web应用程序均发现存在SQL注入漏洞。
2.技术难度不高。SQL注入技术公布后,网络上先后出现了多款SQL注入工具,例如教主的HDSI、NBSI、明小子的Domain等,利用这些工具软件可以轻易地对存在SQL注入的网站或者Web应用程序实施攻击,并最终获取其计算器的控制权。
3.危害性大,SQL注入攻击成功后,轻者是更改网站首页等数据,重者通过网络渗透等攻击技术,可以获取公司或者企业机密数据信息,产生重大经济损失。
七.Oracle网站数据库SQL注入攻击实现过程
SQL注入攻击可以手工进行,也可以通过SQL注入攻击辅助软件如HDSI、Domain、NBSI等,其实现过程可以归纳为以下几个阶段:
1.寻找SQL注入点;寻找SQL注入点的经典查找方法是在有参数传入的地方添加诸如“and1=1”、“and 1=2”以及“’”等一些特殊字符,通过浏览器所返回的错误信息来判断是否存在SQL注入,如果返回错误,则表明程序未对输入的数据进行处理,绝大部分情况下都能进行注入。
2.获取和验证SQL注入点;找到SQL注入点以后,需要进行SQL注入点的判断,常常采用2.1中的语句来进行验证。
3.获取信息;获取信息是SQL注入中一个关键的部分,SQL注入中首先需要判断存在注入点的数据库是否支持多句查询、子查询、数据库用户账号、数据库用户权限。如果用户权限为sa,且数据库中存在xp_cmdshell存储过程,则可以直接转。
4.实施直接控制;以SQL Server 2000为例,如果实施注入攻击的数据库是SQL Server 2000,且数据库用户为sa,则可以直接添加管理员账号、开放3389远程终端服务、生成文件等命令。
5.間接进行控制。间接控制主要是指通过SQL注入点不能执行DOS等命令,只能进行数据字段内容的猜测。在Web应用程序中,为了方便用户的维护,一般都提供了后台管理功能,其后台管理验证用户和口令都会保存在数据库中,通过猜测可以获取这些内容,如果获取的是明文的口令,则可以通过后台中的上传等功能上传网页木马实施控制,如果口令是明文的,则可以通过暴力破解其密码。
八.结束语
Oracle数据库是当前应用范围最广的数据库系统之一,其系统安全性也倍受关注。防范SQL注入攻击本质上是对Oracle数据库系统安全性保护和数据写入控制,普遍适用于使用Oracle主流数据库系统构建的动态网站和其他网络系统。具有重要意义。
参考文献:
[1] 陈运栋.谈Sql注入式攻击的典型手法和检测防范措施[J].微型电脑应用,2004,20(9):13-15
[2] 张勇,李力,等.Web环境下SQL注入攻击的检测与防御[J].现代电子技术,2004,15:103-105,108
[3] 赵大力,靳其兵,赵梅.Oracle数据库优化解决方案[J].计算机应用,2005(3).[4] 庞洋.基于数据挖掘的园区网综合安全审计系统研究与设计[D].郑州:中国人民解放军信息工程大学,2005.
[5] 罗骏.SQL实用简明教程[M].2版.北京:清华大学出版社,2007.
[6] 戴诗发.校园网SQL注入攻击与防范技术研究[J].昆明理工大学学报(理工版),2005,30(3):72-75
【关键词】Oracle数据库, SQL注入技术
中图分类号:G250.74 文献标识码:A 文章编号:
一.前言
Oracle数据库SQL注入是应用程序开发人员未預期地把SQL代码传入到应用程序的过程。它由于应用程序的糟糕设计而成为可能,并且只有那些直接使用用户提供的值构建SQL语句的应用程序才会受影响。本文主要对Oracle数据库SQL注入技术进行了深入的研究。
二.Oracle网站数据库系统简介Oracle数据库是由全球最大的数据库厂商美国甲骨文公司(即Oracle)设计研发的一组软件系统产品,其核心是分布式数据库,基础是高级结构化查询语言(SQL)。自Oracle问世以来,市场占有率逐步攀升,据相关统计,全世界有90%以上的上市公司、65%的“全球100强”公司都运用Oracle数据库进行电子商务,绝大部分大型网站运行的都是Oracle数据库。Oracle之所以取得这样的成就,与他的以下特点密不可分:
1.Oracle数据库是一个通用系统,它的数据管理功能是非常完整的。
2.Oracle数据库是一个关系数据库,具有关系完备的特点。
3.Oracle数据库是一种分布式数据库,可实现分布式处理的功能。
4.适用于各种硬件平台,如PC机、大型机和服务器等。
5.适用于各种操作系统,如UNIX、Linux、Windows、Windows NT、VAX/VMS,和VM/CMS等。
6.能够处理多媒体信息,如图片、音频和视频等。
7.提供了广泛的安全特性。Oracle数据库设有多个安全层,访问控制、数据完整性验证、授权机制、视图机制、审计机制及加密机制。
三.Oracle数据库的的特点
1.支持多用户、大事务量的事务处理:以Oracle公司公布的数据为例,Oracle8可以支持2万人的并发用户数,支持的数据量为512PB(1024×1024GB),并充分利用硬件设备、支持多用户并发操作、保证数据一致性。
2.数据安全性和完整性控制:Oracle通过权限控制用户对于数据库的存取、实施数据库审计、追踪,以监控数据库的使用状况。
3.提供对于数据库操作的接口:Oracle提供了应用程序、软件、高级语言、异种数据库等对数据库来进行存取。
4.支持分布式数据处理:从Oracle7开始,Oracle数据库就支持分布式数据处理。使用分布式计算环境,可以充分利用计算机网络系统,使不同地域的硬件、数据资源实现共享。
5.可移植性、可兼容性、可连接性:Oracle数据库可以在不同的操作系统上运行,当从一种操作系统移植到另外的操作系统时,只修改少量的代码,其代码的修改率仅为4%。
四.Oracle网站数据库SQL注入技术分为以下几种:
1.内联注入是指向查询注入一些SQL代码后,原来的查询仍然会全部执行,
2.终止式SQL语句注入是指攻击者在注入SQL代码时,通过注释剩下的查询来成功结束该语句。
3.时间延迟
测试应用是否存在SQL注入漏洞时,经常发现某一潜在的漏洞难以确认。这可能源于多种原因,但主要是因为Web应用未显示任何错误,因而无法检索任何数据。
4.使用UNION语句提取数据
在SQL注入攻击中,UNION运算符的潜在价值非常明显:如果应用返回第一个(原始)查询得到的数据,那么通过在第一个查询后面注入一个UNION运算符,并添加另外一个任意查询,便可以读取到数据库用户访问过的任何一张表
5.使用条件语句注入
使用UINON注入任意查询是一种快速有效的提取数据的方法。但该方法不适用于所有情况,Web应用(即便它们易受到攻击)并不愿意轻易泄露数据。
五.通过SQL语句注入进行攻击
通过SQL语句注入进行攻击是目前黑客的常用攻击手段。Oracle数据库大多采用B/S模式进行开发,基于这种模式进行编程的程序员数量众多,而各个程序员经验、水平上的差异较大,有许多程序员在编程时,没有对输入的数据进行合法性判断,给数据库应用埋下了安全隐患。非法用户通过提交查询代码,依据程序的返回值,就能够非法得到数据,这就是SQL注入。比如在某个网站中,要求用户输入用户名和密码,然后方能登陆,假定该网站有一个用户kitty,其密码是hk0936,有一黑客不知道其密码,却想通过其身份进行登陆,在通常情形下,用户在用户名框里输入kitty,密码框里输入密码hk0936,输入正确则登陆进入,否则无法登陆。如果程序员的查询语句是:Sql="select*from client where clientname=‘"&name. values&"'and password= ‘"&pass. values&"' "那么在Oracle数据库系统中执行的程序语句如下:
select* from client where clientname =‘kitty' and password=‘ hk0936'
如果黑客在密码框中输入的不是hk0936, 而是hk0936‘"&"' or 0=0,这时在Oracle数据库数据库系统中执行的语句就成为了select* from client where clientname =‘kitty' and password=‘hk0936' or 0=0,这时,由于0=0一直为真,就会造成where条件为真,黑客成功以kitty为用户名登陆系统。
六. Oracle网站数据库SQL注入攻击技术特点
SQL注入攻击是目前网络攻击的主要手段之一,在一定程度上其安全风险高于缓冲区溢出漏洞,目前防火墙不能对SQL注入漏洞进行有效地防范。防火墙为了使合法用户运行网络应用程序访问服务器端数据,必须允许从Internet到Web服务器的正向连接,因此一旦网络应用程序有注入漏洞,攻击者就可以直接访问数据库进而甚至能够获得数据库所在的服务器的访问权,因此在某些情况下,SQL注入攻击的风险要高于所有其他漏洞。SQL注入攻击具有以下特点:
1.广泛性。SQL注入攻击利用的是SQL语法,因此只要是利用SQL语法的Web应用程序如果未对输入的SQL语句做严格的处理都会存在SQL注入漏洞,目前以Active/Java Server Pages、 Cold Fusion Management、 PHP、Perl等技术与SQL Server、Oracle、DB2、Sybase等数据库相结合的Web应用程序均发现存在SQL注入漏洞。
2.技术难度不高。SQL注入技术公布后,网络上先后出现了多款SQL注入工具,例如教主的HDSI、NBSI、明小子的Domain等,利用这些工具软件可以轻易地对存在SQL注入的网站或者Web应用程序实施攻击,并最终获取其计算器的控制权。
3.危害性大,SQL注入攻击成功后,轻者是更改网站首页等数据,重者通过网络渗透等攻击技术,可以获取公司或者企业机密数据信息,产生重大经济损失。
七.Oracle网站数据库SQL注入攻击实现过程
SQL注入攻击可以手工进行,也可以通过SQL注入攻击辅助软件如HDSI、Domain、NBSI等,其实现过程可以归纳为以下几个阶段:
1.寻找SQL注入点;寻找SQL注入点的经典查找方法是在有参数传入的地方添加诸如“and1=1”、“and 1=2”以及“’”等一些特殊字符,通过浏览器所返回的错误信息来判断是否存在SQL注入,如果返回错误,则表明程序未对输入的数据进行处理,绝大部分情况下都能进行注入。
2.获取和验证SQL注入点;找到SQL注入点以后,需要进行SQL注入点的判断,常常采用2.1中的语句来进行验证。
3.获取信息;获取信息是SQL注入中一个关键的部分,SQL注入中首先需要判断存在注入点的数据库是否支持多句查询、子查询、数据库用户账号、数据库用户权限。如果用户权限为sa,且数据库中存在xp_cmdshell存储过程,则可以直接转。
4.实施直接控制;以SQL Server 2000为例,如果实施注入攻击的数据库是SQL Server 2000,且数据库用户为sa,则可以直接添加管理员账号、开放3389远程终端服务、生成文件等命令。
5.間接进行控制。间接控制主要是指通过SQL注入点不能执行DOS等命令,只能进行数据字段内容的猜测。在Web应用程序中,为了方便用户的维护,一般都提供了后台管理功能,其后台管理验证用户和口令都会保存在数据库中,通过猜测可以获取这些内容,如果获取的是明文的口令,则可以通过后台中的上传等功能上传网页木马实施控制,如果口令是明文的,则可以通过暴力破解其密码。
八.结束语
Oracle数据库是当前应用范围最广的数据库系统之一,其系统安全性也倍受关注。防范SQL注入攻击本质上是对Oracle数据库系统安全性保护和数据写入控制,普遍适用于使用Oracle主流数据库系统构建的动态网站和其他网络系统。具有重要意义。
参考文献:
[1] 陈运栋.谈Sql注入式攻击的典型手法和检测防范措施[J].微型电脑应用,2004,20(9):13-15
[2] 张勇,李力,等.Web环境下SQL注入攻击的检测与防御[J].现代电子技术,2004,15:103-105,108
[3] 赵大力,靳其兵,赵梅.Oracle数据库优化解决方案[J].计算机应用,2005(3).[4] 庞洋.基于数据挖掘的园区网综合安全审计系统研究与设计[D].郑州:中国人民解放军信息工程大学,2005.
[5] 罗骏.SQL实用简明教程[M].2版.北京:清华大学出版社,2007.
[6] 戴诗发.校园网SQL注入攻击与防范技术研究[J].昆明理工大学学报(理工版),2005,30(3):72-75