此類攻擊利用 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 可訪問的目錄。
BACKUP DATABASE、BACKUP LOG 權限。db_backupoperator 或 sysadmin 角色。xp_cmdshell、sp_OACreate 等擴展存儲過程。BACKUP 語句的磁盤目標路徑,僅允許備份到指定的安全目錄。BACKUP、CREATE TABLE、INSERT 等敏感操作。BACKUP LOG、0x 十六進制載荷等特徵的惡意請求。若發現可疑 Webshell 文件,應立即:
安全防護是體系工程,單一防禦措施難以完美攔截。構建「最小權限+輸入驗證+輸出編碼+審計監控+應急預案」的纵深防御體系,才能有效降低此類攻擊風險。