找回密码
 申请新用户
搜索
热搜: 活动 交友 discuz
查看: 7435|回复: 1

SQL注入攻击-来自微软安全博客的建议

[复制链接]
发表于 2008-6-27 10:31:13 | 显示全部楼层 |阅读模式
转自:http://news.cnblogs.com/n/37005/
从去年下半年开始,很多网站被损害,他们在用于生成动态网页的SQL数据库中存储的文本中被注入了恶意的HTML <script>标签。这样的攻击在2008年第一季度开始加速传播,并且持续影响有漏洞的Web程序。这些Web应用程序有这样一些共同点:

* 使用经典ASP代码的程序
* 使用SQL Server数据库的程序

这样的攻击并非利用了Window、IIS、SQL Server或者其他底层代码的漏洞,而是利用了在这些平台上运行的由程序员自行编写的代码中的漏洞。Microsoft已经对这些攻击进行了彻底的调查,并且发现,他们和以往的Microsoft产品的补丁和0-day漏洞无关。你可以在http://blogs.technet.com/msrc/archive/2008/04/25/questions-about-web-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日志和数据表来寻找未知风险的标志
如果运行了使用后端数据库的第三方代码,则考虑不受SQL注入影响的独立软件开发商(ISV,Independent Software Vendors)
确认Web应用程序所使用的数据库帐户具有最少的权限

给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/default.aspx/SecurityWiki.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/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx谈论了这些内容。 同时,编写安全的代码(第二版)也指导了如何防御此类攻击(请浏览399-411页)。

* 减轻SQL注入:使用参数查询(第一部分和第二部分)。使用参数化查询的好处是它将执行的代码(例如SELECT语句)和数据(由程序使用者提供的动态信息)分开。该途径防御了通过用户传递来执行的恶意语句。

第一部分: http://blogs.technet.com/neilcar/archive/2008/05/21/sql-injection-mitigation-using-parameterized-queries.aspx 第二部分: http://blogs.technet.com/neilcar/archive/2008/05/23/sql-injection-mitigation-using-parameterized-queries-part-2-types-and-recordsets.aspx 在经典ASP代码中过滤SQL注入(或者黑名单中的字符),我们将如下的工作认为是实际中临时性的解决方案,因为它治标不治本。(例如,代码仍然是有漏洞的,他仍然可能被绕过过滤机制而被访问到) IIS团队中的Nazim解释了如何过滤的详细信息:http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx。 如果你仍然不了解从哪里开始,所有使用特定ASP代码访问数据库,尤其是使用由用户提供的数据的代码应当首先被检测。

译者:韩国峰
原文出处:http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
 楼主| 发表于 2008-7-24 10:10:32 | 显示全部楼层

防止SQL注入式攻击的免费工具

随着 SQL INJECTION 攻击的明显增多,微软近日发布了三个免费工具,帮助网站管理员和检测存在的风险并对可能的攻击进行拦截。

Scrawlr

下载地址:https://download.spidynamics.com/Products/scrawlr/

这个微软和 HP合作开发的工具,会在网站中爬行,对所有网页的查询字符串进行分析并发现其中的 SQL INJECTION 风险。Scrawlr 使用了部分 HP WebInspect  相同的技术,但只检测 SQL INJECTION 风险。Scrawlr 从一个起始 URL 入口,爬遍整个网站,并对站点中所有网页进行分析以找到可能存在的漏洞。

  

Microsoft Source Code Analyzer for SQL Injection

下载地址:http://www.microsoft.com/downloa ... &displaylang=en

这款被称作 MSCASI 的工具可以检测 ASP 代码并发现其中的 SQL INJECTION 漏洞(ASP 代码以 SQL INJECTION 漏洞著称),你需要向 MSCASI 提供原始代码,MSCASI 会帮你找到存在风险的代码位置。

  

URLScan 3.0

下载地址: http://www.iis.net/downloads/def ... &g=6&i=1697

该工具会让 IIS 限制某些类型的 HTTP 请求,通过对特定 HTTP 请求进行限制,可以防止某些有害的请求在服务器端执行。UrlScan 通过一系列关键词发现恶意请求,并阻止恶意请求的执行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 申请新用户

本版积分规则

守望轩 ( 湘ICP备17013730号-2 )|网站地图

GMT+8, 2024-4-23 13:32 , Processed in 0.023463 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表