黑客营从入门到精通之攻击网站的“软肋”——SQL网页注入

黑客·安全

防范难度★★★★★

操作难度★★

随着B/S开发模式的发展,使用这种模式编写的应用程序也越来越多。很多程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库的查询代码,根据浏览器返回的结果,获得某些他想得知的数据信息,这就是所谓的SQL Injection,即SQL网页注入。

黑客高手

47-f13-1.jpg

海洋,从2002年开始接触黑客技术,精通转向脚本攻击技术、SQL网页注入攻击技术和网络编程技术。 2004年,对靖国神社网站发动了攻击,造成网站网页长时间无法使用。并且在以后的一段时间里又多次入侵该网站,造成网址浏览异常缓慢,几乎陷入瘫痪。

入侵知识准备

SQL网页注入的原理,就是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取你想得到的资料。SQL网页注入和以前的网站入侵有很大的区别,以前的网站入侵一般都是通过相应的漏洞进行的,而SQL网页注入则是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面上的防火墙都不会对SQL网页注入发出警报。如果管理员没有查看IIS日志的习惯,可能被入侵很长时间都不会发觉。

但是,SQL网页注入需要构造需要的代码和灵活运用,所以在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造出相应的巧妙的SQL语句,成为成功获取需要数据的关键。

在实际的操作中,SQL注入还根据数据库的不同分很多种情况,比如对于ACCESS数据库,就可以对表名进行一个一个地猜测,猜出表名再接着猜列名,猜完列名再利用ASC和MID函数来计算数据的ASCⅡ码,最后再将其还原为原始数据;如果是MSSQL数据库的话,由于所有的列表都保存在一个特殊的地方,可以直接通过暴库的方法将数据库给暴露出来,这种方法简单易用,准确率极高。

入侵实战

手工注入

要进行网页注入,首先需要判断网站是否存在SQL注入漏洞。判断的方法是,打开一个带参数的网页地址,然后在网页地址后输入:and 1=1,如果返回错误页面,说明不存在注入漏洞。如果返回和原先一样的正常页面,那就将1=1改为1=2进行提交,如果返回的网页还是正常显示,就说明不存在注入漏洞;如果显示错误的话,那么就很有可能存在注入漏洞。

其实存在注入漏洞的网站大部分都存在这个特点:如果在页面的链接后面跟一个等式就会返回一个和没有加等式前一样的页面;而在链接后面加一个不等式,就会返回各种错误信息。随着人们对注入漏洞的重视,有的站长已经对这种方式进行了屏蔽,我们还可以在网页地址的参数后加上一个单引号,进行提交判断。如果出现错误,就可能存在漏洞(图1)。

47-f13-2.jpg
图1

完成了SQL注入漏洞的判断后,还需要经过猜表、猜账号数目、猜解字段名称、猜解各个字段的长度、猜解字符、以及判断管理网页等多个步骤,每一个步骤都需要进行大量的代码构造进行判断,最终才能获得需要的数据。

使用工具注入

由于手工注入需要构造很多的代码,操作起来非常的烦琐,不利于初学者进行操作,所以很多注入工具纷纷出现,使得SQL网页注入从手工操作发展到现在的以程序化为主的操作,首先为大家介绍几款现在非常流行的注入工具。

现在我就通过啊D注入工具来演示攻击步骤。运行DSQLTools.exe在“用户登录”窗口中输入注册用户名和密码,点击“登录”按钮即可开始工具的使用。现在我们就开始SQL网页注入的操作。首先选择“注入检测”中的“扫描注入点”按钮,然后在“检测地址”中输入需要进行检测的网站地址,按回车就会打开该网页并开始检测注入点。这个过程实际上就是判断网站是否存在SQL注入漏洞,如果有的话,啊D注入工具就提示检测到该网站存在漏洞的网页,也就是用于SQL注入的注入点(图2)。

47-f13-3.jpg
图2

在检测到的含有注入点的链接上直接双击或者点击鼠标右键,选择“注入检测”按钮,程序就会自动跳转到“SQL注入检测”界面。在“注入链接”选项中已经自动填入刚刚检测到的注入链接,用户直接点击“检测”按钮即可检测出该网站所使用的数据库类型,这也就是前面说的“猜表”的过程。从显示的结果可以看到,数据库的类型为MSSQL,用户的权限为DB_OWNER,可惜不是最高的SA权限(图3)。

47-f13-4.jpg
图3

接着点击“检测表段”按钮,对数据库的表段进行分析,没过多久程序就检测出4个表段,分别为sysobjects、sysfiles、admin和syscolumns。注入检测可以分为显错和不显错两种,显错模式检测比较快,不显错模式就需要一个字符一个字符地猜测,速度比较慢。

为了能获得需要的数据,获得一个权限高的用户的账户和密码是最为关键的,一般都需要获得管理员的账户和密码。所以这里选择“admin”这个表段,然后接着点击“检测字段”按钮,同样在很短的时间内就能检测出“admin”表段中的字段名称,包括username、password和id,不用说我们就知道username字段存放的是管理员的账户,而password字段当然就是登录密码了。

选择需要进行猜解的字段,这里我们将username、password和id三个字段都选上,然后点击“检测内容”按钮来判断字段的长度和内容,接着程序就可以将每个字段的内容猜解出来(图4)。从图中可以看到,管理员的账户和密码都没有进行加密,而在SQL网页注入的时候,为了更好地保护自己,账户和密码都经过了MD5进行加密。当遇到这种情况的时候,我们需要通过MD5Crack这样的工具对加密的内容进行解密。啊D注入工具除了可以猜解英文字母和数字,还可以对中文汉字进行猜解。

47-f13-5.jpg
图4

小知识:

MD5加密算法的全称是Message-Digest Algorithm 5,MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串。

当我们成功地获得了管理员的账户和密码后,那我们就应该开始检测该网站的管理入口了。点击“管理入口检测”按钮,在网站地址中填入刚刚检测到的注入地址,然后我们就可以通过获得的管理员账户和密码登录到网站的后台,获取需要的数据。到此,我们就完成了一次SQL网页注入的演示。

47-f13-b1.jpg

攻击后果以及防范

通过SQL网页注入已经成为当前入侵网站的一种重要的方式。从中我们可以看到,普通的用户只需要借助注入工具就可以对存在注入漏洞的网站轻松入侵,进而可以获得数据库的资料,或者进行挂设木马等操作。总之,SQL网页注入对网站的危害性是极高的,管理员一定要提高警惕才行。

对于SQL网页注入的防范,主要分为两种,一种是自己编写代码来制作网站系统的,而另一种则是下载网上提供的现成的网站系统的。如果是下载网上现成的网站系统的管理员的话,就要经常关注网上关于该系统的漏洞信息,及时安装该系统官方网站提供的系统补丁。最好管理员自己首先对下载的系统源代码进行一番了解,从中查找可能存在的漏洞并自行修补;如果是管理员自己编写的网站系统,就更应该认真查看源代码,对特殊字符进行过滤,尽早修补网站系统的漏洞。

我们教授大家黑客技术是为了让大家了解黑客技术从而提高自己的网络安全知识,请大家不要用学到的技术攻击任何网站。