您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > sql注入攻击-数据安全
关注数据库安全©Allrightsreserved案例一新华网12月22日国内最大的程序员网站CSDN网站21日被曝600万用户的数据库信息被黑客公开。随后网上出现人人网、开心网、天涯、多玩、世纪佳缘、珍爱网、美空网、百合网、178、7K7K等知名网站的用户数据资料也被放到网上公开下载案例一(续)截至目前,除CSDN发表声明承认用户数据库信息泄露外,其他网站还没有正面回应。此次规模空前的用户数据信息泄露事件已经引起网民极大关注后果很严重360网络安全专家石晓虹博士表示,目前除CSDN外,已经通过技术验证确认有其它网站用户数据库信息被泄露。“由于许多网民的邮箱、微博、游戏、网上支付、购物等账号设置了相同的密码,如果一家网站服务器被黑客攻破,用户的常用邮箱和密码泄露后,可能导致网上支付等其他重要账号一并失窃。”后果很严重CSDN已经发表声明公开道歉,并要求相关用户立即修改密码,还表示已向公安机关正式报案。目前,360、金山等网络安全企业已经启动红色安全预警,但牵涉其中的具体用户数量尚不清楚,危害程度也难以评估。还没有相关管理部门就此事件表态。原因CSDN据说备份数据遭到攻击CSDN网站早期使用过明文密码(即可以直接看懂的密码)。2009年4月之后改成加密密码,但部分明文密码未清理;2010年8月底清理掉了所有明文密码。案例二2011年8月22日金山毒霸防黑墙日志显示,拦截到大量针对1433端口(SQLServer数据库服务使用的端口)的攻击。分析攻击数据后得知,黑客使用批量抓鸡工具随机扫描安装了SQL数据库的计算机,攻击成功会导致安装SQLServer的计算机被远程控制。案例三今年4月26日,日本索尼公司发布通告,承认黑客侵入旗下“游戏站”和云音乐服务Qriocity网络,窃取大量用户个人信息。随后,索尼在希腊、泰国和印度尼西亚以及旗下索尼爱立信加拿大公司的网站遭受攻击。几轮攻击中,总计超过1亿索尼在线账户受影响。案例四美国银行业巨头花旗集团2011年6月9日承认,黑客窃取一些北美地区客户的信用卡信息。黑客攻击数据库的六大手段强力(或非强力)破解弱口令或默认的用户名及口令特权提升利用未用的和不需要的数据库服务和和功能中的漏洞针对未打补丁的数据库漏洞SQL注入窃取备份(未加密)的磁带以前的Oracle数据库有一个默认的用户名:Scott及默认的口令:tiger;而微软的SQLServer的系统管理员账户的默认口令是也是众所周知。这些默认的登录对于黑客来说尤其方便,借此他们可以轻松地进入数据库。保护自己免受口令攻击:避免使用默认口令,建立强健的口令管理程序并对口令经常改变特权提升有几种内部人员攻击的方法可以导致恶意的用户占有超过其应该具有的系统特权。而且外部的攻击者有时通过破坏操作系统而获得更高级别的特权特权提升通常更多地与错误的配置有关:一个用户被错误地授与了超过其实际需要用来完成工作的、对数据库及其相关应用程序的访问和特权。利用未用的和不需要的数据库服务和功能中的漏洞一个外部的攻击者会寻找较弱的数据库口令,看其潜在的受害人是否在运行其Oracle数据库上运行监听程序(Listener)功能。监听程序可以搜索出到达Oracle数据库的网络连接,并可以转发此连接,这样一来就会将用户和数据库的链接暴露出来。针对未打补丁的数据库漏洞好消息是Oracle和其它的数据库厂商确实在为其漏洞打补丁。坏消息是单位不能跟得上这些补丁,这些数据库并没有打补丁,如果一个黑客能够比较版本,并精确地找出漏洞在什么地方,那么,他就可以跟踪这个数据库。窃取(未加密的)备份磁带如果备份磁带在运输或仓储过程中丢失,而这些磁带上的数据库数据又没有加密的话,这时黑客根本不需要接触网络就可以实施破坏。人们备份了许多数据,但却疏于跟踪和记录。磁带容易遭受攻击,因为没有人会重视它,而且企业在多数时间并不对其加密Sql注入攻击观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的知彼知己,方可取胜。首先要清楚SQL注入攻击有哪些种类。SQL注入攻击有哪些种类没有正确过滤转义字符Incorrecttypehandling数据库服务器中的漏洞盲目SQL注入式攻击条件响应条件性差错时间延误没有正确过滤转义字符SELECT*FROMusersWHEREname='+userName+';这种代码的设计目的是将一个特定的用户从其用户表中取出,但是,如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的作者所期望的那样了。例如,将用户名变量(即username)设置为:没有正确过滤转义字符(二)SELECT*FROMusersWHEREname='a'OR't'='t';如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。没有正确过滤转义字符(三)在一些SQL服务器上,如在SQLServer中,任何一个SQL命令都可以通过这种方法被注入,包括执行多个语句。下面语句中的username的值将会导致删除“users”表,又可以从“data”表中选择所有的数据(实际上就是透露了每一个用户的信息)。SELECT*FROMusersWHEREname='a';DROPTABLEusers;SELECT*FROMDATAWHEREnameLIKE'%';其它的SQL执行不会将执行同样查询中的多个命令作为一项安全措施。这会防止攻击者注入完全独立的查询,不过却不会阻止攻击者修改查询。没有正确过滤转义字符(三)如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。例如:SELECT*FROMdataWHEREid=+a_variable+;IncorrecttypehandlingIncorrecttypehandling从这个语句可以看出,作者希望a_variable是一个与“id”字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。例如,将a_variable设置为:1;DROPTABLEusers,它会将“users”表从数据库中删除SELECT*FROMDATAWHEREid=1;DROPTABLEusers;数据库服务器中的漏洞盲目SQL注入式攻击当一个Web应用程序易于遭受攻击而其结果对攻击者却不见时,就会发生所谓的盲目SQL注入式攻击。有漏洞的网页可能并不会显示数据,而是根据注入到合法语句中的逻辑语句的结果显示不同的内容。这种攻击相当耗时,因为必须为每一个获得的字节而精心构造一个新的语句。盲目SQL注入式攻击但是一旦漏洞的位置和目标信息的位置被确立以后,一种称为Absinthe的工具就可以使这种攻击自动化。条件响应注意,有一种SQL注入迫使数据库在一个普通的应用程序屏幕上计算一个逻辑语句的值:SELECTbooktitleFROMbooklistWHEREbookId='OOk14cd'AND1=1条件响应这会导致一个标准的页面,而语句SELECTbooktitleFROMbooklistWHEREbookId='OOk14cd'AND1=2在页面易于受到SQL注入式攻击时,它有可能给出一个不同的结果。如此这般的一次注入将会证明盲目的SQL注入是可能的,它会使攻击者根据另外一个表中的某字段内容设计可以评判真伪的语句。条件性差错如果WHERE语句为真,这种类型的盲目SQL注入会迫使数据库评判一个引起错误的语句,从而导致一个SQL错误。例如:SELECT1/0FROMusersWHEREusername='Ralph'。显然,如果用户Ralph存在的话,被零除将导致错误。时间延误时间延误是一种盲目的SQL注入,根据所注入的逻辑,它可以导致SQL引擎执行一个长队列或者是一个时间延误语句。攻击者可以衡量页面加载的时间,从而决定所注入的语句是否为真。总结以上仅是对SQL攻击的粗略分类。但从技术上讲,如今的SQL注入攻击者们在如何找出有漏洞的网站方面更加聪明,也更加全面了。出现了一些新型的SQL攻击手段。黑客们可以使用各种工具来加速漏洞的利用过程。theAsproxTrojan木马首先,通过受到控制的主机发送的垃圾邮件将此木马安装到电脑上然后,受到此木马感染的电脑会下载一段二进制代码,在其启动时,它会使用搜索引擎搜索用微软的ASP技术建立表单的、有漏洞的网站。搜索的结果就成为SQL注入攻击的靶子清单。theAsproxTrojan木马接着,这个木马会向这些站点发动SQL注入式攻击,使有些网站受到控制、破坏。访问这些受到控制和破坏的网站的用户将会受到欺骗,从另外一个站点下载一段恶意的JavaScript代码。最后,这段代码将用户指引到第三个站点,这里有更多的恶意软件,如窃取口令的木马。防御和检查SQL注入的手段使用参数化的过滤性语句要防御SQL注入,用户的输入就绝对不能直接被嵌入到SQL语句中。恰恰相反,用户的输入必须进行过滤,或者使用参数化的语句。参数化的语句使用参数而不是将用户输入嵌入到语句中。在多数情况中,SQL语句就得以修正。然后,用户输入就被限于一个参数。防御和检查SQL注入的手段还要避免使用解释程序,因为这正是黑客们借以执行非法命令的手段避免出现一些详细的错误消息,因为黑客们可以利用这些消息。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。防御和检查SQL注入的手段使用专业的漏洞扫描工具。如大名鼎鼎的Acunetix的Web漏洞扫描程序等。一个完善的漏洞扫描程序不同于网络扫描程序,它专门查找网站上的SQL注入式漏洞。企业要在Web应用程序开发过程的所有阶段实施代码的安全检查。攻击方法欣赏一相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。如这是一个正常的网址=444,将这个网址提交到服务器后,服务器将进行类似Select*from表名where字段=&ID的查询(ID即客户端提交的参数,本例是即444),再将查询结果返回给客户端,如果这里客户端故意提交这么一个网址:=444anduser0,这时,服务器运行Select*from表名where字段=444anduser0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下:攻击方法欣赏一·错误类型:[Microsoft][ODBCSQLServerDriver][SQLServer]将nvarchar值'sonybb'转换为数据类型为int的列时发生语法错误。/lawjia/show.asp,第47行攻击方法欣赏一但是别有用心的人从这个出错信息中,可以获得以下信息:该站使用MS_SQL数据库,用ODBC连接,连接帐号名为:sonybb。通常别有用心者的目标是获取网站管理员的帐号和密码。比如当某个人知道网站管理员帐号存在表login中,管理员帐号名为admin,他想知道管理员密码,这里他从客户端接着提交这样一个网址:攻击方法欣赏一=444and(SelectpassWordfromloginwhereuser_name=‘admin’)0,返回的出错信息如下:[Microsoft][ODBCSQLServerDriver][SQLServer]将varchar值‘!@#*&admin’转换为数据类型为int的列时发生语法错误。攻击方法欣赏一你知道吗?上面标红的部分就是管理员帐
本文标题:sql注入攻击-数据安全
链接地址:https://www.777doc.com/doc-3899532 .html