您的位置  首页 >> 学习园地 >> 软件测试技术 >> 正文
SQL Server中存储过程的安全问题
[来源:本站 | 日期:2011年12月27日 | 浏览1823 次] 字体:[ ]
 是一个c/s模式的强大的关系型管理系统,使用的是SQL语言。是一种应用领域十分广泛的网络数据库。对网络安全了解的朋友应该知道,的入侵最常见的就是利用Sa空密码入侵了,网上关于这种入侵的文章多如牛毛,有些这样的文章个人认为讲解的并不详细,甚至有些是错误的,所以经常能在一些安全论坛看到类似的提问,而且有些也得不到很好的解答,下面我将详细介绍我的一些经验和总结,与大家分享。

首先让我们来了解一下中的存储过程。存储过程是存储在中的预先写好的SQL语句集合。存储过程分为三类:系统提供的存储过程,用户定义的存储过程和扩展存储过程。系统提供的存储过程是在安装时创建的存储过程,名字以“sp_”开头。用户定义的存储过程是用的使用者编写的存储过程。扩展存储过程则是对动态链接库(DLL)函数的调用,主要是用于客户端与服务端或客户端之间进行通信的,与一般动态链接库不同的是它们直接运行在SQLServer分配的内存地址内,其中危险性最高的扩展存储过程就是xp_cmdshell了,它可以执行操作系统的任何指令。

上面了解了什么是存储过程,我们再来看一下什么是Sa。Sa是的管理员帐号,拥有最高权限,它可以执行扩展存储过程,并获得返回值。这样你应该明白为什么得到Sa,就可以得到系统的最高权限了吧。可是,有的时候情况并不是这样,下面我们以在局域网中的入侵介绍一下的攻与防。

使用扫描工具扫描得到一个sa为空的机器,使用SQL Exec连接上,发现命令并不能用(如图1)。

图1

怀疑是扩展存储过程xp_cmdshell在查询分析器里删除,

语句为:exec sp_dropextendedproc 'xp_cmdshell',于是打开自己机的SQLServer的查询分析器,连上对方的SQLServer,对对方的xp_cmdshell进行恢复,语句为:

exec sp_addextendedproc 'xp_cmdshell', 'Xplog70.dll' (如图2)。


责任编辑:admin