文档介绍:该【SQL注入攻击漏洞研究与防范措施论文 】是由【HShess】上传分享,文档一共【22】页,该文档可以免费在线阅读,需要了解更多关于【SQL注入攻击漏洞研究与防范措施论文 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。SQL注入攻击漏洞研究与防范措施论文第1期题目28第5期辽宁省电子信息产品监督检验院年度论文2009年1月-2-SQL注入攻击漏洞研究与防范措施StructuredQueryLanguageInjectionLeakStudyAndDefenseMeasure姜志坤摘要:在当今的数字世界中,连接的同时,保护网络和计算机系统的安全变得越来越困难。病毒、木马、***、蠕虫等攻击层出不穷,虚假网站的钓鱼行为也让警惕性不高的公众深受其害。为了减轻信息泄露及系统被攻击带来的风险,企业和机构开始对自己的系统进行渗透测试,找出其中存在的漏洞和薄弱环节。本文通过对目前最流行的SQL注入攻击漏洞的攻击方法做了逐一的分析,并提出了检测和防范的措施。关键字:SQL注入攻击脚本攻击网络安全攻击防范模型有害代码SQL注入(SQLInjection)攻击是目前网上最流行最热门的黑客脚本攻击方法之一,那什么是SQL注入式攻击呢?它是指黑客利用一些Web应用程序(论坛、留言本、文章发布系统)中某第1期题目28第5期辽宁省电子信息产品监督检验院年度论文2009年1月-3-用户名(username)和密码(password)两个参数,程序会通过用户所提交输入的用户名和密码来执行授权操作。其原理是通过查找user表中的用户名(username)和密码(password)的结果来进行授权访问,典型的SQL查询语句为:Select*fromuserswhereusername=′admin′andpassword=′smith′如果分别给username和password赋值“admin'or1=1--”和“aaa”。那么,SQL脚本解释器中的上述语句就会变为:select*fromuserswhereusername=′admin′or1=1--andpassword=′aaa′该语句中进行了两个判断,只要一个条件成立,则就会执行成功,而1=1在逻辑判断上是恒成立的,后面的“--”表示注释,即后面所有的语句为注释语句。同理通过在输入参数中构建SQL语法还可以删除数据库中的表,查询、插入和更新数据库中的数据等危险操作:(1)droptableauthors—如果存在authors表则删除。(2)unionselectsum(username)fromusers第1期题目28第5期辽宁省电子信息产品监督检验院年度论文2009年1月-5-—从users表中查询出username的个数。(3)insertintousersvalues(666,′attacker′,′foobar′,0xffff)—在user表中插入值。(4)unionselect@***@version,1,1,1--查询数据库的版本。(5)′dir′通过xp_cmdshell来执行dir命令。,也可以说是一种攻击。当程序中的变量处理不当,对用户提交的数据过滤不足,都可能产生这个漏洞。它的攻击原理就是利用用户提交或可修改的数据,把想要的SQL语句插入到系统实际SQL语句中,轻则获得敏感的信息,重则控制服务器。例如Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,要求用户输入一个名称和密码。攻击者在用户名字和密码输入框中输入1'or'1'='1之类的内容。该内容提交给服务器之后,服务器运行上面的代码构造出查询用户的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的第1期题目28第5期辽宁省电子信息产品监督检验院年度论文2009年1月-6-SQL命令变成:“select*fromuserswhereusername=''or'1'='1'andpassword=''or'1'='1'”。服务器执行查询或存储过程,将用户输入的身份信息和服务器中保存的身份信息进行对比,由于SQL命令实际上已被注入式攻击修改,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。SQL注入是通过目标服务器的80端口进行的,这和普通的Web页面访问没什么两样,所以一般的防火墙不会对这种攻击发出警告或拦截。这种攻击可能引起的危害取决于该网站的软件环境和配置。当Web服务器以操作员的身份访问数据库时,利用SQL注入攻击就可能删除所有表格,创建新表格。而当管理员以超级用户的身份访问数据库时,利用SQL注入攻击就可能控制整个SQL服务器,在某些配置下攻击者甚至可以自行创建用户账号以完全操作数据库所在的服务器。SQL注入的方法很多,而且在攻击时会碰到各种各样的SQL语句,所以一般攻击者需要丰富的经验和耐心,才能绕过一些检测和处理提交构造的SQL语句,从而获得想要的有用信息。这个过程需要花费很多的时间,如果仅以这种手动方式进行SQL注入攻击第1期题目28第5期辽宁省电子信息产品监督检验院年度论文2009年1月-7-的话,许多存在SQL注入漏洞的ASP网站会安全很多了,不是漏洞不存在了,而是利用这个漏洞入侵的成本太高了。但现在攻击者可用一些现成的黑客工具来辅助SQL注入攻击,加快入侵的速度。由于SQL注入攻击利用的是SQL语法,使得这种攻击具有广泛性。理论上说,对于所有基于SQL语言标准的数据库软件都是有效的,包括MSSQLServer,Oracle,DB2,Sybase,MySQL等。当然,各种软件有自身的特点,最终的攻击代码可能不尽相同。(1)绕过身份认证机制一个登录界面,需要输入用户名和密码,然后Post到另一个页面,进行身份认证,因此攻击者只需在用户名和密码的输入框中都输入"’or’1’=’1"的内容,那么攻击者就可以不经过任何认证而直接进入下一个页面,并拥有和正常登录用户一样的全部特权。原因是什么呢?我们比较一下正常用户登第1期题目28第5期辽宁省电子信息产品监督检验院年度论文2009年1月-7-录和攻击者登录时的两种SQL语句:1)正常用户(用户名为grace,密码为1111):SQL="select3fromadminwhereusername=’grace’andpassword=’1111’2)攻击者(用户名和密码都为"’or’1’=’1"):SQL="select3fromadminwhereusername=’’or’1’=’1’andpassword=’’or’1’=’1’可以看到由and连接的两个条件都被一个永远成立的’1’=’1’所代替,执行的结果为真,因此服务器也会认为条件成立,于是把login标志设为true,让攻击者以合法身份登录进入下一个页面。(2)对数据库系统进行读取、插入、?id=1,程序设计者原本设计意图是显示id为1的商品信息,而攻击者利用程序中没有对id的内容进行检查之机,插入自己的代码。第1期题目28第5期辽宁省电子信息产品监督检验院年度论文2009年1月-8-:SQL="select3fromproductwhereproductid=’"&request("id")&"’",conn,0,3可以看到,id没有进行任何的处理,直接构成SQL语句并执行,而攻击者在知道该系统的数据库中表及表中字段名称的情况下(目前网上免费的论坛系统或是商业网站代码非常多),利用SQL语句特性(分号是将两句SQL语句分开的符号),直接向数据库中添加记录:?id=1;Insertinto"admin"(’username’,’password’,’type’)values(’hacker’,’pass123456’,’管理员’),然后攻击者就可以直接用刚才建立的帐户进行登录了。通过这样的方法,攻击者还可以对系统做任何的事情,包括增加、修改、删除记录。(3)执行系统命令如果Web主机使用MSSQL数据库系统,,那么攻击者就可以用到xp_cmdshell这个扩展存储过程,xp_cmdshell是一个非常有用的扩展存储过程,用于执行系统命令,等,攻击者可以根据程序的不同,提交不同的语句:第1期题目28第5期辽宁省电子信息产品监督检验院年度论文2009年1月-10-?id=1;?exec??’dir’?id=1;?exec??’dir’或者可以插入下面的语句netuserhacker/addnetlocalgroupadministratorshacker/add来向Web主机系统中加入一个非法的管理员帐号,不过这样的做法必须同时满足几个条件,首先ASP使用的SQLSERVER帐号必须是管理员,其次请求的提交变量在整个SQL语句的最后,否则构造出来的SQL语句在语法上是错误的,也就不可能执行成功。。入侵前的检测,可以通过手工方式,也可以使用SQL注入工具软件。检测的目的是为预防SQL注入攻击,而对于SQL注入攻击后的检测,主要是针对日志的检测,SQL注入攻击成功后,会在IIS日志和数据库中留下第1期题目28第5期辽宁省电子信息产品监督检验院年度论文2009年1月-11-