xp_cmdshell 允許 T-SQL 執行作業系統命令,是提權攻擊的首選目標。駭客取得 sysadmin 後常嘗試啟用它以控制伺服器主機。
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'xp_cmdshell' AND type = 'X')
EXEC sp_dropextendedproc 'xp_cmdshell'
偵測:SELECT * FROM sys.objects WHERE name = 'xp_cmdshell' 無結果。
-- SQL 7.0
EXEC sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
-- SQL 2000/2005+
EXEC sp_addextendedproc 'xp_cmdshell', 'xpstar.dll' -- 實際 DLL 視版本
偵測:定期稽核 sys.objects 類型 X (擴充預存程序) 異動。
若 xplog70.dll / xpstar.dll 遺失,sp_addextendedproc 會報錯「找不到 DLL」。防禦:檔案完整性監控 (FIM) 監控 Binn 目錄關鍵 DLL。
EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE (SQL 2005+ 預設關閉)。sp_dropextendedproc 徹底移除。sysadmin,僅授 db_datareader/writer 或預存程序 EXECUTE 權限。Binn 目錄關鍵 DLL (xpstar.dll, xplog70.dll) 列入 FIM 白名單,異動即警示。bcp / SSIS / CLR 安全組件。xp_cmdshell 是高風險介面,生產環境應徹底移除或嚴格管控。防禦重點在於「最小權限」、「稽核異動」、「檔案完整性」三層防線。