技术开发 频道

SQL Server渗透测试方法

  【IT168 技术文档】

  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数据库中不同安全漏洞的利用,可以达到不同的目的例如,通过一些漏洞的利用,可以访问本来不可访问的数据,包括读和写等;通过一些漏洞的利用,可以执行一些代码,从而获得目标系统的访问权限或本地系统的更高权限等。我们重点讨论后者,包括SQL Server的SA用户空/弱口令的利用和两个典型的、非常重要的缓冲区溢出漏洞的利用等。

0
相关文章