购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 实验#2:testasp网站有SQL注入风险

缺陷标题 testasp网站→登录→通过SQL语句无须密码,可以直接登录。

测试平台与浏览器 Windows 7+Firefox或IE 11。

测试步骤

(1)打开testasp网站http://testasp.vulnweb.com/。

(2)单击左上方的login进入登录界面。

(3)在Username文本框中输入admin'--,密码可随意输入。

(4)单击Login按钮,如图1-3所示。

图1-3 登录界面

期望结果 不能登录。

实际结果 登录成功,如图1-4所示。

图1-4 登录成功

专家点评

常见SQL注入攻击有如下类型。

1.没有正确过滤转义字符

在用户的输入没有被转义字符过滤时,就会发生这种形式的注入攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库中的语句实施操纵。例如,下面的这行代码就会导致这种漏洞。

这行代码的设计目的是将一个特定的用户从其用户表中取出,但是,如果用户名被攻击者用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的编写者所期望的了。例如,将用户名变量(即userName)设置为a'or't'='t,此时原始语句发生了变化。

如果这行代码被用于一个认证过程,那么就能够强迫选择一个合法的用户名,因为赋值't'='t'永远是正确的。

在一些SQL服务器上,如在SQL Server中,任何一个SQL命令都可以通过这种方法注入,包括执行多个语句。下面语句中userName的值将会导致删除users表,又可以从data表中选择所有的数据(实际上就是泄露了每个用户的信息)。

这将使最终的SQL语句变成

其他SQL语句不会将执行同样查询中的多个命令作为一项安全措施。这会防止攻击者注入完全独立的查询,但不会阻止攻击者修改查询。

2.不正确的数据类型处理

如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型),则会发生这种攻击。例如语句

从这个语句可以看出,程序员希望a_variable是一个与id字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。例如,将a_variable设置为

它会将users表从数据库中删除,SQL语句变成

3.数据库服务器中的漏洞

有时,数据库服务器软件也存在漏洞,如mysql_real_escape_string()是MySQL服务器中的函数漏洞。这种漏洞允许一个攻击者根据错误的统一字符编码执行一次成功的SQL注入攻击。

4.盲目SQL注入攻击

当一个Web应用程序易于遭受攻击而其结果对攻击者却不可见时,就会发生盲目SQL注入攻击。有漏洞的网页可能并不会显示数据,而是根据注入合法语句中的逻辑语句的结果显示不同的内容。这种攻击相当耗时,因为必须为每一个获得的字节精心构造一个新的语句。但是,一旦漏洞的位置和目标信息的位置被确定,一种称为Absinthe的工具就可以使这种攻击自动化。

5.条件响应

注意,有一种SQL注入迫使数据库在一个普通的应用程序屏幕上计算一个逻辑语句的值。如语句SELECT booktitle FROM booklist WHERE bookId='OOk14cd'AND 1=1会导致一个标准的SQL执行,而语句SELECT booktitle FROM booklist WHERE bookId='OOk14cd'AND 1=2在页面受到SQL注入攻击时有可能给出一个不同的结果。这样的注入证明盲目的SQL注入是可能的,它会使攻击者根据另外一个表中的某字段内容设计可以评判真伪的语句。

6.条件性差错

如果WHERE语句为真,则这种类型的盲目SQL注入会迫使数据库评判一个引起错误的语句,从而导致一个SQL错误。例如语句

显然,如果用户Ralph存在,被零除将导致错误。

7.时间延误

时间延误是一种盲目的SQL注入,根据所注入的逻辑,它可以导致SQL引擎执行一个长队列或者一个时间延误语句。攻击者可以衡量页面加载的时间,从而决定所注入的语句是否为真。

以上仅是对SQL注入攻击的粗略分类。从技术上讲,如今的SQL注入攻击者在如何找出有漏洞的网站方面更加全面,出现了一些新型的SQL注入攻击手段。黑客可以使用各种工具加速漏洞的利用过程。我们不妨看看the Asprox Trojan这种木马,它主要通过一个发布邮件的僵尸网络来传播,其整个工作过程可以这样描述:首先,通过受到控制的主机发送的垃圾邮件将此木马安装到计算机中;然后,受到此木马感染的计算机会下载一段二进制代码,在其启动时,它会使用搜索引擎搜索用微软的ASP技术建立表单的、有漏洞的网站,搜索的结果就成为SQL注入攻击的靶子清单;接着,这个木马会向这些站点发动SQL注入攻击,使有些网站受到控制和破坏,访问这些受到控制和破坏的网站的用户将会受到欺骗,从另外一个站点下载一段恶意的JavaScript代码;最后,这段代码将用户指引到第三个站点,这里有更多的恶意软件,如窃取口令的木马。

本例注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。由于插入的命令可能在执行前追加其他字符串,因此攻击者用注释标记--来终止注入的字符串。执行时,此后的文本将被忽略。 wYd49cEcYIyoagGEKbPqA9+5jIw5q1sr+YMaGm3nOujiMOtQ1mYUa455Qq/9U6/R

点击中间区域
呼出菜单
上一章
目录
下一章
×