安华金和:数据库攻击原理分析(三)摘要:本文将通过对SQL注入攻击技术和数据库加密技术原理以及防护效果进行深入的分析,来辨析数据库安全技术误 区“数据库加密能解决SQL注入”,同时本文也给出了SQL注入的防护方法。数据库安全误区针对2015年4月互联网大规模报道的全国30 省市社保等行业用户信息泄露事件,安华金和对乌云历史报道的社保行业相关漏洞进行集中分析,得出的结论为:大量的信息泄露主要是由于软件中 存在的SQL注入漏洞被黑客利用引起的,我们可以把SQL注入比作黑客攻击数据库“锋利的矛”。有了攻击用的矛,我们再来看防守用的盾:数 据库加密技术真正实现了敏感数据的加密存储,采用国内外主流的加密算法,确保加密后的数据通过非正常手段获取后十年内难以非法破解,同时通 过独立权控、应用绑定,防止绕过合法应用程序的数据库访问和对内部高权限人员的运维操作管控,号称数据库安全中的王冠,我们可以把数据库加 密技术比作数据安全防护措施中“坚固的盾”。《韩非子·难一》所述的故事中提到:“以子之矛,陷子之盾,何如?”虽然这是个众人皆知的故事 ,但是现实版的“矛与盾”的故事又发生在大学教材《信息系统安全概论》中,下面我们先引用教材中的原文:对于安全管理员来说,是否可以通过 数据库加密来防止SQL注入呢?在详细解释两种攻防技术前,我们对一个误区给予纠正:数据库加密技术无法抵御SQL注入。原因是数据库加密 解决信用卡信息存储安全等问题,而SQL注入是利用应用的弱点窃取数据,由于合法应用肯定能看到明文的信息卡数据,因此加密防守无效。那S QL注入如何正确防护呢?下面我们先了解下SQL注入攻击的原理。对于安全管理员来说这也是必要的,因为不仅要了解防护的手段,同时也应该 深入了解SQL注入的原理,实现有针对性的安全防护。SQL注入攻击的原理分析SQL注入数据库攻击指构建特殊的输入作为参数传入Web应 用程序,比如通过提交表单的文本框输入,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原 因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。常见的SQL注入案例有两种情况,一种是伪装登录应用系统,另一种是在 有登录账号的情况下,在应用系统后续的提交表单的文本框中找到SQL注入点,然后利用注入点批量窃取数据。如下两图的输入:登陆注入:在 应用系统用户名栏中输入<<''/>>在密码中输入<>后台sql为:select…wherena me=''''/''andpwd=''/or''1''=''1'';此方法拼接出的sql为恒真结果,直接成功登陆;查询注入:在人事 信息的“电话号码”查询条件栏中输入<<''or''1''=''1‘-->>后台sql为:select…wherephone= ''''or''1''=''1''--'';此种方法sql语句的where条件恒真,将获得所有人的信息SQL注入的典型场景一,通过伪装登录窃取 数据,主要是通过or运算符。窃取数据假设后台的拼接语句为selectfromtablewherecolumn1= ‘文本框输入值’;Eg1:如输入值为《abc’or‘1’=‘1》,则语句拼接为select…whe recolumn1=‘abc’or‘1’=‘1’;由于’1’=‘1’是恒真,则该可以看到了整表的全部数据。骗取登录一般 系统的登录需要输入用户名、密码;后台拼接的语句为selectfromtwherename=‘用户名’andpw d=md5(‘密码’);Eg1:如输入用户名《abc’or1=1or1=‘def》,密码《abcd》则语句 拼接为:select…wherename=‘abc’or1=1or1=‘def’andpwd=md5 (‘abcd’);由于1=1是恒真,则该语句永远为真,可以成功登录了。SQL注入典型场景二,探测(通过and运算)。探测系统变 量…anduser>0我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvar char。拿一个nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出 错,SQLServer的出错提示是:将nvarchar转换int异常,XXXX不能转换成int。探测系统对象名先猜表名… and(Selectcount()from表名)<>0猜列名…and(Selectcount(列名)from 表名)<>0数据库加密防护效果分析面临风险应对策略数据库文件采用明文存储以列为单位有选择的进行加密,将信用卡信息表中的姓名、身 份证、信用卡等敏感信息加密存储。加密前加密后面临风险应对策略数据库正常运维操作和敏感数据访问操作从权限上无法分开。通过独立权控体系 ;通过三权分立的方式提升安全性;避免数据库维护人员直接接触明文数据面临风险应对策略绕过应用服务器的访问。通过客户端权限区分合法 访问源,可对访问源的IP,访问时间进行鉴别,只有通过合法访问源才可以访问到数据。面临风险应对策略绕过应用程序的访问。通过应用绑 定技术实现应用身份鉴别。只有通过合法应用,才可以访问到被保护的敏感数据。面临风险应对策略数据库备份明文存储。对数据库文件底层直 接加密,数据库备份文件导出后内容仍为密文,备份文件还原后仍为密文。数据库加密防护总结:结论:SQL注入如何防护卡尔的SQL注入攻击 就是利用合法应用的弱点获取信息卡资料的,即使数据库信用卡信息加密了,从存储文件上看是密文,但是对于合法应用发过来的查询语句,数据库 也必然解密后将明文数据发回web应用系统。数据库安全专家安华金和建议通过WAF和数据库防火墙相结合来实现SQL注入的有效防护。WAF通过黑名单机制针对有SQL注入特征的表单内容进行拦截,数据库防火墙通过构建合法应用的行为模型和SQL注入特征库实现SQL注入行为的有效拦截,同时还能够对运维终端的恶意操作进行拦截。 |
|