若攻擊者取得 `sa` 權限 (暴力破解/預設空密碼/密碼重用),可透過內建 `xp_cmdshell` 直接執行作業系統指令:
-- 攻擊者在 Query Analyzer / SSMS 執行
EXEC xp_cmdshell 'net user hacker P@ssw0rd /add'; -- 建立本地帳號
EXEC xp_cmdshell 'net localgroup administrators hacker /add'; -- 加入管理員群組
數秒內,攻擊者擁有 **本機系統管理員 (Local Admin)** 權限,進而完全控制伺服器、橫向移動、部署勒索軟體、竊取資料。
若業務**不需**資料庫執行 OS 指令 (絕大多數應用不需):
-- 檢查是否存在
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'xp_cmdshell' AND type = 'X')
EXEC sp_dropextendedproc 'xp_cmdshell';
若無法以 Windows 登入 SSMS 切換模式:
reg add "HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer" /v LoginMode /t REG_DWORD /d 2 /f
net stop MSSQLSERVER & net start MSSQLSERVER
切換至「混合模式」後,務必補齊 `BUILTIN\Administrators` 與本機 `Administrator` 登入並授 `sysadmin`,否則 Windows 管理員將無法以整合驗證管理 SQL。
**SA 強密碼是基石,移除 `xp_cmdshell` 是核心減面,應用專用低權限帳號是常態。** 三者缺一不可,構成 SQL Server 基礎設施安全的鐵三角。