| 首页 产品介绍 热点讨论 历史回顾 资料下载 相关推荐 | 使用 Rational AppScan 应对Web应用攻击
目前常用的针对应用漏洞的攻击已经多达几百种,最为常见的攻击为下表列出的十种。
我们通过注入缺陷(Injection Flaws,排名第二的攻击)对攻击原理进行一下说明。
在网站的应用中需要应用到大量的数据库查询检索等功能,例如最简单的例子是网站登陆,用户需要输入登陆名称和密码进行登陆认证。在早期的开发中通常使用最为简单的 select 语句实现此功能,即 select * from users where username = “XXXX” and password = “XXXX”(假设数据库 user 表名称为 users ,用户名和密码字段名称为 username 和 password) 。通过截取用户在文本框中录入的字符串,再进行拼接,形成 select 语句,最终如果表 users 中有符合此条件的记录(即该用户名和密码),系统将会返回有效记录,从而允许登陆系统中。
然而,此开发方法隐藏了一个巨大的漏洞,黑客可以通过 SQL 注入攻击攻入网站。如下图所示,黑客在登陆界面录入的不是用户名,而是一串字符串 ('or 1=1 --) 。黑客的目的是在原本应该录入用户的地方录入了一串字符串,导致整个 select 语句发生了变化: select * from users where username=''or 1=1 。熟知 Select 语句的人知道,在条件语句中,无论用户名称是否正确,由于 1 = 1 永远是正确的,所以 select 将会将所有 users 表中的数据返回。最终的结果是,黑客登陆到这个系统中。通过 SQL 注入攻击,黑客可以轻松的敲入一些 sql 语句登陆进网站、对隐秘数据进行查询等等。
图 3. 攻击举例 通过上述原理描述我们可以看到,对于 SQL 注入攻击无论是防火墙还是入侵检测系统都无法预防和阻止,唯一的办法是将应用本身的漏洞关闭。例如通过参数的传递配合存贮过程来实现数据库查询,这比动态的构建 sql 语句安全很多。比如在 ASP.net 中通过下面的程序将会避免攻击:
除了注入缺陷攻击,常见的应用攻击还有跨网站脚本攻击、恶意文件执行攻击、不安全直接对象应用攻击、跨站点请求伪造攻击、信息泄漏以及利用错误处理机制展开攻击、等等。每种攻击都类似与 SQL 注入攻击,根据应用程序本身的漏洞,对系统进行破坏工作,例如:获取系统权限、获取机密信息、模拟合法用户等等。
综上所述,这些利用Web应用漏洞的攻击是Web安全最主要的威胁来源, 75 %的攻击来源于此,只有对应用程序本身进行改造才能避免攻击。然而,如何发现这些应用漏洞是保证安全的第一前提,我们如何以最快最有效的方式发现Web应用本身的漏洞呢?没有高效检测手段,安全的Web应用将成为水中花镜中月。
原文地址:http://www.ibm.com/vrm/newsletter_10104_2516_57211_email_DYN_1IN/xchen94266440
|
|||||||||||||||||||||||||||||||||||||||||
