当前位置: 首页 > 图文教程 > 服务器 > 安全防护 > 防范SQL指令植入式攻击

安全防护
为Windows 2003安全—层层设防(3)
为Windows 2003安全—层层设防(4)
修改IIS的Banner隐藏操作系统版本
以毒攻毒!IIS Banner巧伪装
四招加强Windows 2003安全性
深入剖析EFS(2)
设置Active Directory域(1)
设置Active Directory域(2)
Rootkit分析(1)
Rootkit分析(2)
Rootkit分析(3)
Windows域信任关系建立全攻略
关于网站木马的解释(1)
关于网站木马的解释(2)
hdsi2.0 sql注入部分抓包(1)
hdsi2.0 sql注入部分抓包(2)
hdsi2.0 sql注入部分抓包(3)
hdsi2.0 sql注入部分抓包(4)
建造永不被杀的80端口后门(1)
建造永不被杀的80端口后门(2)

安全防护 中的 防范SQL指令植入式攻击


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-29   浏览: 45 ::
收藏到网摘: n/a

什么是SQL 指令植入式攻击? 在设计或者维护 Web 网站时,你也许担心它们会受到某些卑鄙用户的恶意攻击。的确,如今的 Web 网站开发者们针对其站点所在操作系统平台或Web 服务器的安全性而展开的讨论实在太多了。不错,IIS 服务器的安全漏洞可能招致恶意攻击;但你的安全检查清单不应该仅仅有 IIS 安全性这一条。有些代码,它们通常是专门为数据驱动(data-driven) 的 Web 网站而设计的,实际上往往同其它 IIS 漏洞一样存在严重的安全隐患。这些潜伏于代码中的安全隐患就有可能被称为“SQL 指令植入式攻击” (SQL injection) 的手段所利用而导致服务器受到攻击。 SQL 指令植入式攻击技术使得攻击者能够利用 Web 应用程序中某些疏于防范的输入机会动态生成特殊的 SQL 指令语句。举一个常见的例子: 某 Web 网站采用表单来收集访问者的用户名和密码以确认他有足够权限访问某些保密信息,然后该表单被发送到 Web 服务器进行处理。接下来,服务器端的ASP 脚本根据表单提供的信息生成 SQL 指令语句提交到 SQL 服务器,并通过分析 SQL 服务器的返回结果来判断该用户名/密码组合是否有效。 为了实现这样的功能,Web 程序员可能会设计两个页面:一个 HTML 页面 (Login.htm) 用于登录,另一个ASP 页面 (ExecLogin.asp) 用于验证用户权限(即向数据库查询用户名/密码组合是否存在)。具体代码可能象这样: Login.htm (HTML 页面) 代码:
Username: 
Password: 
 
ExecLogin.asp (ASP 页面) 代码: 乍一看,ExecLogin.asp 的代码似乎没有任何安全漏洞,因为用户如果不给出有效的用户名/密码组合就无法登录。然而,这段代码偏偏不安全,而且它正是SQL 指令植入式攻击的理想目标。具体而言,设计者把用户的输入直接用于构建SQL 指令,从而使攻击者能够自行决定即将被执行的 SQL 指令。例如:攻击者可能会在表单的用户名或密码栏中输入包含“ or ”和“=” 等特殊字符。于是,提交给数据库的 SQL 指令就可能是: 代码:SELECT * FROM tblUsers WHERE Username= or = and Password = or = 这样,SQL 服务器将返回 tblUsers 表格中的所有记录,而 ASP 脚本将会因此而误认为攻击者的输入符合 tblUsers 表格中的第一条记录,从而允许攻击者以该用户的名义登入网站。 SQL 指令植入式攻击还有另一种形式,它发生在 ASP 服务器根据 querystring 参数动态生成网页时。这里有一个例子,此 ASP 页面从 URL 中提取出 querystring 参数中的 ID 值,然后根据 ID 值动态生成后继页面: 代码: 在一般情况下,此 ASP 脚本能够显示具有特定 ID 值的文章的内容,而 ID 值是由 URL 中的 querystring 参数指定的。例如:当URL为 http://www.example.com/Article.asp?ID=1055 时,ASP 就会根据 ID 为 1055 的文章提供的内容生成页面。 如同前述登录页面的例子一样,此段代码也向SQL 指令植入式攻击敞开了大门。某些恶意用户可能会把 querystring 中的文章 ID 值偷换为“0 or 1=1”等内容(也就是说,把 URL 换成 http://www.example.com/Article.asp?ID=0 or 1=1) 从而诱使 ASP 脚本生成不安全的 SQL 指令如: 代码:SELECT * FROM tblArticles WHERE ID=0 or 1=1 于是,数据库将会返回所有文章的内容。 当然了,本例服务器所受的攻击不一定会引起什么严重后果。可是,攻击者却可能变本加厉,比如用同样的手段发送 DELETE 等 SQL 指令。这只需要简单地修改前述 URL 中的 querystring 参数就可以了!例如:任何人都可以通过 “http://www.example.com/Article.asp?ID=1055; DELETE FROM tblArticles ” 之类的 URL 来访问 Web 网站。 SQL 指令植入式攻击的危害 SQL 指令植入式攻击可能引起的危害取决于该网站的软件环境和配置。当 Web 服务器以操作员(dbo)的身份访问数据库时,利用SQL 指令植入式攻击就可能删除所有表格、创建新表格,等等。当服务器以超级用户 (sa) 的身份访问数据库时,利用SQL 指令植入式攻击就可能控制整个 SQL 服务器;在某些配置下攻击者