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