使用Gmail账号登录 | 登录 | 注册我的空间

淅淅—skyme空间

SQL Injection 注入攻击

发表于 2009年05月07日 10:38 分类: 工作日志 统计: 0评/70阅 0人关注此文章, 关注此文章(?)

SQL注入技术定义

(1)脚本注入式的攻击

(2)恶意用户输入用来影响被执行的SQL脚本

Chris Anley将SQL注入定义为,攻击者通过在查询操作中插入一系列的SQL语句到应用程序中来操作数据。Stephen Kost[3]给出了SQL注入的一个特征,“从一个数据库获得未经授权的访问和直接检索”。利用SQL注入技术来实施网络攻击常称为SQL注入攻击,其本质是利用Web应用程序中所输入的SQL语句的语法处理,针对的是Web应用程序开发者编程过程中未对SQL语句传入的参数做出严格的检查和处理所造成的。习惯上将存在SQL注入点的程序或者网站称为SQL注入漏洞。实际上,SQL注入是存在于有数据库连接的应用程序中的一种漏洞,攻击者通过在应用程序中预先定义好的查询语句结尾加上额外的SQL语句元素,欺骗数据库服务器执行非授权的查询。这类应用程序一般是基于Web的应用程序,它允许用户输入查询条件,并将查询条件嵌入SQL请求语句中,发送到与该应用程序相关联的数据库服务器中去执行。通过构造一些畸形的输入,攻击者能够操作这种请求语句去获取预先未知的结果。

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注入攻击成功后,轻者只是更改网站首页等数据,重者通过网络渗透等攻击技术,可以获取公司或者企业机密数据信息,产生重大经济损失。

SQL注入攻击实现原理
结构化查询语言(SQL)是一种用来和数据库交互的文本语言,SQL Injection就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。它的产生主要是由于程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入查询。

SQL注入攻击手段

    在分析SQL注入的时候,先要了解常用的一些数据库(Access,SQL Server,MySql,Oracle等)。

第一种常见的是: ASP服务器的搭建 ASP+Access和ASP+SQL Server;

第二种常见的是:PHP服务器的搭建 windows+Apache+PHP+MySql

第三种常见的是:JSP服务器的搭建 JSP+Apache+Tomcat+MySQL 或者用Oracle数据库。

因为是SQL注入攻击,所以要对数据库有一定的了解。

一些SQL注入的技巧:

     如果你通过扫描工具扫描发现了可以进行SQL Injection 攻击的页面,那么首先你要做的就是怎么判断出现该页面的后台数据库。

第一: 直接在页面的URL后加上单引号(')、分号(;)、--,看页面报错是否会将有关数据库的敏感信息暴露出来。

第二:如果根据暴露出的数据库信息可以判断出数据库类型,那么就准备你SQL语句进行攻击。

第三:构造的攻击SQL语句是为了得到一些登陆密码和账户(这个在网上有很多资料可以查)。

其实看起来第一、第二、第三视乎简单,但是实际的操作就要根据不同的经验进行猜解和使用一些破解工具。在这里我就不详细阐述怎么去攻击了。

现在来看看怎么来预防这个讨厌的SQL Injection攻击呢?

1.设置一个专门的错误页面,只要出现错误就跳转到那个页面。预防通过暴露数据库的敏感信息,让攻击者轻易分析出数据库类型。

2.设置白名单对用户提交的任何信息进行检测(也可以使用黑名单,但是由于使用黑名单不能保证把所有的危害信息过滤)

3.特别要注意这些字符:

Insertsql_injectdata=" '|and|exec|insert|select|delete|update|count|*|cast|%|chr|mid|master|truncate|char|declare|;|--" ;

4.特别注意最新漏洞,进行防范。

注释:白名单:明确输入信息的合法格式,只要不符合就不能输入。

        黑名单:就是出现在黑名单上的字符就过滤;常用正则表达式进行判断和过滤。

 

 

共有0条网友评论

尚无网友评论

帐号:   密码:注册

只支持文本信息,最多不能超过250个字
© 开源中国社区(OsChina.NET) | 关于我们 | 广告联系 | 站长空间 | 友情链接 | 开源中国手机版 | 粤ICP备08124133号