29 04 2010
xp_cmdshell禁用
xp_cmdshell可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串,
并以文本行方式返回任何输出,是一个功能非常强大的扩展存贮过程。
一般情况下,xp_cmdshell对管理员来说也是不必要的,xp_cmdshell的消除不会对Server造成
任何影响。
可以将xp_cmdshell消除:
Use Master
Exec sp_dropextendedproc N'xp_cmdshell'
Go
如果需要的话,可以把xp_cmdshell恢复回来:
Use Master
Exec sp_addextendedproc N'xp_cmdshell', N’xplog70.dll'
Go
—————————————————————-
开启telnet服务。
打开我的查询分析器,填入服务器地址,用户民和密码。连接成功了。尝试一下xp_cmdshell是否
可以使用,
use master;
xp_cmdshell ‘dir c:‘;
记得分号是不可以少的哦。一切正常。显示出来了c:盘下的目录和文件。那就继续下去,
添加windows用户:
xp_cmdshell ‘net user awen /add‘;
设置好密码:
xp_cmdshell ‘net user awen password‘;
提升到管理员:
xp_cmdshell ‘net localgroup administrators awen /add‘;
开启telnet服务:
xp_cmdshell ‘net start tlntsvr‘
—————————————————————-
把危险的和不必要的存储过程删除,
xp_cmdshell,很危险的一个存储过程,能够执行dos命令,可以通过下述SQL语句
use master
sp_dropextendedproc ‘xp_cmdshell‘
不过依然可以通过sp_addextendedproc来恢复,因此最好删除或改名xplog70.dll(sql server 2000)
xpsql70.dll(sql serer 7.0)
以下存储过程也很危险
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