Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

PHP WebShell 防禦實戰:三層防護封鎖木馬執行、讀寫與目錄遍歷

編輯:Windows XP 系統介紹

PHP WebShell(俗稱「PHP 木馬」)是駭客入侵網站後植入的後門腳本,能執行系統指令、讀寫檔案、竊取資料庫。單靠殺毒軟體無法完整防禦,必須從 PHP 設定、Web 伺服器、應用程式碼三層面佈防。本文提供三大實務防護策略,可直接套用於 Apache + PHP 環境。

第一層:限制 PHP 腳本存取路徑(防止跳出 Web 目錄)

修改 httpd.conf,設定 open_basedir 將 PHP 操作限制在 Web 根目錄:

php_admin_value open_basedir "/usr/local/apache/htdocs"

效果:腳本嘗試讀取 /etc/passwd 或上層目錄檔案時,將拋出錯誤:

Warning: open_basedir restriction in effect. File is in wrong directory in /usr/local/apache/htdocs/open.php on line 4

第二層:停用高危函數(防止執行 WebShell 指令)

修改 php.ini,二選一或同時啟用:

方案 A:啟用 Safe Mode(PHP 5.4 後已移除,舊版適用)

safe_mode = On

方案 B:停用危險函數(推薦,相容性佳)

disable_functions = passthru,exec,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

這將封鎖 WebShell 常用的指令執行函數族群。

第三層:停用檔案系統操作函數(防止讀寫、掃描目錄)

在 disable_functions 後追加檔案操作函數:

disable_functions = ...,fopen,fread,fwrite,fclose,file_exists,file_get_contents,file_put_contents,file,readfile,unlink,mkdir,rmdir,chmod,chown,chgrp,copy,rename,opendir,readdir,closedir,scandir,glob,realpath,pathinfo,stat,lstat,fileperms,fileowner,filegroup,fileinode,filemtime,fileatime,filectime

注意:停用過多函數可能導致正常應用(如 CMS 檔案上傳、快取寫入、套件更新)失效。建議:

  1. 先在測試環境驗證應用相容性
  2. 採用「最小權限」原則:僅停用確實被濫用的函數
  3. 搭配 open_basedir 形成雙重防線

進階補強建議

  • 檔案上傳防護:嚴格驗證副檔名、MIME 類型、檔案內容;上傳目錄設定 php_flag engine off 禁止 PHP 執行
  • 目錄權限最小化:Web 目錄僅授予必要寫入權限,核心程式碼目錄唯讀
  • WAF/ModSecurity:部署 Web 應用防火牆,即時攔截已知 WebShell 特徵與攻擊載荷
  • 定期掃描:使用 PHP-malware-scanner、LMD (Linux Malware Detect) 定期掃描可疑檔案
  • 禁用危險 PHP 設定:allow_url_fopen = Off、allow_url_include = Off、expose_php = Off

結語

PHP WebShell 防禦沒有銀彈,但「路徑限制 + 函數停用 + 權限最小化」三層疊加,能將攻擊面壓縮到極低。請根據業務需求在安全性與可用性間取得平衡,並持續更新防護規則與威脅情報。

Copyright © Windows教程網 All Rights Reserved