本文僅為安全防禦視角分析歷史漏洞原理,**嚴禁用於非授權系統滲透測試**。請在合法授權範圍內進行安全加固,違者承擔法律責任。
早期 MySQL 默認安裝 root 賬戶無密碼,且允許遠程連接。攻擊者可匿名登入,利用 SELECT ... INTO OUTFILE 寫入啟動腳本,實現權限提升。
mysql -u root -h target_ipSHOW DATABASES; USE test; CREATE TABLE a (cmd TEXT);WScript.Shell 創建用戶、加入管理員組的命令SELECT * FROM a INTO OUTFILE 'C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\a.vbs'mysql_secure_installation
-- 或手動執行:
ALTER USER 'root'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
bind-address=127.0.0.1 或內網管理 IPSELECT/INSERT/UPDATE/DELETEFILE、SHUTDOWN、PROCESS、SUPER 權限mysql.user、mysql.db 權限表[mysqld]
local_infile=0 # 禁用 LOAD DATA LOCAL INFILE
secure_file_priv=/tmp/ # 限制導入導出目錄
--skip-symbolic-links # 禁用符號鏈接
general_log、slow_query_log、log_errorCREATE USER、GRANT、INTO OUTFILE、LOAD DATAMySQL 5.7+ / 8.0 默認:
- root 僅允許 localhost 登入
- 強制設置強密碼
- validate_password 插件內建
請優先升級至長期支持版(LTS)。
mysqlbinlog --base64-output=decode-rows -v「Root 空密碼」是配置疏忽而非代碼漏洞,但後果災難性。現代 MySQL 默認已修復,核心防線仍是:**強密碼 + 網絡隔離 + 最小權限 + 審計監控**。安全無小事,上線前務必跑通加固清單。