提到 sa 弱口令,我们首先就会想到,许多资料库都有 1 个类似的超级管理员账号,比如:Oracle 是”system” 和”sys”,Sybase 也 是”sa”,MySQL 里有”root”(不是 UNIX 系统账号的那个 root) 。如果没有设定相对应的密码或者你设的密码强度太低过于简单,那么入侵者 就能直接登陆并攻击资料库站群服务器,他们甚至可以获得你操作系统的最高阶别的许可权。说到这里,有的人也许不相信,曾经有人和我说:” 资料库被攻破最多你的那 些表啊什么的被人家拿走,对方怎么可能获得操作系统最高许可权呢?” 其实,我并不是在危言耸听,下面我就假设某台 SQL Server 的资料库的 SA 密码被破解为例,来看看黑客在取得了资料库许可权后如何进 1 步把自己变成系统的管理员。
目前,互联网上有不少此类工具,可以方便那些不熟悉 SQL 的人用,其实完全不用去下载那种工具,只要用微软自己的 SQL Server 里自带客户端程式连上去就马上可以轻松的把自己变成整个操作系统的超级管理员了。具体的过程,我就为大家讲解 1 遍,这里先假设黑客已经通过其他工具暴力破解了你设定的强度教低的 sa 帐号的弱口令,或者你根本就没有为 sa 账号设定口令。首先黑客开启 SQL Server 查询分析器,以 sa 身份和他刚暴力破解的密码登陆进你的 SQL Server 资料库,然后他执行以下语句:
xp_cmdshell “net user zxc nopassword /add” go xp_cmdshell “net localgroup /add administraTors zxc” go
这时候,你如果开启你的计算机管理—–本地使用者和组—–使用者,这时候你会发现里面已经多出了 1 个叫 zxc 的新账号,检视一下此帐号的属性,你更会发现他竟然隶属于 administraTors 组。
说到这里大家肯定都明白了,对,黑客通过呼叫 SQL Server 的系统资料库 master 里的 xp_cmdshell 这个扩充套件储存过程轻松的将他自己变成了你站群服务器上的超级管理员,那么以后他还有什么事情会干不了呢。
因此,如果大家在平时不需要呼叫此储存过程的话,可以考虑将它删除,当然不管你平时是不是要呼叫此储存过程,你都应该为你的 sa 账号设定 1 个十分健壮的密码,这是最根本、最重要的,你可以开启 SQL Server 的企业管理器,然后选择安全性—–登陆,右击 sa 账号,选择属性,然后在属性对话方块里修改您的 sa 帐号所对应的密码,这里我建议你要尽可能的设定的复杂些,可以用英文字母结合数字结合特殊符号等,这样就可以防止黑客对此帐号的暴力破解,当然最好是在安装您的 SQL Server 的时候就已经完成此项工作,以免日后因人为遗忘等原因带来安全隐患。
下面我们来看修改 sa 使用者名称的办法。
最简单的程式码如下
复制程式码 程式码如下:
Alter LOGIN sa DISABLE
Alter LOGIN sa WITH NAME = [systemAccount]
利用企业管理器
首先,在企业管理器的查询分析器中执行以下程式码(注意,进入查询分析器的使用者名称的角色要为 System administrator, 而且是各个资料库的 db owner):
复制程式码 程式码如下:
sp_configure ‘allow updates’, 1
go
RECONFIGURE WITH OVERRIDE
go
然后再执行以下程式码
复制程式码 程式码如下:
update sysxlogins set name=’ 你要改成的名字’ where sid=0x01
update sysxlogins set sid=0xE765555BD44F054F89CD0076A06EA823 where name=’ 你要改成的名字’
接著:
复制程式码 程式码如下:
sp_configure ‘allow updates’, 0
go
RECONFIGURE WITH OVERRIDE
go
然后,你检视一下 SQL SERVER 的角色,就会发现 SA 的使用者名称,已经改为你的新名子了。
为了加强安全把预设的 sa 使用者更改掉,安全性会有大幅提升。
Alter LOGIN sa DISABLE
Alter LOGIN sa WITH NAME = [新使用者名称]
修改 SA 使用者名称:
一:在企业管理器中右击:(local)(windows NT),选属性,选择 “站群服务器设定”,在站群服务器行为中的 “允许对系统目录直接进行修改” 前面的方框打钩。再点确定。
二:再开启查询分析器,登陆进去(呵呵,随便你用什么帐号进去,不过可一定要在 master 资料库中有 db_owner 的许可权)输入
复制程式码 程式码如下:
update sysxlogins set name=’ 你要改成的名字’ where sid=0x01
update sysxlogins set sid=0xE765555BD44F054F89CD0076A06EA823 where name=’ 你要改成的名字’
,OK,执行成功,转道企业管理器中重新整理安全性中的登陆,看看,sa 是不是变成你自己想修改的使用者了
删除 SA 使用者:
修改方法需要利用的储存过程 sp_configure,sp_configure 显示或更改当前站群服务器的全域性配置设定。
语法:
开启查询分析器,输入
sp_configure [ [ @configname = ] ‘name’ ]
[ , [ @configvalue = ] ‘value’ ]
例项:
复制程式码 程式码如下:
sp_configure ‘allow updates’, 1
go
RECONFIGURE WITH OVERRIDE
go
好拉,这样我们就可以更新系统表拉,接下来和前面的做法一样拉 update sysxlogins set name=’ 你要改成的名字’ where sid=0x01,然后再删除” 你改名后的那个名字”
不 过要注意在 sp_configure 上没有引数(或只有第一个引数)的执行许可许可权预设授予所有使用者。有两个引数的 sp_configure(用于更改配置选项)的执行许可许可权预设授予 sysadmin 和 serveradmin 固定站群服务器角色。 RECONFIGURE 许可权预设授予 sysadmin 固定站群服务器角色和 serveradmin 固定站群服务器角色,并且不能传输。