本文僅供防禦研究與安全教育,嚴禁用於非授權滲透測試或惡意用途。
MySQL 5.0 引入觸發器功能,若攻擊者擁有 TRIGGER 與 FILE 權限,可建立惡意觸發器,在特定表操作(如管理員登入更新)時,利用 SELECT ... INTO OUTFILE 寫入 Webshell 或啟動項:
CREATE TRIGGER Ha0K AFTER UPDATE ON admin
FOR EACH ROW
SELECT '' INTO OUTFILE '/var/www/html/shell.php';
UPDATE(如修改密碼、狀態)。secure_file_priv 未限制或路徑在允許目錄內。TRIGGER、FILE、SUPER 權限。secure_file_priv: my.cnf 設定 secure_file_priv=/tmp/ 限制導出目錄,或設為 NULL 完全禁用。INFORMATION_SCHEMA.TRIGGERS 發現異常物件。noexec、nosuid,禁止 PHP 執行上傳目錄腳本。INTO OUTFILE/INTO DUMPFILE 異常流量。secure_file_priv 預設限制。TRIGGER 權限獨立管控、資料字典鎖定 DDL。audit_log 記錄所有 DDL/DML。資料庫層面的後門往往隱蔽性極高,防禦核心在於「權限最小化」與「檔案寫入路徑隔離」。