我在网上找了些安全性方面的文章,提到要去除xp_cmdshell过程,这里我有几个疑问:
1 有的文章提到xp_cmdshell是使用xpsql70.dll这个文件的,但是我在我的数据库安装目录下面搜索,根本没有xpsql70.dll这个文件,这是为什么?然而我用sp_helpextendedproc 'xp_cmdshell'这个命令来查看的话,的确显示的是xpsql70.dll文件,那为什么我找不到呢?
2 跟上面对应的,有的文章又说xp_cmdshell是使用xplog70.dll这个文件的,这个文件我的确是在安装目录下面找到了,但是我在去除了xp_cmdshell过程后,即使把这个文件删除或者拷贝到其他分区备份,但是仍然可以用恢复命令来恢复这个过程,这是为什么呢?我用的恢复命令是:
exec sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
或者
sp_addextendedproc 'xp_cmdshell','xpsql70.dll'
都可以,我不知道为什么这2个DLL文件都可以恢复xp_cmdshell?即使在一个文件根本找不到,另一个文件被我删除的情况下
1 有的文章提到xp_cmdshell是使用xpsql70.dll这个文件的,但是我在我的数据库安装目录下面搜索,根本没有xpsql70.dll这个文件,这是为什么?然而我用sp_helpextendedproc 'xp_cmdshell'这个命令来查看的话,的确显示的是xpsql70.dll文件,那为什么我找不到呢?
2 跟上面对应的,有的文章又说xp_cmdshell是使用xplog70.dll这个文件的,这个文件我的确是在安装目录下面找到了,但是我在去除了xp_cmdshell过程后,即使把这个文件删除或者拷贝到其他分区备份,但是仍然可以用恢复命令来恢复这个过程,这是为什么呢?我用的恢复命令是:
exec sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
或者
sp_addextendedproc 'xp_cmdshell','xpsql70.dll'
都可以,我不知道为什么这2个DLL文件都可以恢复xp_cmdshell?即使在一个文件根本找不到,另一个文件被我删除的情况下
EXEC sp_configure 'show advanced options', 1
GO
-- 重新配置
RECONFIGURE WITH OVERRIDE
GO
-- 启用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
--重新配置
RECONFIGURE WITH OVERRIDE
GO--执行想要的xp_cmdshell语句
Exec xp_cmdshell 'query user'
GO--用完后,要记得将xp_cmdshell禁用(出于安全考虑)
-- 允许配置高级选项
EXEC sp_configure 'show advanced options', 1
GO
-- 重新配置
RECONFIGURE WITH OVERRIDE
GO
-- 禁用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 0
GO
--重新配置
RECONFIGURE WITH OVERRIDE
GO