首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP Wood馬攻擊防禦實戰:open_basedir、disable_functions、權限最小化

     編輯:PHP 綜合知識

1. 限制 PHP 操作路徑:open_basedir

修改 httpd.conf (Apache) 或 php.ini,限制腳本只能存取指定目錄:

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

嘗試讀取目錄外檔案將觸發警告:

Warning: open_basedir restriction in effect. File is in wrong directory...

2. 禁用危險函數:防 WebShell 執行

在 php.ini 設定 disable_functions,二選一或皆啟用:

  • 啟用 safe_mode(PHP 5.4 已移除,舊版專案參考)。
  • 禁用函數清單:
disable_functions = passthru,exec,shell_exec,system

3. 禁用檔案操作函數:防木馬讀寫檔案

在上述清單後追加檔案處理函數:

disable_functions = passthru,exec,shell_exec,system,
fopen,mkdir,rmdir,chmod,unlink,dir,
fopen,fread,fclose,fwrite,file_exists,
closedir,is_dir,readdir,opendir,
fileperms,copy,unlink,delfile

副作用:合法的檔案上傳、快取、日誌功能將失效。生產環境建議改用 open_basedir 限制路徑,而非全盤禁用函數。

4. Windows + Apache 權限降級

Apache 預設以 System 權限執行,風險極高。建立低權限帳號執行 Apache:

net user apache fuckmicrosoft /add
net localgroup users apache /del
# 在服務屬性 → 登入 → 此帳號 → 輸入 apache 帳號密碼 → 重啟服務

進一步可針對各目錄設定 ACL,只授予必要讀寫權限(虛擬主機商常用做法)。

現代防禦建議(補充)

  • 升級至 PHP 8.x,移除已棄用的危險功能。
  • 使用 open_basedir + disable_functions 組合,而非單一手段。
  • 部署 WAF(如 ModSecurity)攔截惡意請求。
  • 定期掃描可疑檔案(find /var/www -name "*.php" -mtime -1)。
  • 啟用 expose_php = Off、display_errors = Off、log_errors = On。
  • 檔案上傳目錄設定 php_flag engine off 禁止 PHP 執行。
  • 採用容器化部署,限制容器權限與檔案系統存取。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved