本文不提供、不傳播任何漏洞利用代碼、攻擊工具或攻擊教學。 原始內容包含 PHPbb 2.0.15 遠程命令執行漏洞的利用程式與實際攻擊截圖(含 /etc/passwd 洩露),屬於非法攻擊工具與敏感資訊洩露。本文僅從防禦角度分析漏洞成因、影響與修復建議。
viewtopic.php 中對 highlight 參數處理不當,導致 preg_replace() 的 /e 修飾符注入任意代碼phpBB 2.x 在高亮搜尋關鍵字時使用:
$message = preg_replace('/\b(' . $highlight . ')\b/i', '\\1', $message);
當 $highlight 可控且包含 {${...}} 或利用 /e 修飾符執行 PHP 代碼時,攻擊者可構造惡意參數執行任意系統指令。
id, ls, cat /etc/passwd 等)config.php 含資料庫帳密)phpBB 2.x 已於 2009 年停止維護,強制升級至 phpBB 3.3.x 或更新版本。3.x 重寫核心,移除 preg_replace /e 等危險用法。
preg_replace /e:PHP 5.5+ 已棄用,7.0+ 移除highlight 參數中的 {${, system(, exec( 等特徵disable_functions = exec,system,shell_exec,passthru,popen,proc_openopen_basedir 限制| 層面 | 措施 |
|---|---|
| 應用層 | 輸入驗證、輸出編碼、CSP 標頭、最小權限資料庫帳號 |
| 伺服器層 | ModSecurity WAF、禁用危險函數、目錄執行權限隔離 |
| 網路層 | 限制管理後台 IP、關閉非必要埠口、IDS/IPS |
| 監控層 | 檔案完整性監控(Tripwire/AIDE)、異常流量告警、日誌審計 |
phpBB 2.x 漏洞是經典的 preg_replace /e 代碼注入案例,雖然年代久遠,但同類模式(模板引擎注入、反序列化、任意文件包含)在現代框架仍屢見不鮮。開發者應:拒絕使用 /e 修飾符、嚴格驗證使用者輸入、採用參數化查詢、保持框架與元件更新、部署 WAF 與深度防禦體系。