實戰案例:Windows 2000 + SQL Server 2000 資料庫伺服器,長期未以管理員登入導致密碼遺失,且未加入網域無法用域管帳號介入。利用記得的 sa 密碼與 xp_cmdshell 擴展預存程序,透過 osql.exe 命令列客戶端執行系統指令,建立臨時管理員帳號登入並重置原密碼。
sa (系統管理員) 密碼,且 sa 具備 sysadmin 固定伺服器角色 (預設即有)。xp_cmdshell 未被移除/停用 (SP3 後預設停用,需確認)。osql.exe (Office 2000/ SQL Server 客戶端工具/ SQL Server Feature Pack 均含)。osql.exe 目錄。osql -S 192.168.0.88 -U sa -P "sa_password" -Q "xp_cmdshell 'net user temp_admin P@ssw0rd /add'"
osql -S 192.168.0.88 -U sa -P "sa_password" -Q "xp_cmdshell 'net localgroup administrators temp_admin /add'"
temp_admin / P@ssw0rd 登入系統 (本地或遠端桌面)。Administrator 密碼。temp_admin 帳號,審核事件日誌記錄操作軌跡。xp_cmdshell 在 SQL Server 進程上下文 (通常為 LocalSystem 或指定服務帳號) 執行命令殼層,擁有極高權限,可執行任何 cmd.exe 支援的指令。此特性雙面性極強:
sa 帳號一旦外洩,攻擊者即獲系統級控制權。sa 遠端登入 (sp_configure 'remote access', 0)。EXEC sp_dropextendedproc 'xp_cmdshell' (SQL 2000) 或 Surface Area Configuration 介面停用 (SQL 2005+)。確有需求時臨時啟用、用畢即停。xp_cmdshell 執行事件 (SQL Profiler / Extended Events / 登入稽核)。結語: 此法屬「破窗急救」,非常規運維手段。根本解決在於建立完善的帳號密碼生命週期管理與最小權限原則落地,將「必須用後門進系統」的情境消滅於萌芽狀態。