有关MS SQL Server渗透测试的研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

有关MS SQL Server渗透测试的研究
摘要:当前电子政务、电子商务和企业内部的很多数据和敏感信息都存放在MS SQL Server数据库中,但是SQL Server数据库的安全性却一直没有像操作系统和网络设备那样受到应有的重视,得到恰当的测试评估。

鉴于此,本文提出可以利用两类不同的安全漏洞对SQL Server数据库进行渗透测试,给出具体的测试方法,用以指导信息系统数据库管理员进行自测试评估,及时发现存在的严重安全漏洞,并进一步采取措施,进行漏洞修补。

关键词:MS SQL Server;渗透测试;漏洞
1引言
微软的SQL Server是一种广泛使用的数据库,很多电子政务、电子商务和企业内部信息系统都是基于SQL Server建设的。

政府部门和企业组织的数据都保存在这种数据库中,比如政务文件信息、职工薪水和文档资料等,甚至一些敏感的数据也存放在这种数据库中,如政府事务安排、一些重要决策和企业市场计划等。

这些重要数据应该得到合理保护,以便防止竞争者和其他非法人员攻击、获取。

但是由于数据库一般处在信息系统的内部网络区域,在“防外不防内”的保护思想指导下,数据库管理系统通常没有像操作系统和网络设备这样在安全性上受到应有的重视。

数据库系统中存在的安全漏洞和不当的配置通常会带来严重的后果。

特别是漏洞繁多的MS SQL Server数据库,它属于“端口”型数据库,这就表示任何人都能够用分析工具直接连接数据库,而绕过一些网络和操作系统的安全机制,进而侵入系统、破坏和窃取数据资料,甚至破坏整个信息系统。

鉴于此,本文提出利用两类不同的安全漏洞进行SQL Server渗透测试的方法,以指导数据库管理员进行自测评估,及时发现严重漏洞,并进行漏洞修补。

这两类漏洞分别是:SA用户空/弱口令和缓冲区溢出漏洞。

2基础
MS SQL Server是由Microsoft开发和推广的关系型数据库管理系统,具有真正的客户机/服务器体系结构、图形化用户管理界面、丰富的编程接口工具等诸多特点。

很多电子政务、电子商务网站和企业内部信息化平台等都是基于SQL Server的。

在软件结构上,SQL Server由两个部分组成:服务器组件和客户端工具。

客户端工具与服务器组件的连接,可以使用多种网络协议,例如TCP/IP命名管道等。

在默认情况下,SQL Server使用的TCP端口为1433。

SQL Server存在一个不能更改、也不能删除的超级用户SA。

这个用户应该使用一个非常强壮的密码,然而,很多数据库帐号的密码过于简单,甚至是空口令,这就给渗透测试提供了一个很好的、可以利用的安全漏洞,这也常常是信息系统
被轻易攻击的原因。

SQL Server的存储过程是为完成特定的功能汇集在一起的,经编译后存储在数据库中的SQL程序。

在SQL Server的系列版本中存在一类比较特殊的存储过程—扩展存储过程。

SQL Server的扩展存储过程是一个普通的Windows DLL,只是要按照某种规来实现这些函数。

扩展存储过程可直接在SQL Server实例中运行。

SQL Server默认情况下,包含有访问系统注册表、服务器文件系统、服务器硬件信息的扩展存储过程。

这些存储过程存在安全隐患。

其中对渗透测试特别有用的一个扩展存储过程是xp_cmdshell, 通过它可以在Windows系统的一个shell 上执行任意CMD命令。

对SQL Server数据库中不同安全漏洞的的利用,可以达到不同的目的。

例如,通过一些漏洞的利用,可以访问本来不可访问的数据,包括读和写等;通过一些漏洞的利用,可以执行一些代码,从而获得目标系统的访问权限或本地系统的更高权限等。

我们重点讨论后者,包括SOL Server的SA用户空/弱口令的利用和两个典型的、非常重要的缓冲区溢出漏洞的利用等。

3SA用户空/弱口令的利用
漏洞扫描是渗透测试的关键一步。

为了更好地完成识别出SQL Server的SA 用户空/弱口令漏洞,我们可以选用开源软件Nessus扫描器,也可以使用商用漏洞扫描器,如绿盟的漏洞扫描工具等。

如果漏洞扫描器报告SA用户的口令为空,则就可以直接利用。

使用SQL Tools工具连接服务器,登录数据库后,就可以进行各种各样攻击了,如窃取本来不能访问的数据,破坏数据库中数据的完整性等,甚至进一步利用扩张存储过程进行主机操作系统的渗透,获得数据库服务器主机的用户权限,从而进一步控制该主机。

如果漏洞扫描结果中报告SA用户的口令为弱口令,那我们可以进一步使用SA弱口令扫描器ScanSQL进行扫描。

获得SA的口令。

通过ScanSQL扫描得到SA用户的口令,就可管理和控制Server数据库了,而且可以利用这个权限去获得网络上更多的控制权。

这可以通过许多途径来达到:一种比较简单的方法是使用现成工具,如使用SQL Tools;另一种方法是可以通过手工方式来完成。

SQL Tools是一款专门攻击SQL主机的工具,功能包括有:登陆SQL服务器,从而在SQL服务器上执行DOS命令,上传文件,增加SQL账户以及更改SQL服务器注册表等操作。

另外一种获得网络上更高的控制权的途径是以SA用户通过SQLServer的查询分析器连接数据库服务器,以手工方式执行各种存储过程和相关命令,包括:(1)使用xp_cmdshell扩展存储过程执统的命令;(2)利用xp_regread扩展存储过程去注册表的键值,当然包括SAM键;(3)使用“bulk insert”语法去读服务器上的任意文件;(4)使用sp_OACreate、sp_OAMethod和sp_OA-
GetPropert建ActiveX应用程序等。

例如,使用xp_cmshell执行各种各样的功能,命令如下:
Exec master ..xp_cmdshell …dir‟
Exec master ..xp_cmdshell …net User‟
4缓冲区溢出漏洞的利用
利用缓冲区溢出漏洞进行渗透是最常用的方法。

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

有资料显示,许多攻击事件与缓冲区溢出漏洞有关,在网络空间中利用这种缓冲区溢出漏洞而发起的攻击屡见不鲜。

早在1988年,莫里斯就利用Unix fingered 程序不限制输入长度的漏洞进行恶意攻并感染到其他机器上。

2003年“SQL Slammer”蠕虫王的发作就是利用未及时更新补丁的MS SQLServe数据库缓冲区溢出漏洞获得非法权限(MS 02-039 Microsoft Server SQL 2000 Resolution服务远程堆缓冲区溢出漏洞),并感染其他机器的。

下面我们分析SQL Server的另一个缓冲区漏洞(02-056Microsoft MS SQL Server预验证过程缓冲区溢出漏洞,也称SQL Hello溢出)的利用,Hello溢出可以针对MicrosoftServer的SQL验证过程存在的问题,通过连接TCP 1433端口就可进行缓冲区溢出攻击。

由于问题出现在验证之前,所以无需验证就可以进行攻击,能使攻击者以SQL进程权限在系统上执行任意指令。

Sqlhello是溢出反向连接工具,下面介绍它的使用。

首先,用工具NC在本机建立一个TCP监听端口,等待反向连接。

NC是一个非标准的telnet客户程序。

在DOS命令提示符下输入命令NC-v-I-p556出现表示在等待的省略号。

然后,执行Sqlhelo进行1433本地溢出,使用方法:sqlhello.exe目标主机IP1433,本地IP556。

556是NC监听的端口。

最后回到还在监听的NC命令窗体,等待的省略号已经变为了系统的SHELL,这也正是远程主机的命令控制台。

SHELL是操作系统的最外层,管理着用户与操作系统交互、通讯、执行等工作的操作。

得到了对方的SHELL,就代表着已经拥有了与对方计算机直接沟通、下达命令的平台。

用Net命令增加用户,并提升权限。

在其命令行下输入User Administrators test Net 123456/add令,就可以建立一个属于自己名为“test”,密码是123456的普通账户。

在将所建用户的权限提升为管理员,敲入Net Localgroup Administrators test/ad 命令。

最后使用本机自带的远程终端软件,敲入刚才溢出的IP以及建立/提升的用户,进行“远程连接”登录,稍等片刻后,就可以管理对方主机了。

对SQL Server的缓冲区溢出漏洞的利用也可以使用Metasploit工具来完成。

Metasplo是一款开源的安全漏洞检测工具。

最新版本的MSF包含了180多种当前流行的操作系统和应用软件的exploit,以及100多个shellcode。

对SQL Server 该工具包括了漏洞的溢出攻击插件。

5安全加固建议
基于以上的测试分析,我们提出如下三点安全加固建议供数据库管理员参考使用。

(1)使用健壮的用户口令策略。

我们把用户口令策略摆在所有安全配置的最前面,这是因为我们发现在政府部门和企业组织的数据库中,很多数据库帐号的口令过于简单,特别是SA用户更应该注意。

SQL Server2000安装时,如果是使用混合模式,那么就要输入SA的密码,除非你确认必须使用空密码。

同时要养成定期修改口令的好习惯。

数据库管理员应该定期查看是否有不符合口令要求的账号。

(2)管理扩展存储过程。

对存储过程进行大手术并且对账号调用扩展存储过程的权限要慎重。

其实在多数应用中根本用不到多少系统的存储过程,而SQL Server的这么多系统存储过程只是用来适应广大户需求的,所以请删除不必要的存储过程。

因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。

特别是扩展存储过程xp_cmdshell你不需要它,就删除它。

同时,去掉不需要的注册表访问的存储过程,注册表存储过程甚至能够读出操作系统管理员的密码来。

(3)进行及时升级管理。

数据库版本信息可以帮助渗透人员确定相应版本存在的漏洞,以便更好地组织渗透。

对SQL Server,版本信息还可以告知安装的补丁信息,如下表l。

参考文献:
[1]SteveManzuik.网络安全评估(翻译版)[M]. 北京:科学出版社,2009.
[2]许治坤,王伟等.网络渗透技术[M]. 北京:电子工业出版社,2005.
[3](美)KEVIN D.MITNICK等.入侵的艺术[M].北京:清华大学出版社,2007.
[4](美)麦勤瑞.Hardening Network Security(中文版)[M].北京:清华大学出版社,2006.
[5](美)Johansson等.构筑Windows网络安全从外围到数据[M].北京:电子工业出版社, 2007.。

相关文档
最新文档