Microsoft SQL Server 提供多種機制允許 T-SQL 執行作業系統層級命令,這在合法管理自動化極為方便,但若配置不當或權限過度授予,極易成為攻擊者提權、植入後門、竊取資料的關鍵路徑。本文系統梳理常見命令執行向量,並針對每種機制提出防護建議,助您建立纵深防禦體系。
EXEC xp_cmdshell 'net user hacker P@ssw0rd /add' 新增管理員帳號。sp_dropextendedproc 徹底移除,或刪除底層 DLL (xplog70.dll / xpsql70.dll)。sp_addextendedproc,甚至重建該系統預存程序。Run 鍵值) 實現持久化或延遲執行。WScript.Shell, Scripting.FileSystemObject) 間接執行命令、讀寫檔案。> file.txt) 與 FSO 讀取檔案內容,實現「有回顯」的命令執行。Ole Automation Procedures 伺服器選項 (預設關閉);權限通常限制於 sysadmin。sp_add_job, sp_add_jobstep (subsystem: CMDEXEC 或 TSQL), sp_add_jobserver, sp_start_job。xp_execresultset 甚至允許低權限用戶 (public) 間接調用 xp_cmdshell。@output_file_name 參數,可將查詢結果寫入任意路徑,配合啟動目錄植入惡意腳本。sp_makewebtask:生成靜態網頁,可寫入 Web Shell (已移除於新版本)。sp_MScopyscriptfile:內部用途,同樣可能被利用寫入任意檔案。sysadmin、securityadmin 等高權限角色成員資格。db_datareader/db_datawriter,禁止直接執行擴展預存程序。-- 停用 xp_cmdshell (推薦)
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE;
-- 停用 OLE Automation
EXEC sp_configure 'Ole Automation Procedures', 0; RECONFIGURE;
-- 如極少使用 SQL Agent,考慮設為「手動」啟動並嚴格限制作業建立權限
xplog70.dll, xpsql70.dll) 徹底斷開 xp_cmdshell 底層支援。EXECUTE 擴展預存程序、CREATE JOB、sp_configure 變更等敏感事件。xp_cmdshell, sp_oacreate, sp_add_job 等特徵的異常 T-SQL 批次。xp_execresultset 相關 CVE)。xp_cmdshell, Ole Automation Procedures 是否啟用:EXEC sp_configure 'xp_cmdshell';SELECT * FROM msdb.dbo.sysjobs; 重點排查 subsystem = 'CMDEXEC' 或可疑 TSQL 步驟。SELECT * FROM sys.extended_procedures;MSSQL 命令執行功能雙面性極強:既是自動化運維利器,也是攻擊者夢寐以求的「核武器」。採取「預設拒絕、按需開啟、持續監控、定期演練」的全生命週期管理策略,才能在享受自動化便利的同時,將風險控制在可接受範圍內。