设为首页 加入收藏

TOP

数据库防火墙如何防范SQL注入行为(一)
2015-11-21 02:04:03 来源: 作者: 【 】 浏览:2
Tags:数据库 防火墙 如何 防范 SQL 注入 行为
SQL注入是当前针对数据库安全进行外部攻击的一种常见手段。现有主流应用大多基于B/S架构开发,SQL注入的攻击方式正是利用web层和通讯层的缺陷对数据库进行外部恶意攻击。将SQL命令巧妙的插入通讯的交互过程中,如:Web表单的递交、域名输入、页面请求等。通过硬性植入的查询语句攻击数据库,以期利用服务器自身缺陷执行恶意的SQL命令,从而入侵数据库。因此通过SQL注入攻击方式产生的安全事件也在增多,对系统的危害性极大。
?
通过SQL注入可以远程获取并利用应用里的数据,并且获取未经hashed加密的用户秘钥以及信用卡信息,甚至有以管理员身份登陆进这些应用的可能。下面通过一组常见的SQL注入攻击方式,进行说明:
?
首先,我们假设数据库中有JOB表,模拟进行攻击,查询表中数据量。
?
然后,应用中调用恶意的攻击性url向JOB表植入SQL语句:
?
http://www.moxcn.com:port/webapp/Default.aspx?jobid=1’or 1=(selectcount(*) from job)—
那么,攻击时等效的SQL语句如下:
?
SELECT job_id, job_desc, min_lvl, max_lvl
FROMjobs
WHERE job_id=’1’or 1=(select count(*) from jobs) –‘
如果SQL注入的假设错误,web页面如图一:
如果SQL注入的假设成功,web界面如图二:
攻击说明:如果SQL注入的假设成功,即证明了数据库中该表的表名是jobs,从而我们也就可以对该表进行增删改操作,从而对数据库安全造成极其严重的危害。
?
SQL注入的8种攻击行为
?
安全界有句名言“未知攻,焉知防”,想要预防SQL注入,需要进一步剖析SQL注入都有哪些常见攻击方式。
?
猜测数据库名,备份数据库
?
猜解字段名称
?
遍历系统的目录结构,分析结构并发现WEB虚拟目录,植入木马
?
查询当前用户的数据库权限
?
设置新的数据库帐户提权得到数据库管理员账户权限
?
利用存储过程获取操作系统管理员账户
?
客户端脚本攻击:通过正常的输入提交方式将恶意脚本提交到数据库中,当其他用户浏览此内容时就会受到恶意脚本的攻击。
?
客户端脚本攻击:通过SQL注入方式将恶意脚本提交到数据库中,直接使用SQL语法UPDATE数据库,并将注入SQL经过“HEX编码”,然后通过exec执行“动态”SQL的特性运行脚本。
?
综上可知,SQL注入对数据库的攻击方式日趋繁多,危害也日益严重,因此如何做好SQL注入的防护工作也就变成考量数据库安全产品的一道标杆。
?
SQL注入的5种防护方式
?
常规的SQL注入防护方式,包括以下几个方面
?
通过正则表达校验用户输入
?
通过参数化存储过程进行数据查询存取
?
参数化SQL语句
?
为数据库添加新架构
?
利用LINQ to SQL查询
?
针对以上SQL 5种注入防护方式,可以在一定程度上避免SQL注入对数据库所带来的入侵危害,但这些操作同步会使数据库操作复杂化,在一定程度上提高了企业运维成本,同时降低数据库操作性能。因此,一种专门针对数据库防护类产品——数据库防火墙诞生,可以针对SQL注入攻击行为进行主动有效的防护。
?
数据库防火墙如何防御SQL注入
?
数据库防火墙作为专业的数据库安全防护工具,而针对SQL注入等数据库攻击行为的防护能力如何,是衡量一款数据库防火墙产品优略的关键要素。
?
目前国内数据库安全的专业厂商安华金和,自主研发推出数据库防火墙(DBFirewall)产品基于对数据库协议的精准解析,对SQL注入行为的分析更加精确,极大程度上避免了对SQL注入攻击行为的漏防与误防。
?
SQL注入的概念来自于Web系统,数据库防火墙在防止SQL注入时,针对已经形成且即将到达数据库的完整SQL,监测是否有非法的操作,并有效阻止针对于数据库的非法入侵行为。
?
?
DBFirewall对于SQL注入行为的识别,可以分为以下三种:
?
通过发送意外数据来触发异常,利用获取数据的GET操作,变更信息的POST操作,结合数据库异常信息,从而判断注入是否发生。
例如:
?
www.abc/show.php?category=bikes
www.abc/show.php?category=bik’’es
?
如果以上两句的执行结果相同,则可能存在SQL注入。
?
利用应用程序试探。如果应用程序没有对数据库服务器返回的错误信息进行处理,那么数据库的错误信息将直接反馈到前台,通过这些错误信息,不但可以识别出SQL注入的 漏洞所在,甚至可能逐步探测出 数据库表信息。
?
根据应用响应时间判断
?
通过上述几种方式可以初步判断SQL注入行为的产生,但是为了提高准确性,安华金和数据库防火墙具有独特的设计流程,通过构建一条有效的SQL语句,帮助用户确认SQL注入行为:
?
1) SQL语句中区分数值类型和字符串类型
?
2) 验证注入SQL代码时,是否是通过注释剩下的查询来成功结束该语句。
?
3) 当web应用程序未显示任何错误时,数据库注入时间延迟。
?
可以检测服务器响应来确定注入
?
安华金和数据库防火墙基于对SQL注入的各种攻击行为,进行有针对性的数据库防护,从而形成更加完备的防护体系。下面列举几种常见的SQL注入攻击行为做分析说明,并具体描述一下DBFirewall是如何进行防护的。
?
1)SQL注入识别数据库
?
攻击方法一:通过获取数据库异常信息,数据库版本信息的方式进行SQL注入攻击
?
防御方法:利用DBFW的配置错误替换规则,对常见的错误信息进行替换
?
攻击方法二:获取版本信息
?
SELECT banner FROMv$version或
SELECT banner FROMv$version WHERE rownum=1
?
防控方法:采用风险评估中的系统表控制规则,或者通过访问控制权限中,对不同的用户控制对系统表的访问权限。
?
2)利用UNION语句提取数据
?
如果应用返回第一个(原始)查询得到的数据,那么通过在第一个查询后面注入一个UNION运算符,并添加另外艺哥任意查询,便可以读取到数据库用户访问过的任何一张表。
?
攻击方法:多次使用各种数据类型替换null,直到系统不再报错为止,例如
?
selectusername,passwordfrom admin union select ‘test’,’test’ from dual
?
如果测试成功,可以替换为:
?
selectusername,passwordfrom admin union select user, ’test’ from d
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sqlserver缓存计划-清除只使用一.. 下一篇Database 'xxxx' is bein..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: