什麼是文件包含攻擊?

已發表: 2023-03-31

任何工具都可以用於好意或壞意,文件包含也不例外。 文件包含是一種編程方法,可以更輕鬆地在整個站點中維護代碼和擴展功能。 文件包含攻擊濫用了 PHP 使用文件包含作為從許多單獨文件中聯合和執行代碼以創建單個網頁的有效方法的方式。 由於 PHP 是 WordPress 使用的一種語言,因此當適當的安全措施被破壞、不完整或缺失時,WordPress 和其他 PHP 應用程序很容易出現文件包含漏洞。

在這份文件包含攻擊的完整指南中,我們將探索黑客如何利用糟糕的用戶輸入清理和驗證來注入惡意軟件並發送錯誤指令以闖入 WordPress 網站。

您將了解 WordPress 文件包含攻擊是如何發生的,以及您可以採取哪些措施來保護您的網站免受攻擊。

文件包含攻擊

什麼是文件包含?

文件包含是一種開發技術,用於將許多文件包含到一個腳本或網頁中以添加功能、重用設計模板或在多個頁面上共享一段內容。

文件包含是絕對必要的。 開發人員通常將它們用於以下目的:

  • 包括網站所有頁面通用的頁眉和頁腳文件,以確保設計和功能的一致性。
  • 包括用於整個網站或 Web 應用程序關鍵功能的腳本和庫。
  • 包括包含應用​​程序設置的配置文件,例如數據庫連接信息和 API 密鑰。
  • 包括圖片、視頻、文字等內容,或網頁上的其他內容。
  • 包括根據作為 URL 參數傳遞的用戶輸入生成動態內容的功能。 例如,用戶可能會提交一個表單來生成特定的輸出。

文件包含類型

使用文件包含技術,開發人員可以靜態或動態地向網頁添加文件和腳本。

使用靜態文件包含,開發人員可以通過引用統一資源定位器 (URL) 或存儲在本地(即同一服務器上)的文件路徑,在多個頁面上重複使用相同的文本或代碼。 靜態文件包含允許主題在許多網頁上使用相同的頁眉、頁腳或導航菜單代碼。

動態文件包含在運行時接受用戶輸入。 用戶通過傳遞特定文件的路徑來指示所需的輸出。 通常,用戶輸入將作為 URL 或表單提交中的參數傳遞。 例如,用戶可能會從語言的下拉選擇列表中選擇“英語”,這會將他們帶到他們所在頁面的英語版本,方法是像這樣更改 URL: /page.php?language=english 。 如果有人用遠程文件的 URL 替換“ english ”,如果沒有適當的檢查來防止這種情況,他們可能能夠將 Web shell 作為後門和/或其他惡意軟件注入目標站點。

文件包含是如何在 WordPress 中實現的?

所有用 PHP 編寫的動態 Web 應用程序(如 WordPress)都可以安全地使用文件包含。 在用 PHP 編寫的應用程序中,開發人員使用includerequire語句執行文件包含。 開發人員使用這兩種語句將一個 PHP 腳本的內容插入到另一個 PHP 腳本中。 這發生在代碼在服務器上執行之前。

如果您查看一些 WordPress 核心文件,就會發現其中許多都引用了其他核心腳本。 當它們一起加載時,它們會構建您網站的結構並生成訪問者請求的各個網頁。 主要的index.php引用wp-blog-header.php ,它加載了 WordPress 環境和主題模板——分別是wp-load.phptemplate-loader.php

WordPress 的 index.php 文件使用文件包含。

除了 WordPress 核心之外,插件和主題也使用文件包含來執行必要的任務。 然而,有數以萬計的 WordPress 插件可用,但並非所有插件都像 WordPress 核心一樣經過充分測試。

當開發人員沒有正確保護文件時,文件包含會帶來嚴重的安全風險。 如果您使用的代碼不驗證和清理用戶輸入,黑客就可以利用它。 他們可以使用它來安裝惡意軟件並竊取敏感信息——可能是您或您的客戶的信息!

什麼是文件包含攻擊?

可能有兩種類型的文件包含攻擊:本地文件包含 (LFI) 或遠程文件包含 (RFI)。

文件包含攻擊是更廣泛的注入攻擊類別的一部分。 這包括 SQL 注入 (SQLi)、跨站點腳本 (XSS) 和命令包含攻擊。 黑客可以利用輸入漏洞進行其他類型的攻擊,例如緩衝區溢出攻擊。

本地和遠程文件包含攻擊

依賴動態文件包含來啟用某些功能的網站和 Web 應用程序可能會受到遠程文件包含攻擊和本地文件包含攻擊。

本地文件包含 (LFI)

本地文件包含攻擊可能會注入與目標網站或 Web 應用程序位於同一服務器上的文件。 LFI 攻擊通常可以訪問通常受限的文件。 在 LFI 攻擊中,包含的文件必須已經存在於目標本地應用程序服務器上。 在 LFI 攻擊中,不良行為者可以讀取重要文件、訪問更敏感的信息或運行任意命令。

本地文件包含攻擊還可以允許某人訪問目標網站之外的敏感數據。 這包括服務器配置文件,例如/etc/passwd或另一個網站的配置文件,例如wp-config.php 。 然而,重要的是要注意,目標文件需要對非特權用戶是可讀的——例如,Linux 系統上的/etc/passwd文件由 root 擁有,但其文件權限設置為 644,所有其他系統用戶可以查看。

為了在文件系統中導航,攻擊者採用目錄遍歷,這是一種通過操縱目錄路徑遍歷序列(例如../../../來訪問當前工作目錄之外的文件的技術。

遠程文件包含 (RFI)

遠程文件包含攻擊的目標是調用另一台服務器上託管的文件的網站和應用程序。 通過利用遠程文件包含,攻擊者可以利用託管在別處的惡意代碼。 目標服務器上肯定存在漏洞,但攻擊者會利用它來執行託管在別處的惡意代碼。

在遠程文件包含攻擊中,黑客利用 Web 應用程序中的“動態文件包含”命令。 黑客可以利用接受用戶輸入(例如 URL 和參數值)的 Web 應用程序,並在未經適當清理的情況下將它們傳遞給“文件包含”機制。 在這種類型的漏洞中,攻擊者可以利用 Web 應用程序包含帶有惡意腳本的遠程文件。

為什麼會發生 WordPress 文件包含攻擊?

WordPress 網站佔互聯網的 43%,因此它們是攻擊者的一個大目標。 我們的 2022 年 WordPress 漏洞年度報告顯示,去年發現的所有 WordPress 漏洞中有超過 90% 存在於插件和主題中。 通常,我們每周至少會在 20 到 50 個插件中看到一個新的安全漏洞。

最近,安全研究人員在流行的 OceanWP 主題中發現了一個文件包含漏洞。 OceanWP 擁有超過 50 萬活躍用戶。 (我們在每週的 WordPress 漏洞報告中報告了這一點。)儘管 OceanWP 迅速修補了漏洞,但黑客有時間利用它,而數百萬 WordPress 網站仍在使用過時的代碼。

每週三將每週 WordPress 漏洞報告發送到您的收件箱。
現在訂閱

如何檢測 WordPress 文件包含攻擊

與可以顯著降低您的網站速度的拒絕服務攻擊或將人們從您的網站轉移到欺詐性資源的惡意重定向不同,文件包含攻擊很難檢測到。 這樣做的原因是簡單的。 黑客利用文件包含作為上傳惡意軟件並進行進一步攻擊的切入點。 文件包含是導致更明顯損壞的安靜路徑。 因此,當黑客將惡意代碼注入網站或訪問敏感信息時,您很可能幾乎不會注意到它。

這給我們帶來了一個重要的結論。 網站安全應該從縮小攻擊面並加強攻擊面開始。 這將有助於防止黑客利用注入攻擊所源自的輸入漏洞,例如文件包含攻擊、SQL 和命令注入以及跨站點腳本 (XSS)。

如何防禦WordPress文件包含攻擊?

隨著針對 WordPress 的網絡攻擊越來越多,WordPress 網站安全比以往任何時候都更加重要。 防禦 WordPress 文件包含攻擊需要多方面的方法來限制利用輸入漏洞和任意代碼執行的可能性。 如果您結合採用主動和被動安全措施,就可以做到這一點。

以下是保護您的網站免受文件包含攻擊的三大 WordPress 安全建議。

保持所有軟件更新

保持所有軟件更新(包括 WordPress 核心、主題、插件和擴展)對於減少站點的攻擊面至關重要。 由於每天都會出現新的漏洞,不要讓黑客有機會利用它們。 安裝安全補丁並在可用時盡快進行更新。

養成自己定期更新或激活自動更新的習慣,以確保您的網站永遠不會運行任何易受攻擊的代碼。 iThemes Security Pro 可以為您處理 WordPress 核心、插件和主題更新。

iThemes Security Pro 會自動掃描您的網站正在使用的軟件的新版本。 其版本管理系統可確保您在所有安全補丁和更新可用時立即安裝。 最重要的是,如果您在服務器基礎架構中運行任何過時的軟件,iThemes 也會提醒您。 例如,如果您使用的 PHP 版本已過生命週期終止日期或易受攻擊的 MySQL 服務器,iThemes Pro 會警告您。

如果您有多個 WordPress 網站在您的控制之下,iThemes Sync Pro 為您提供了一個單一的界面來管理它們。 Sync 還提供高級正常運行時間監控和 SEO 反饋。

在 PHP 中禁用遠程文件包含

如果在 PHP 環境中啟用了allow_url_fopen選項,則網站可以從外部 URL 引用遠程文件。 這會增加遠程文件包含攻擊的風險。 禁用allow_url_fopen有效地消除了某人運行從遠程位置加載到您的 WordPress 網站的惡意代碼的可能性。

您可以在 PHP 全局配置中禁用allow_url_fopen ,或者在為單個 Web 文件夾創建的本地.user.iniphp.ini文件中將allow_url_fopen設置為0 。 您可以通過使用phpinfo()函數創建一個簡單的 PHP 信息頁面來檢查您的 PHP 環境中該選項是否被禁用,如下所示。

您可以通過在 PHP 環境設置中禁用 allow_furl_open 來阻止文件包含攻擊。

實施 WordPress 安全標頭

內容安全策略 (CSP) 和 Set-Cookie 等 HTTP 響應標頭可以為您的 WordPress 網站添加一層防禦文件包含和其他注入攻擊。

WordPress 安全標頭可以減少或阻止遠程文件包含和跨站點腳本 (XSS) 攻擊的載體,方法是列出可信來源、腳本和其他可加載的內容。 所有其他來源將被拒絕。 最重要的是,HTTP 響應標頭可以幫助您增加針對跨站點請求偽造 (CSRF) 和點擊劫持的保護。

使用 iThemes Security Pro 保護您的 WordPress 網站免受注入攻擊

與 SQL 和命令注入一起,文件包含攻擊成為針對 WordPress 網站安全性的最常見攻擊媒介。 儘管 WordPress 證明了高水平的應用程序安全性,但高度自定義的站點與糟糕的安全實踐相結合可能會使 WordPress 網站暴露於利用輸入漏洞的注入攻擊。

每天,在不斷增長的 WordPress 插件和主題中都會發現新的漏洞。 雖然它們通常會快速修補,但缺乏及時更新和對舊軟件的依賴會使您的 WordPress 網站很容易成為黑客的目標。 今天,網站安全比以往任何時候都更加重要。 越來越多的網絡攻擊意味著,如果不採取主動措施保護自己的網站,即使是最警惕的網站所有者也可能成為黑客的受害者。

iThemes Security Pro 是一款功能強大的 WordPress 安全解決方案,可讓您採用最佳的 WordPress 安全實踐來保護您的網站免受最複雜的網絡攻擊。 憑藉高級文件完整性監控、漏洞掃描和自動攻擊緩解功能,如果您正在尋找一種有效且可靠的方式來保護您的 WordPress 網站,iThemes Security Pro 將是您的絕佳選擇。