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

理解並防範 SQL Server 備份日誌寫入 Webshell 攻擊

     編輯:關於SqlServer

攻擊原理分析

此類攻擊利用 SQL Server 的 BACKUP LOG 功能,將惡意代碼寫入磁盤文件,進而實現 Webshell 的植入。攻擊者通常需要具備數據庫的 public 權限,並結合特定的存儲過程或擴展存儲過程來執行備份操作。

典型攻擊語句結構

攻擊者會構造類似以下的 T-SQL 語句序列:

ALTER DATABASE [dbname] SET RECOVERY FULL;
CREATE TABLE [tablename] ([col] IMAGE);
BACKUP LOG [dbname] TO DISK = 'path\to\file' WITH INIT;
INSERT INTO [tablename] ([col]) VALUES (0x...十六進制編碼的惡意腳本...);
BACKUP LOG [dbname] TO DISK = '目標Web目錄\shell.aspx' --

關鍵在於將經過十六進制編碼的腳本代碼(如 ASP/ASPX/JSP Webshell)通過 INSERT 寫入臨時表,再利用 BACKUP LOG ... WITH INIT 將其覆蓋寫入 Web 可訪問的目錄。

防禦與緩解措施

1. 最小權限原則

  • 嚴格限制數據庫用戶權限,移除不必要的 BACKUP DATABASE、BACKUP LOG 權限。
  • Web 應用連接賬號不應擁有 db_backupoperator 或 sysadmin 角色。

2. 禁用/限制危險功能

  • 通過表面積配置或策略禁用 xp_cmdshell、sp_OACreate 等擴展存儲過程。
  • 限制 BACKUP 語句的磁盤目標路徑,僅允許備份到指定的安全目錄。

3. 文件系統權限隔離

  • Web 目錄與數據庫備份目錄嚴格分離,Web 進程對備份目錄無寫入權限,數據庫服務賬號對 Web 目錄無寫入權限。
  • 禁用 Web 目錄的腳本執行權限(如通過 IIS 處理程序映射移除 .aspx/.ashx 等映射)。

4. 審計與監控

  • 啟用 SQL Server 審計,記錄 BACKUP、CREATE TABLE、INSERT 等敏感操作。
  • 部署文件完整性監控(FIM),實時檢測 Web 目錄下的異常文件創建/修改。

5. 注入防護

  • 應用層採用參數化查詢,徹底杜絕 SQL 注入入口。
  • 部署 WAF(Web 應用防火牆)攔截包含 BACKUP LOG、0x 十六進制載荷等特徵的惡意請求。

應急響應建議

若發現可疑 Webshell 文件,應立即:

  1. 隔離受影響服務器,保留現場證據。
  2. 檢查 SQL Server 錯誤日誌、默認跟蹤、審計日誌,確定攻擊時間點與語句。
  3. 清理惡意文件,修復權限配置,修補注入漏洞。
  4. 輪換所有數據庫賬號密鑰,審查權限分配。

安全防護是體系工程,單一防禦措施難以完美攔截。構建「最小權限+輸入驗證+輸出編碼+審計監控+應急預案」的纵深防御體系,才能有效降低此類攻擊風險。

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