允許在 SQL Server 內執行作業系統命令,預設僅 sysadmin 角色可用。安全加固常移除或禁用它。
IF EXISTS (
SELECT * FROM dbo.sysobjects
WHERE id = OBJECT_ID(N'[dbo].[xp_cmdshell]')
AND OBJECTPROPERTY(id, N'IsExtendedProc') = 1
)
EXEC sp_dropextendedproc N'xp_cmdshell'
-- SQL Server 7.0 EXEC sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' -- SQL Server 2000 EXEC sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
取得 SA 後用 SqlExec 執行命令提示 SQL_ERROR,多半是 xp_cmdshell 被移除。
EXEC sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
%ssp_addextendedproc 'xp_cmdshell','xplog70.dll'移除同理,CMD 填 sp_dropextendedproc 'xp_cmdshell'。
執行添加語句提示:「資料庫中已存在名為 'xp_cmdshell' 的對象」,但實際無法使用。
xplog70.dll 是否存在於 Binn 目錄xp_cmdshell,需用時臨時添加、用畢即刪sp_addextendedproc、xp_cmdshell 執行審計xplog70.dll(ACL、檔案完整性監控)本文僅供安全研究與防禦參考,嚴禁用於未授權滲透測試或攻擊行為。