Winodws平台下WEB服务器部署SQL注入防御体系.docx
- 文档编号:2824741
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:35
- 大小:480.16KB
Winodws平台下WEB服务器部署SQL注入防御体系.docx
《Winodws平台下WEB服务器部署SQL注入防御体系.docx》由会员分享,可在线阅读,更多相关《Winodws平台下WEB服务器部署SQL注入防御体系.docx(35页珍藏版)》请在冰豆网上搜索。
Winodws平台下WEB服务器部署SQL注入防御体系
Winodws平台下WEB服务器部署SQL注入防御体系
【摘要】SQL注入:
利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义。
随着B/S模式被广泛的应用,用这种模式编写应用程序的程序员也越来越多,但由于开发人员的水平和经验参差不齐,相当一部分的开发人员在编写代码的时候,没有对用户的输入数据或者是页面中所携带的信息(如Cookie)进行必要的合法性判断,导致了攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得一些他想得到的数据。
SQL注入利用的是正常的HTTP服务端口,表面上看来和正常的web访问没有区别,隐蔽性极强,不易被发现。
观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的。
虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施。
黑客入侵、挂马、网页篡改……网站安全存在的种种问题令人担忧,那么是否有方法能彻底地解决网站安全问题呢?
如果所有网站在每个代码开发环节中,能做好充分的安全性代码检查工作,确定没有任何安全漏洞再上线使用,并做好安全维护工作,问题大概就能彻底解决。
但这种方式对一个网站来说无疑是投入很大的,甚至让绝大多数的网站根本无法承受。
有没有更简单有效的方式解决网站安全问题,成为网站安全的一个热点。
网络攻击的发展趋势是逐渐转向高层应用。
根据Gartner的分析,目前对网络的攻击有70%以上是集中在应用层,并且这一数字呈上升趋势。
应用层的攻击有可能会造成非常严重的后果,比如用户帐号丢失和公司机密泄漏等。
因此,对具体应用的有效保护就显得越发重要。
而IPS作为应用层的重要安全防护工具能够对网络起到较好的实时防护作用。
本专题就将为您展现IPS的另一面防护技术。
随着B/S模式被广泛的应用,用这种模式编写应用程序的程序员也越来越多,但由于开发人员的水平和经验参差不齐,相当一部分的开发人员在编写代码的时候,没有对用户的输入数据或者是页面中所携带的信息(如Cookie)进行必要的合法性判断,导致了攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得一些他想得到的数据。
据赛门铁克2006年3月的互联网安全威胁报告(第九期)显示:
目前有近70%的攻击行为是基于WEB应用,而据CVE的2006年度统计数据显示,SQL注入攻击漏洞呈逐年上升的状态,2006年更是达到了惊人的1078个,而这些还仅限于通用应用程序的漏洞,不包括更为庞大的专业web应用程序所存在的漏洞。
而针对SQL注入漏洞的各种攻击工具和攻击教程更是层出不穷,掌握1~2种攻击工具的scriptguy(脚本小子)就可以轻易的攻破网络数据库的防线:
篡改数据、获得权限……SQL注入攻击作为深层威胁的一种,已经越来越多地受到用户的关注,如何准确、及时的判断并防御这种危害极大的深层攻击行为,是入侵防御系统责无旁贷的责任。
这就要求入侵防御系统本身提供对这种无固定表现形式、种类繁多的攻击行为的准确检测。
目前各大企业,学校和政府机关都拥有了自己的网站,通过自己的网站发布各类信息,实现了企业信息化、电子政务、电子商务等各种Web业务。
通常网站的建设使用的是ASP,PHP,JSP等脚本编程语言,以实现各种动态效果。
据资料统计,国内的网站用ASP结合Access或SQLServer数据库的大约占70%以上,使用PHP结合MySQL数据库的占20%,其他的不足10%。
Web业务的迅速发展引起了黑客们的强烈关注,他们将注意力从以往对传统网络服务器的攻击逐步转移到了对Web业务的攻击上。
根据Gartner这家全球最具权威的IT研究与顾问咨询公司的调查,信息安全攻击有75%都是发生在Web应用层而非网络层面上。
同时,数据也显示,2/3的Web站点都相当脆弱,易受攻击。
SQL注入攻击是威胁Web安全的核心问题。
这种攻击方式具有以下一些特点:
1.掌握起来难度较小,攻击者只需具备基本的脚本编程基础和数据库理论即可实行攻击。
2.变化多样,有经验的攻击者会手动调整攻击参数,致使攻击数据的变种是不可枚举的,这导致传统的特征匹配检测方法仅能识别相当少的攻击,难以防范。
3.攻击过程简单,攻击者可以使用网上流传的各种现有的攻击工具发动针对特定目标的大量有效攻击,配合手动攻击方式,致使这种攻击相当容易成功。
4.隐蔽性,这种攻击方式都是从正常的WWW端口访问,表面上看起来与正常的Web页面访问基本没有区别,所以目前市面上的防火墙都不会对SQL注入发出警报。
如果管理员没有查看IIS日志的习惯,可能被入侵了很长时间都不会发觉。
5.危害大,由于Web编程自身的缺陷以及具有安全编程能力的开发人员少之又少,大多数Web业务系统均具有被注入攻击的可能。
而攻击者一旦攻击成功,就可以控制整个业务系统,对数据做出任何修改,甚至可以通过搭配其他攻击手段拿到整个服务器的最高权限,破坏力达到极致。
在防御方面,从根本上讲,最有效的防御SQL注入攻击的方法是加强Web系统的代码安全性,对所有传回数据库的访问语句加以关键词过滤,限制那些敏感的可能造成注入的代码访问数据库。
但这种防御方法将会使得程序员需要重写已有的Web业务系统代码,当系统比较庞大的时候,这种工作量将会十分巨大。
各大安全厂商均推出了自己的IPS(入侵防御系统),可以从很大程度上防御普通的SQL注入攻击。
但是IPS的价格并不是所有拥有Web业务的单位都可以承受的。
因此,我们必须寻求一种理想的防御思路,这种思路必须满足可以抵御SQL注入攻击,工作量小,不影响Web系统结构等要求。
什么是SQL注入
SQL注入:
利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义。
SQL注入利用的是正常的HTTP服务端口,表面上看来和正常的web访问没有区别,隐蔽性极强,不易被发现。
如上图所示,SQL注入攻击过程分为五个步骤:
第一步:
判断Web环境是否可以SQL注入。
如果URL仅是对网页的访问,不存在SQL注入问题,如:
第二步:
寻找SQL注入点。
完成上一步的片断后,就要寻找可利用的注入漏洞,通过输入一些特殊语句,可以根据浏览器返回信息,判断数据库类型,从而构建数据库查询语句找到注入点。
第三步:
猜解用户名和密码。
数据库中存放的表名、字段名都是有规律可言的。
通过构建特殊数据库语句在数据库中依次查找表名、字段名、用户名和密码的长度,以及内容。
这个猜测过程可以通过网上大量注入工具快速实现,并借助破解网站轻易破译用户密码。
第四步:
寻找WEB管理后台入口。
通常WEB后台管理的界面不面向普通用户
开放,要寻找到后台的登陆路径,可以利用扫描工具快速搜索到可能的登陆地址,依次进行尝试,就可以试出管理台的入口地址。
第五步:
入侵和破坏。
成功登陆后台管理后,接下来就可以任意进行破坏行为,如篡改网页、上传木马、修改、泄漏用户信息等,并进一步入侵数据库服务器。
SQL注入攻击的特点:
变种极多,有经验的攻击者会手动调整攻击参数,致使攻击数据的变种是不可枚举的,这导致传统的特征匹配检测方法仅能识别相当少的攻击,难以防范。
攻击过程简单,目前互联网上流行众多的SQL注入攻击工具,攻击者借助这些工具可很快对目标WEB系统实施攻击和破坏。
危害大,由于WEB编程语言自身的缺陷以及具有安全编程能力的开发人员少之又少,大多数WEB业务系统均具有被SQL注入攻击的可能。
而攻击者一旦攻击成功,可以对控制整个WEB业务系统,对数据做任意的修改,破坏力达到及至。
SQL注入的主要危害包括
XX状况下操作数据库中的数据、恶意篡改网页内容、私自添加系统帐号或者是数据库使用者帐号、网页挂木马
SQL注入通过网页对网站数据库进行修改。
它能够直接在数据库中添加具有管理员权限的用户,从而最终获得系统管理员权限。
黑客可以利用获得的管理员权限任意获得网站上的文件或者在网页上加挂木马和各种恶意程序,对网站和访问该网站的网友都带来巨大危害。
防御SQL注入妙法
第一步:
下载SQL通用防注入系统的程序,在需要防范注入的页面头部用
--#includefile=”xxx.asp”-->来防止别人进行手动注入测试。
可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点,然后只需几秒钟,你的管理员帐号及密码就会被分析出来。
第二步:
对于注入分析器的防范,笔者通过实验,发现了一种简单有效的防范方法。
首先我们要知道SQL注入分析器是如何工作的。
在操作过程中,发现软件并不是冲着“admin”管理员帐号去的,而是冲着权限(如flag=1)去的。
这样一来,无论你的管理员帐号怎么变都无法逃过检测。
第三步:
既然无法逃过检测,那我们就做两个帐号,一个是普通的管理员帐号,一个是防注入的帐号。
为什么这么说呢?
笔者想,如果找一个权限最大的帐号制造假象,吸引软件的检测,而这个帐号里的内容是大于千字以上的中文字符,就会迫使软件对这个帐号进行分析的时候进入全负荷状态甚至资源耗尽而死机。
下面我们就来修改数据库吧。
1、对表结构进行修改。
将管理员的帐号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得大点,可以选择备注型),密码的字段也进行相同的设置。
2、对表进行修改。
设置管理员权限的帐号放在ID1,并输入大量中文字符(最好大于100个字)。
3、把真正的管理员密码放在ID2后的任何一个位置(如放在ID549上)。
我们通过上面的三步完成了对数据库的修改。
这时是不是修改结束了呢?
其实不然,要明白你做的ID1帐号其实也是真正有权限的帐号,现在计算机处理速度那么快,要是遇上个一定要将它算出来的软件,这也是不安全的。
我想这时大多数人已经想到了办法,对,只要在管理员登陆的页面文件中写入字符限制就行了!
就算对方使用这个有上千字符的帐号密码也会被挡住的,而真正的密码则可以不受限制
防御和检查SQL注入的手段
1.使用参数化的过滤性语句
要防御SQL注入,用户的输入就绝对不能直接被嵌入到SQL语句中。
恰恰相反,用户的输入必须进行过滤,或者使用参数化的语句。
参数化的语句使用参数而不是将用户输入嵌入到语句中。
在多数情况中,SQL语句就得以修正。
然后,用户输入就被限于一个参数。
下面是一个使用Java和JDBCAPI例子:
PreparedStatementprep=conn.prepareStatement("SELECT*FROMUSERSWHERE
PASSWORD=?
");
prep.setString(1,pwd);
总体上讲,有两种方法可以保证应用程序不易受到SQL注入的攻击,一是使用代码复查,二是强迫使用参数化语句的。
强迫使用参数化的语句意味着嵌入用户输入的SQL语句在运行时将被拒绝。
不过,目前支持这种特性的并不多。
如H2数据库引擎就支持。
2.还要避免使用解释程序,因为这正是黑客们借以执行非法命令的手段。
3.防范SQL注入,还要避免出现一些详细的错误消息,因为黑客们可以利用这些消息。
要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。
4.使用专业的漏洞扫描工具。
但防御SQL注入攻击也是不够的。
攻击者们目前正在自动搜索攻击目标并实施攻击。
其技术甚至可以轻易地被应用于其它的We
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Winodws 平台 WEB 服务器 部署 SQL 注入 防御 体系