Tag Archive: sa

十月 21st, 2015

提到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 固定服务器角色,并且不能传输。

TAGS: ,