欢迎来到天天文库
浏览记录
ID:18567684
大小:197.24 KB
页数:11页
时间:2018-09-19
《sqlserver注入式漏洞攻击分析new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SQLServer注入式漏洞攻击分析及防范措施马超B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。但由于该模式是建立在广域网之上,面向不可知的用户群,对安全的控制能力较弱,尤其是对于早期开发的基于SQLServer的系统,弊端较多,主要表现在以下方面:1.弱口令:有些后台管理密码是默认的用户名及密码,例如都是
2、admin。2.操作系统漏洞:一些网站服务器操作系统没有及时更新补丁,存在漏洞。3.Web服务器漏洞:一些网站采用低版本的IIS或Apache,存在漏洞。4.数据库漏洞:所使用的数据库存在漏洞。5.网站代码漏洞:由于网站开发的比较早,这些代码或多或少存在漏洞。在上述这些漏洞中,弱口令、操作系统漏洞、Web服务器漏洞、数据库漏洞都很容易修复,例如,这些可能通过设置复杂密码、打补丁的方式修复,而网站代码漏洞以及由此引发的SQL—11—Server网站注入漏洞,只能通过修改网站代码的方式来解决。据统计,现有网站中至少有50
3、%以上的站点存在SQL注入的缺陷,随着2013年一月份至少五十万个网站遭受SQL注入攻击,代表着“第三波”SQL注入攻击的到来。恶意的用户可以利用服务器、数据库配置的疏漏和精心构造的非法语句通过程序或脚本入侵服务器并获得网站管理员的权限及相关数据库的内容,有的还可以获得整个服务器所在内网的系统信息,甚至威胁到系统和用户本身。一、什么是SQLServer注入式攻击在B/S模式中,用户与服务器之间的交互明显增多,这些交互大都是用户通过网页上按要求提交表单给服务器,再由服务器端的数据库执行后反馈给用户,SQL注入就是利用W
4、eb服务器及ASP脚本漏洞对服务器进行入侵,其利用的是正常的HTTP服务端口,表面上看来和正常的web访问没有区别,隐蔽性极强,不易被发现,注入者从客户端合法接口提交特殊的非法代码,让其注入到服务器端执行业务的SQL中去,进而改变SQL语句的原有逻辑和影响服务器端正常业务的处理。二、SQLServer注入式手段注射式攻击的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会将程序命令当作用户输入的数据提交给We程序,以发号施令,为所欲为。—11—SQL注射能使攻击者绕过认证机制,完全控制
5、远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起。如果开发人员不细心,用户数据就有可能被解释成命令,这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。上图为SQL注入攻击过程,以下介绍两种攻击方法。—11—第一种:通过编译SQL语句,借助登陆页面进行注入。示例如下:现有一个登陆页面用
6、来控制网站的入口,用户想要进入只有输入“用户名”和“密码”,负责用户登录处理的页面接受到请求后,将登陆框中的用户名和密码与数据库表格中存放用户信息的表格进行逐行比对,看是否存在这个用户名和密码,如果存在则让其进入,否则拒绝。例如存放人员信息的表格名称为“usertable”,表格中存放用户名和密码的字段分别为“name”,“pswd”,进行验证的SQL语句如下:select*fromusertablewherename='用户名'andpswd='密码'执行完这条SQL语句后,如果记录数等于零说明在usertable
7、表找不到用户名和密码对应的记录,应该拒绝;如果记录数大于零则说明能在usertable表中找到对应的记录,应予放行。如果用户通过某种途径知道或是猜测出了验证SQL语句的逻辑,他就有可能在表单中输入特殊—11—字符改变SQL原有的逻辑,比如在名称文本框中输入“'or'1'='1'or'1'='1”或是在密码文本框中输入“1'or'1'='1”,SQL语句将会变成:1.select*fromusertablewherename=''or'1'='1'or'1'='1'andpswd=''2.select*fromuser
8、tablewherename=''andpswd='1'or'1'='1'很明显,or和单引号的加入使得where后的条件始终是true,原有的验证完全无效了。现如今部分网站在管理时形成惯性思维,经常使用“admin”为超管的用户名,为网站的安全留下了非常大的隐患。进行验证的SQL语句如下:select*fromusertablewherena
此文档下载收益归作者所有