针对互联网网站的SQL注入攻击的分析和应对方法
发布日期:2008年5月23日

迹象

根据微软 5月 19号的估算,在中国大陆,香港,台湾地区有 12万个网站受到了 SQL注入攻击。

在大中华地区,许多公共网站,包括政府,教育部门,非政府组织的慈善机构,以及一些企业都遭受到了 SQL注入的攻击,若干包含恶意 <Script>代码被加入到网站的数据库中,当用户访问这些可信站点时,浏览器会被指向包含恶意代码的网站,此时用户计算机系统内的防病毒系统可能会报警。如果用户计算机系统存在可被利用的安全漏洞,同时并未安装有效的防病毒系统,攻击者可能在用户电脑上运行更多的恶意代码,从而导致用户电脑被控制。

背景

首次攻击是在 2008年 1月发现的。 在过去的 4个月中,早已有 3次大规模攻击:

1月初,包括某知名防病毒软件厂商网站在内的互联网网站 ,  受到了 SQL注入攻击 (感染页面数超过 1000页面 /天 )

3月中旬,包括某知名防病毒软件厂商网站在内的互联网网站,受到了 SQL注入攻击 (感染页面数超过 10000页面 /天 )

4月中旬,包括欧洲某政府和某国际机构网站在内的互联网网站,受到了 SQL注入攻击 (感染页面数超过 10000页面 /天 )

SQL注入攻击行为简介

以下是此类攻击的流程

1.      攻击者运用搜索引擎寻找网页上的漏洞,并运用自动化工具攻击网络服务器。

2.      一个<script>字符串附加到在后台运行的 SQL服务器中所有的文本或可变长字符串列中。

3.      这段脚本与攻击者所控制服务器连接。该服务器含有一些利用常用软件中漏洞的攻击代码,如利用微软 MS06-014中修复的漏洞的攻击代码,利用第三方软件漏洞(例如常用的媒体播放器、互联网内容下载软件),有的时候还有一些零时差( 0day)漏洞。

4.      当客户端用户使用 IE浏览器对正常的网站进行浏览时,由于这些网页都将从 SQL服务器获取数据,这些数据同时包含了恶意脚本 <script>。而这些脚本会自动连接到攻击者的网站。

5.      如果终端用户没有安装微软最新的安全更新,或尚未及时更新第三方软件到最新版本,客户端电脑会被感染。

SQL注入事件响应的解决方案

一旦互联网 Web服务器遭到 SQL注入攻击,请遵循如下步骤:

1、关闭网站

2、检查 IIS日志,查找引起这次攻击的有漏洞的目标网页

3、联系该 Web服务器上 Web应用的开发者,检查并修改 ASP页面中存在 SQL注入攻击隐患的代码。

注意:这只是一种变通的解决方法,只能临时解决 SQL注入问题。该网站可能在服务器再次联网后被再次注入。为了彻底解决这个问题,请参阅 “预防 SQL注入攻击的解决方案 ”。

预防SQL注入攻击的解决方案

SQL注入攻击是因为互联网网站开发人员在开发页面时,没有遵循安全代码开发的要求所引起的。为了防止攻击,我们需要验证所有网页的字符串输入的函数。例如,带有用户名和密码输入框的网站登录页。

在微软的官方网站上可以找到安全指导和最佳实践的文档,来应对 SQL注入攻击。

用来缓解SQL注入攻击的最佳实践文章可以在这里找到:https://msdn2.microsoft.com/en-us/magazine/cc163917.aspx

How To - Protect from Injection Attacks in ASP.NET - https://msdn.microsoft.com/en-us/library/bb355989.aspx

How To - Protect from SQL Injection in ASP.NET - https://msdn.microsoft.com/en-us/library/ms998271.aspx

How To - Protect from Cross-Site Scripting in ASP.NET - https://msdn.microsoft.com/en-us/library/ms998274.aspx

Design Guidelines - https://msdn.microsoft.com/en-us/library/aa302420.aspx

Arch/Design Inspection - https://msdn.microsoft.com/en-us/library/aa302421.aspx