Web 應用程序安全研究員 Aleksandr Zhurnakov 詳細揭示了 PHP 中新發現的 XML 外部實體(XXE)注入漏洞。該漏洞展示了攻擊者如何繞過多種安全機制,進而訪問敏感配置文件和私鑰,凸顯了即便在看似安全的實現中,不當的 XML 解析配置也存在巨大風險。
此漏洞利用了 PHP 的 libxml 擴展及其包裝器的組合,使攻擊者能夠繞過諸如 LIBXML_NONET、LIBXML_DTDLOAD 等限制標志以及其他標志。這些標志原本的作用是防止加載外部實體或訪問外部資源,然而研究顯示,攻擊者可借助高級有效載荷和技術規避它們。
繞過安全機制
該漏洞源于 PHP 通過 DOMDocument 類處理 XML 解析的方式。默認狀態下,外部實體加載處于禁用狀態,但像 LIBXML_DTDLOAD 這樣的特定標志,卻允許攻擊者加載惡意 DTD 文件。隨后,攻擊者可利用 php://filter 等 PHP 包裝器制作這些文件,以竊取諸如 /etc/passwd 或私鑰等數據。
攻擊者繞過安全機制的關鍵手段之一,是使用諸如 http:// 等替代包裝器替換 php://filter/resource=URL,從而有效地繞過 LIBXML_NONET 限制。
入站 HTTP 請求
此外,通過濫用參數實體(% name;),攻擊者能夠在應用安全檢查之前,將惡意內容注入 XML 結構中。更為復雜的是,研究表明,攻擊者可利用類似 zlib.deflate 過濾器的 base64 編碼來壓縮有效載荷,減小其大小,使其能夠符合 GET 參數或查詢字符串的常見服務器約束。
根據 PT Swarm 報告,當服務器上的出站 TCP 連接被阻止時,這種方法還能借助 DNS 子域實現滲透。
影響
該漏洞已在特定應用程序中被發現。例如,SimpleSAMLphp(CVE-2024-52596)中的 XXE 漏洞,允許未經身份驗證的用戶讀取配置文件、提取私鑰并偽造身份驗證斷言。
有效的 xxe 載荷
當 SimpleSAMLphp 被配置為身份提供者時,攻擊者實際上能夠完全繞過身份驗證機制。
Zhurnakov 的研究著重強調了 PHP 應用程序中安全 XML 解析實踐的重要性。建議開發人員禁用所有不必要的 libxml 標志(如 LIBXML_DTDLOAD、LIBXML_NOENT 等),并確保部署具有增強 XXE 保護的最新 PHP 版本(例如 PHP 8.4 中引入的相關保護機制)。此漏洞清晰地警示我們,看似微不足道的錯誤配置,也可能引發復雜的攻擊途徑,凸顯了在 Web 應用程序開發中進行嚴格測試和遵循安全編碼實踐的必要性。
參考及來源:https://gbhackers.com/php-xxe-injection-vulnerability-allows-attackers/
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.