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

MySQL Root 空密碼漏洞利用與防範指南

     編輯:MySQL 資料庫相關知識

⚠️ 安全聲明

本文僅為安全防禦視角分析歷史漏洞原理,**嚴禁用於非授權系統滲透測試**。請在合法授權範圍內進行安全加固,違者承擔法律責任。

漏洞成因

早期 MySQL 默認安裝 root 賬戶無密碼,且允許遠程連接。攻擊者可匿名登入,利用 SELECT ... INTO OUTFILE 寫入啟動腳本,實現權限提升。

攻擊鏈還原(僅供防禦理解)

  1. 連接目標:mysql -u root -h target_ip
  2. 探庫探表:SHOW DATABASES; USE test; CREATE TABLE a (cmd TEXT);
  3. 注入 VBS 腳本:向表插入 WScript.Shell 創建用戶、加入管理員組的命令
  4. 導出啟動項:SELECT * FROM a INTO OUTFILE 'C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\a.vbs'
  5. 誘導/等待重啟,腳本以 SYSTEM 權限執行,攻擊者獲得管理員帳號

核心防範措施

1. 安裝即加固(必做)

mysql_secure_installation
-- 或手動執行:
ALTER USER 'root'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;

2. 網絡層隔離

  • 防火牆僅放行應用服務器 IP 訪問 3306
  • MySQL 配置 bind-address=127.0.0.1 或內網管理 IP
  • 禁用公網 IP 直接暴露

3. 最小權限原則

  • 應用使用專用賬戶,僅授予所需庫表 SELECT/INSERT/UPDATE/DELETE
  • 禁止應用賬戶 FILE、SHUTDOWN、PROCESS、SUPER 權限
  • 定期審計 mysql.user、mysql.db 權限表

4. 禁用危險功能

[mysqld]
local_infile=0          # 禁用 LOAD DATA LOCAL INFILE
secure_file_priv=/tmp/  # 限制導入導出目錄
--skip-symbolic-links   # 禁用符號鏈接

5. 監控與審計

  • 啟用 general_log、slow_query_log、log_error
  • 部署審計插件(MariaDB Audit Plugin / MySQL Enterprise Audit)記錄所有 DDL/DML
  • 關鍵操作告警:CREATE USER、GRANT、INTO OUTFILE、LOAD DATA

6. 版本升級

MySQL 5.7+ / 8.0 默認:
- root 僅允許 localhost 登入
- 強制設置強密碼
- validate_password 插件內建
請優先升級至長期支持版(LTS)。

應急響應清單

  1. 發現異常賬戶/腳本 → 立即封禁源 IP、鎖定可疑賬戶
  2. 檢查啟動項、計劃任務、服務註冊表是否被植入
  3. 導出二進制日誌分析攻擊鏈:mysqlbinlog --base64-output=decode-rows -v
  4. 修改所有數據庫賬戶密碼、輪換應用配置
  5. 向安全團隊/監管部門上報,保留證據鏈

總結

「Root 空密碼」是配置疏忽而非代碼漏洞,但後果災難性。現代 MySQL 默認已修復,核心防線仍是:**強密碼 + 網絡隔離 + 最小權限 + 審計監控**。安全無小事,上線前務必跑通加固清單。

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