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

PHP Webshell 掃描器實作:掃描可疑文件與危險函數特徵

     編輯:PHP 綜合知識

工具概述

本掃描器用於檢測 Web 目錄下的 PHP Wood馬/後門文件,通過特徵匹配識別可疑代碼。功能包括:遞歸掃描目錄、指定掃描副檔名、跳過白名單文件、危險函數特徵庫匹配、可疑文件查看與刪除介面。

核心配置參數

$dir = 'cms';           // 掃描根目錄
$jumpoff = false;       // 是否啟用跳過名單
$jump = 'safe.php|g';   // 跳過文件/目錄模式(正則)
$danger = 'eval|cmd|passthru'; // 危險函數關鍵字(以 | 分隔)
$suffix = 'php|inc';    // 掃描文件副檔名

核心邏輯流程

  1. 遞歸遍歷:Safe_Check() 遞歸掃描目錄,統計文件/目錄數量。
  2. 副檔名過濾:preg_match("/\.($suffix)/i", $filename) 判斷是否掃描。
  3. 內容讀取:逐行讀取文件內容至字串。
  4. 特徵匹配:preg_match("/($danger)[ \r\n\t]{0,}([\[\(])/i", $str) 檢測危險函數調用模式(如 eval(、system( 等)。
  5. 結果呈現:輸出可疑文件路徑、提供「查看代碼」「刪除」操作鏈接。

輔助功能

  • Edit():讀取文件內容並以 htmlspecialchars 安全輸出至 textarea 供審計。
  • Delete():執行 unlink() 刪除確認為後門的文件。
  • Jump():根據白名單模式跳過文件。
  • GetHttpVars():兼容舊版 PHP 獲取 $_POST/$_GET。

使用介面

簡單 HTML 表單提交 check=check 觸發掃描,顯示掃描統計:文件數、目錄數、可疑數、耗時。

⚠️ 使用須知與局限

  • 僅為輔助工具:掃描結果存在誤報(正常代碼含危險函數)與漏報(混淆加密後門)
  • 需人工複核:所有可疑文件必須人工審計確認,不可直接批量刪除
  • 特徵庫需更新:隨攻擊手法演進,需持續補充特徵庫(如 assert、create_function、base64_decode 組合等)
  • 權限要求:PHP 進程需具備目標目錄讀取權限
  • 生產環境謹慎部署:掃描器本身若被植入後門將失效,建議離線掃描或只讀介質運行

進階改進方向

  • 整合 AST(抽象語法樹)分析,語義級檢測繞過字串混淆
  • 引入機器學習模型識別異常代碼模式
  • 支援掃描報告導出(JSON/HTML/CSV)
  • 整合 CI/CD 流程實現自動化掃描攔截
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved