注册
登录
论坛
搜索
全国城市地图
帮助
导航
默认风格
宝石蓝
fervor
jeans
uchome
fashion
greenwall
私人消息 (0)
公共消息 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
IT家园
»
企业网管
» SQL注入攻击-来自微软安全博客的建议
返回列表
发帖
西布伦
发短消息
加为好友
西布伦
当前离线
UID
6
帖子
17344
精华
21
积分
26510
阅读权限
200
来自
辽宁沈阳
在线时间
1931 小时
注册时间
2005-12-28
最后登录
2016-4-4
管理员
帖子
17344
积分
26510
注册时间
2005-12-28
1
#
跳转到
»
倒序看帖
打印
字体大小:
t
T
发表于 2008-6-4 09:43
|
只看该作者
[资讯]
SQL注入攻击-来自微软安全博客的建议
SQL注入攻击-来自微软安全博客的建议
本文翻译自微软博客上刊载的相关文章,英文原文版权归原作者所有,特此声明。
原文:
http://blogs.technet.com/swi/arc ... jection-attack.aspx
本文译言地址:
http://www.yeeyan.com/articles/view/hanguofeng/8955
近期趋势
从去年下半年开始,很多网站被损害,他们在用于生成动态网页的SQL数据库中存储的文本中被注入了恶意的HTML <script>标签。这样的攻击在2008年第一季度开始加速传播,并且持续影响有漏洞的Web程序。
这些Web应用程序有这样一些共同点:
* 使用经典ASP代码的程序
* 使用SQL Server数据库的程序
应用程序代码根据URI请求字符动态地生成SQL查询(
http://consoto.com/widgets.asp?widget=sprocket
)这体现了一种新的SQL注入(SQL injection)的途径(
http://msdn.microsoft.com/en-us/library/ms161953.aspx
)。在过去,SQL注入攻击的目标是具有如下特点的特殊Web应用程序:攻击者知道或者可以探测出后台数据库的漏洞或者结构。这样的攻击(指本文讨论的攻击- 译者注)不同,因为它是抽象的,对于攻击来说,任何存在于使用URI请求字符串动态创建SQL查询的ASP页面都可能存在。你可以在
http://blogs.technet.com/neilcar ... nt-part-2-meat.aspx
找到更多的技术详情和简单代码。
这样的攻击并非利用了Window、IIS、SQL Server或者其他底层代码的漏洞,而是利用了在这些平台上运行的由程序员自行编写的代码中的漏洞。Microsoft已经对这些攻击进行了彻底的调查,并且发现,他们和以往的Microsoft产品的补丁和0-day漏洞无关。你可以在
http://blogs.technet.com/msrc/ar ... server-attacks.aspx
获取跟多的信息。
正如上面所指出的,这些攻击在近年来呈现一种增长的趋势。这至少与两个因素有关:
第一,有暴力性的恶意攻击工具自动化进行此类操作。SANS在
http://isc.sans.org/diary.html?storyid=4294
讨论了这类工具。该工具使用搜索引擎来寻找具有SQL注入漏洞的站点。
第二,一个或多个恶意僵尸正在进行SQL注入攻击,用以广泛传播僵尸。SecureWorks在
http://www.secureworks.com/research/threats/danmecasprox/
讨论了一个案例。
一旦某台服务器被该漏洞所攻击,它将被插入指向某.js文件的恶意<script>标签。虽然这些文件的内容不同,但是他们都尝试利用已经被修复的Micfosoft产品的漏洞或者第三方ActiveX控件的漏洞。由于这些脚本被单独存储,这些脚本就很容易的被更新以利用更新的客户端漏洞,也更容易按照不同浏览器来定制。
给信息技术/数据库管理员的建议
有很多事情是信息技术管理员或者数据库管理员可以采取的,以减少他们的风险和响应他们的代码和平台中可能出现的事件:
* 检查IIS日志和数据表来寻找未知风险的标志。
由于该漏洞利用方式通过URI请求字符串作用,管理员们可以检查IIS日志来查找尝试利用该漏洞的非正常请求。你可以在
http://blogs.technet.com/neilcar ... nt-part-2-meat.aspx
找到如何手动进行改操作的详细信息。在
http://www.codeplex.com/Release/ ... amp;ReleaseId=13436
有进行自动化操作的工具。
如果IIS日志表明服务器可能已经被侵害,那么下一步要采取的行动就是审计相应的Web应用程序所使用的数据库中的表,并且查找附加在文本内容中的<script>标签。
提示:IIS服务器不应当在生产环境中关闭日志。存储和适当的管理对于IIS日志都是重要的,缺少IIS日志对于响应安全事件是非常困难的。
* 如果运行了使用后端数据库的第三方代码,则考虑不受SQL注入影响的独立软件开发商(ISV,Independent Software Vendors)。
在使用第三方ASP Web程序的情况下,管理员应当联系应用程序厂商来确定他们的产品不受SQL注入攻击的影响。
* 确认Web应用程序所使用的数据库帐户具有最少的权限。
管理员应当确保Web应用程序所使用的SQL用户具有最小的必要权限。Web应用程序不应当以诸如”sysadmin”的服务器管理员权限或者”db_owner”的数据库权限链接。白皮书”在SQL Server 2005中的最优化安全设置和维护”:
http://download.microsoft.com/do ... 005SecBestPract.doc
提供了关于SQL Server安全的多方面建议。
给Web开发者的建议
有很多优秀的文档论述在编码时如何防御SQL注入攻击。由于这些攻击者leverage有漏洞的Web应用程序代码,所以完全防御他们的唯一方法是解析在代码中存在的漏洞。程序中任何一个使用外部资源(一般指从URI请求字符串)数据来动态生成SQL请求的地方都应当被认为是可疑的。当代码漏洞被识别出来,他们应当被小心的修复。
* 说明-SQL注入、ASP.NET和ADO.NET :
http://msdn.microsoft.com/en-us/library/bb671351.aspx
同时,上面的文章包含到相关文章”如何在ASP.NET中避免SQL注入”
http://msdn.microsoft.com/en-us/library/ms998271.aspx
,该文章同时适用于ASP。
这里有一个非常有用的视频(该视频是针对一篇防御文章的,然而链接可能已经无效了):
http://channel9.msdn.com/wiki/de ... iki.SQLInjectionLab
。
* 关于SQL注入如何实现的简单信息:
http://msdn.microsoft.com/en-us/library/ms161953.aspx
* ASP代码中的SQL注入(与ASP.NET中的并不相同):
http://msdn.microsoft.com/en-us/library/cc676512.aspx
如何在ASP中执行SQL Server存储过程:
http://support.microsoft.com/kb/q164485
* Microsoft安全部门(The Microsoft Security Development Lifecycle,SDL)对SQL注入的防御进行了一些指导。简单来说有三种策略来应对SQL注入攻击:
1. 使用SQL参数查询
2. 使用存储过程
3. 使用SQL仅执行(execute-only)许可
Michael Howard在
http://blogs.msdn.com/sdl/archiv ... ct-it-deserves.aspx
谈论了这些内容。
同时,编写安全的代码(第二版)也指导了如何防御此类攻击(请浏览399-411页)。
* 减轻SQL注入:使用参数查询(第一部分和第二部分)。使用参数化查询的好处是它将执行的代码(例如SELECT语句)和数据(由程序使用者提供的动态信息)分开。该途径防御了通过用户传递来执行的恶意语句。
第一部分:
http://blogs.technet.com/neilcar ... erized-queries.aspx
第二部分:
http://blogs.technet.com/neilcar ... and-recordsets.aspx
在经典ASP代码中过滤SQL注入(或者黑名单中的字符),我们将如下的工作认为是实际中临时性的解决方案,因为它治标不治本。(例如,代码仍然是有漏洞的,他仍然可能被绕过过滤机制而被访问到)
IIS团队中的Nazim解释了如何过滤的详细信息:
http://blogs.iis.net/nazim/archi ... om-classic-asp.aspx
。
如果你仍然不了解从哪里开始,所有使用特定ASP代码访问数据库,尤其是使用由用户提供的数据的代码应当首先被检测。
给最终用户的建议
最终用户(下简称用户-译者注)应当浏览位于
http://www.microsoft.com/protect/default.mspx
的信息。另外,这里也有一些你可以采取以保护自己的步骤。
* 通常应当有选择的访问网站-但是也需要了解,该漏洞也会影响用户信任的网站。
有选择的访问网站减少了你暴露在漏洞下的风险,当然即使是你所信任的也有可能被攻击。留意不正常的行为,了解面临的风险,并且实施本节提供的其他建议。
* 针对Microsoft和第三方软件,保持安全更新。
由于恶意代码通常利用了已知的漏洞,因此你应当确保你在运行最新进行安全更新过的的Microsoft和第三方软件。Microsoft安全更新可以通过
http://update.microsoft.com
了解。
http://www.microsoft.com/protect/computer/updates/OS.aspx
有更多信息。
* 禁用不必要的ActiveX控件和IE加载项。
你应当禁用所有不必要的ActiveX控件和IE加载项。根据KB883256(
http://support.microsoft.com/kb/883256
)的方法在Windows XP Service Pack2或者更新版本中来实施本步骤:
1. 打开IE。
2. 在”工具”菜单点击管理加载项。
3. 点击加载项的名称。
4. 使用如下的方法:
* 点击更新ActiveX来使用最新的版本替换该控件。这个方法并非对所有的加载项都可用。
* 点击”启用”,而后点击”确定”,来启用加载项。
* 点击”禁用”,而后点击”确定”,来禁用加载项。
你可能需要重启IE来确保在启用/禁用插件的操作成功。
针对更糟的操作系统,根据KB154036(
http://support.microsoft.com/kb/154036
)的说明进行操作。
* 减少你所使用的第三方浏览器的受攻击风险的步骤。
如果你使用了IE之外的浏览器,那么你应当确保你安装的是最新的安全更新版本,同时你应当禁用了不必要的扩展和加载项。流行浏览器的信息可以在如下链接找到:
Firefox -
http://support.mozilla.com/en-US/kb/Firefox+Support+Home+Page
Opera -
http://www.opera.com/support/
Safari -
http://www.apple.com/support/safari/
* 更新反恶意程序软件
用户应当确保已经安装了杀毒软件和反间谍软件,并且保持他们的更新。你可以在
http://www.microsoft.com/protect/computer/antivirus/OS.aspx
和
http://www.microsoft.com/protect/computer/antispyware/OS.aspx
找到更多信息。你可以在
http://onecare.live.com/standard/en-us/install/install.htm
得到一份90天使用的Windows Live OneCare杀毒/反间谍软件。
收藏
分享
集萃坊社区
返回列表
唯美贴图
精品软件下载
软件寻求
音画专区
每日综合
家园茶馆
DIY交流区
外语学习
中外流行
医学保健
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]