SQLSERVER注入式漏洞攻击分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQLSERVER注入式漏洞攻击分析.doc

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

文档评论(0)

tianma2015 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档