_cmdshellMSSQL严禁使用XP_CMDSHELL命令(mssql已禁用代理xp)
xp\_cmdshell 是微软 SQL Server 中的一个功能。它可以让用户调用操作系统的命令,运行批处理文件等功能,但微软很重视安全性,把它禁止了,只有拥有系统管理员权限的用户才可以使用它。
由于 XP\_ cmdshell 拥有调用操作系统的功能,如果安全没有被规避时,数据库就会受到攻击者的入侵。因此,MSSQL 严禁使用 XP_CMDShell 命令。微软不建议将 XP\_cmdshell 也当作一种可接受的使用,尤其是对商业场合。
除了 XP_CMDShell 之外,MSSQL 还禁用了大量的扩展存储存储过程,并让一些存储过程只在一个分区才可用。
为了更加安全和有效地使用 MSSQL,先启动 MSSQL 命令提示符,然后输入我们想要使用的命令,使特定的存储过程在允许的情况下使用时有所受阻。
例如,可以使用下列命令来禁用 XP_CMDshell:
EXEC sp_configure ‘xp_cmdshell’, 0
RECONFIGURE
另外,可以使用脚本更改配置文件并安全地禁用需要禁用的扩展存储存储过程,代码如下:
–使用脚本改变配置文件
USE master
GO
DECLARE @name VARCHAR(255)
DECLARE @xp_cmdshell INT
SELECT @namp = name FROM sys.configurations
WHERE [name] = ‘xP_cmdshell’
IF @@ROWCOUNT = 1
BEGIN
SELECT @xp_cmdshell = value FROM sys.configurations
WHERE [name] = ‘xp_cmdshell’
IF @xp_cmdshell = 1
BEGIN
DECLARE @sql VARCHAR(500)
SET @sql = ‘sp_configure”xp_cmdshell”,0’
EXEC (@sql)
END
END
GO
通过上述步骤就可以安全、有效的禁止使用 XP\_ CMDShell 命令,防止 MSSQL 受击。MSSQL 有一些其他的安全设置,可以使用脚本来改变配置,从而达到更加安全和完整的 MSSQL 环境。