如何清理被黑的 WordPress 網站或博客

已發表: 2021-02-16

無論您的 WordPress 網站是否已被黑客入侵並且您目前處於損害控制之中,或者您是否正在為最壞的情況做準備,本文將指導您完成清理被黑客入侵的 WordPress 網站的過程。 該過程以易於遵循的分步格式記錄,以幫助您完成以下任務:

  • 重新控制您的 WordPress 網站
  • 確定可能的感染源
  • 查找感染和惡意代碼
  • 刪除任何惡意軟件、後門和 Web Shell
  • 從任何惡意軟件列表(例如 Google 安全瀏覽數據庫)中刪除您的域
  • 防止再次發生

您被黑的 WordPress 網站真的被黑了嗎?

被黑的 WordPress 網站

有時,當 WordPress 網站被黑客入侵時,例如,如果您的網站遭到破壞,這一點非常清楚。 在其他情況下,它可能不是那麼明確。 在開始 WordPress 清理過程之前,請確認您的 WordPress 網站實際上已被黑客入侵,這不是不相關的技術問題。 閱讀文章如何檢查我的 WordPress 是否被黑客入侵,以確定您的網站或博客是否被黑客入侵。

重新獲得控制權

重新獲得控制權取決於您可能因攻擊而失去多少訪問權限。 例如,在獲得對服務器的訪問權後,攻擊者可能會輪換憑據以阻止合法用戶訪問服務器,或者他們可能會更改 WordPress 管理員密碼以阻止 WordPress 管理員登錄。

雖然這在很大程度上取決於您的設置,但您的託管服務提供商很可能會幫助您恢復對共享託管環境或運行您網站的虛擬專用服務器 (VPS) 的訪問。 如果您無法訪問 WordPress 管理員,請按照官方 WordPress 指南重置管理員密碼。

進行備份

即使您有 WordPress 備份解決方案,也請備份當前的 WordPress 網站。 由於多種原因,在此階段進行 WordPress 備份非常重要,包括以下原因。

  • 備份允許您在稍後階段分析感染,
  • 一些託管服務提供商可能會採取刪除被黑網站作為預防措施,以防止其傳播惡意軟件或垃圾郵件——取決於您的託管服務提供商,這可能會在沒有警告的情況下發生,
  • 如果您當前沒有備份策略,您可以在事情變得更糟之前從該備份中挽救一些網站內容。

此外,如果您在虛擬專用服務器 (VPS) 上運行 WordPress,請考慮在可能的情況下拍攝整個虛擬機的快照(請記住,這通常會產生額外費用)。 拍攝快照時,請記住,如果您使用任何外部卷來託管您的 WordPress 安裝(例如網絡附加存儲),您還應該複製存儲主要 WordPress 安裝、 wp-content 、您的 MySQL 數據庫的任何卷,以及任何 Web 服務器訪問和錯誤日誌。

從備份恢復

如果您制定了備份策略,那麼現在是時候將其付諸實施了。 假設您可以訪問最近的備份,恢復可能是讓您自己恢復在線的最快方法——但是不要誤會,雖然從 WordPress 站點的備份恢復可能會消除感染並允許您再次運行,但它不會解決您首先被黑客入侵的原因

如果您的 WordPress 網站由於被利用的漏洞或安全漏洞而被黑客入侵,那麼下一步必須努力弄清楚發生了什麼(如果可能)。

如果我沒有備份,或者我無法成功恢復我的備份怎麼辦?

如果您沒有備份,則可以成功恢復,具體取決於情況的嚴重程度,您可能希望將 WordPress 網站置於維護模式,以便您在恢復網站的同時讓訪問者知道他們應該稍後再回來查看。 同時,繼續遵循本指南的其餘部分。 通過使用 wp_maintenance() 1將您的網站置於維護模式函數,WordPress 將返回一個 503 HTTP 狀態碼。 503 狀態向 Google 和其他抓取工具表明該頁面出現問題,他們應該稍後再回來查看。

503 HTTP 響應對 SEO 很重要,因為它可以防止在您的網站暫時關閉時對您的搜索排名造成損害。 有關 503 HTTP 狀態代碼及其在 SEO 中的重要性的更多信息,請查看 Yoast 關於該主題的文章。

確定 WordPress 是如何被黑的

備份您的網站後,議程上的下一件事就是盡可能多地找出發生的事情,即攻擊者利用哪個安全漏洞來訪問您的 WordPress 安裝。

檢查活動日誌、Web 服務器和 FTP 服務器日誌

如果您保留 WordPress 活動日誌,這可能是開始分析的最佳位置。 看看您是否可以識別任何可疑行為。 查找新創建用戶的事件或用戶密碼更改。 還要檢查是否有任何 WordPress、插件或主題文件被修改。

您還應該查看 Web 服務器、FTP 服務器和操作系統日誌文件,了解異常或可疑行為。 雖然這可能是一個壓倒性的過程,但您需要首先檢查是否有來自單個IP 地址的奇怪流量。 您可以使用各種實用程序 shell 腳本和一個襯裡來做到這一點。 要實時查看 Web 服務器日誌,GoAccess 可能會派上用場。

未使用和過時的 WordPress 插件和主題

從 WordPress 儀表板和目錄/wp-content/plugins/中檢查已安裝插件的列表。 是否正在使用所有 WordPress 插件? 它們都是最新的嗎? 檢查主題和主題目錄/wp-content/themes/ 。 您應該只安裝一個主題,即您正在使用的主題。 如果您使用的是子主題,您將有兩個目錄。

未使用的 WordPress 代碼和安裝

剩餘和未使用的代碼是另一個常見問題。 有時,開發人員和系統管理員會直接在服務器上更新文件,並使用.old.orig.bak等擴展名備份原始文件。 攻擊者經常利用這種不良做法,並且尋找此類備份文件的工具廣泛且容易獲得。

它的工作方式是攻擊者試圖訪問諸如index.php.old之類的文件。 通常, .php文件配置為由 PHP 解釋器執行,但通過在文件末尾添加.old (或其他)擴展名會導致 Web 服務器將文件提供給用戶。 通過簡單地猜測備份文件的名稱,攻擊者可能能夠下載可能包含敏感信息的源代碼,或者可能向攻擊者提供關於利用什麼的提示。

一個類似的問題是保留舊的 WordPress 安裝。 當系統管理員重建他們的網站時,他們有時會將舊 WordPress 安裝的副本留在/old/子目錄中。 這些舊版 WordPress 安裝通常仍可通過 Internet 訪問,因此是攻擊者利用舊版 WordPress 以及任何插件中的已知漏洞的多汁目標。

建議刪除任何未使用的代碼、WordPress 安裝、WordPress 插件、WordPress 主題和任何其他舊的或未使用的文件(請記住,如果您需要恢復意外刪除的內容,您可以隨時使用備份)。 您的網站應該只包含您需要的文件。 任何其他額外或未使用的東西都應被視為額外的攻擊面。

WordPress 用戶和角色

驗證是否使用了所有 WordPress 用戶。 有沒有新的可疑人物? 檢查所有角色是否完好無損。 如果您遵循 WordPress 用戶和角色指南,則您應該只有一個具有 WordPress 管理員角色的用戶。

共享主機提供商

如果您的 WordPress 在共享託管服務提供商上運行,則黑客攻擊的來源可能是另一個網站,而該網站恰好與您的服務器在同一台服務器上運行。 在這種情況下,最有可能的情況是攻擊者設法提升了他們的權限。 然後,您可以訪問整個服務器,進而訪問您的 WordPress 網站。 如果您懷疑發生了此類攻擊,最好的辦法是在備份您的網站後立即與您的託管服務提供商聯繫。

.htaccess 文件

.htaccess文件(目錄級 Apache HTTP Server 配置文件)也是黑客的常見目標。 它們通常用於將用戶重定向到其他垃圾郵件、網絡釣魚或其他惡意網站。 檢查服務器上的所有.htaccess文件,即使是那些未被 WordPress 使用的文件。 一些重定向可能很難被發現。

特別注意基於特定用戶代理字符串重定向 HTTP 請求的配置——攻擊者可能針對特定設備(例如移動用戶),甚至通過配置您的網絡服務器以對搜索引擎爬蟲做出不同響應來參與黑帽 SEO。

如果可能,請考慮採用全局配置,而不是依賴 Apache HTTP Server 中的.htaccess文件。 .htaccess文件不僅會降低性能,而且如果攻擊者能夠讀取,或者更糟糕的是,寫入這些文件的內容,它們會使您的 WordPress 網站面臨各種安全漏洞。 根據 Apache HTTP 服務器文檔2 ,可以通過在主httpd.conf文件中將AllowOverride指令設置為 none 來完全禁用.htaccess文件。

檢查其他入口點

Web 服務器上還有其他幾個條目點。 確保檢查所有這些,例如 FTP 服務器、SSH、Web 服務器等。

查找 WordPress 感染和惡意代碼

開始之前: WordPress hack 通常涉及在 WordPress 主題、插件或核心文件中插入代碼。 因此,要繼續進行清理,您應該對修改代碼感到滿意。 如果不是,請僱用 WordPress 安全專家。

一旦您確定了黑客的切入點,通常就相對容易找到感染。 儘管以防萬一您尚未發現感染,但您可以使用多種方法來發現感染。 這裡有幾個。

檢查最近幾天修改了哪些文件

理想情況下,您應該使用 WordPress 文件監控插件來監控整個 WordPress 安裝中的文件是否有更改並立即提醒您。 如果您沒有文件完整性監控 (FIM) 插件,則必須手動查找文件更改。

如果您可以通過 SSH 訪問您的服務器,請檢查您的 WordPress 網站中的哪些文件最近發生了更改。 通常,建議在發現黑客攻擊後的最後五天內開始尋找更改,並根據需要擴大搜索範圍。 為此,請導航到您的 WordPress 網站所在的目錄並使用 find 命令。

find .mtime -5 –ls

上面的命令列出 (-ls) 在過去五天 (-5) 內已修改 (.mtime) 的所有文件。 如果列表太長,請使用 less 尋呼機更輕鬆地瀏覽和搜索列表。

find .mtime -5 –ls | less

如果您最近更新了插件或主題,任何相關的文件更改都會顯示在您的搜索結果中。 日誌、調試文件也經常更新,因此它們也會顯示在您的結果中。 因此,您可能必須對結果進行一些廣泛的過濾才能找到感興趣的文件更改。 請注意,專門的插件(例如 WordPress 的 WordPress 文件更改監視器插件)專門設計用於自動為您清除此類誤報。 該插件專為 WordPress 構建,可以識別來自 WordPress 核心、插件或主題更新、安裝或卸載的文件更改。

檢查所有 HTML 文件

在 WordPress 中,HTML 文件很少,黑客喜歡利用它們。 在您的網站中搜索所有 HTML 文件並分析其內容。 確保您網站上的所有 HTML 文件都是合法的,並且您知道它們的用途。

列出 WordPress 目錄(和子目錄)中所有 HTML 文件的簡單方法是使用以下命令。

 
find . -type f -name '*.html' 

搜索感染文本

如果您的網站已被污損,或者由於感染而在您的網站上顯示了一些文本,請使用 grep 工具進行查找。 例如,如果您看到文本“hacked by”,請導航到網站的根目錄並發出以下命令。

grep –Ril "hacked by"

上面的命令將返回包含“hacked by”內容的文件列表。 獲得受感染文件列表後,您可以分析代碼並刪除感染。

grep 開關是什麼意思?

  • -R指示 grep 遞歸搜索(搜索整個目錄結構,包括所有子目錄和符號鏈接)。
  • -i向 grep 指示搜索應該不區分大小寫(即忽略搜索詞的大寫)。 這在 Linux/Unix 環境中非常重要,因為與 Windows 不同,Linux 文件系統區分大小寫。
  • -l向 grep 指示它應該返回文件名,而不是文件內容。 當您的 WordPress 網站被黑客入侵時,這是要尋找的其他惡意代碼。

除了明顯的“hacked by”字符串之外,以下是通常用於被黑 WordPress 網站的代碼和文本短語列表。 您可以使用grep工具查找以下內容:

  • base64_decode
  • is_admin
  • 評估
  • gzuncompress
  • 通路
  • 執行
  • shell_exec
  • 斷言
  • str_rot13
  • 系統
  • phpinfo
  • 修改
  • mkdir
  • 開放
  • 關閉
  • 讀取文件

使用 grep 實現此目的的一種快速方法是通過以下 grep 命令遞歸查找文件(遵循任何符號鏈接),搜索與指定 PCRE 正則表達式匹配的字符串3 , 並返回文本匹配以及發生匹配的行號。

grep -RPn "(base64_decode|is_admin|eval|gzuncompress|passthru|exec|shell_exec|assert|str_rot13|system|phpinfo|chmod|mkdir|fopen|fclose|readfile) *\("

注意:其中一些代碼也可用於合法代碼,因此請在將某些內容標記為感染或黑客攻擊之前正確分析代碼並了解其使用方式。

將文件與原始 WordPress 安裝進行比較

這是一種老式的方法,儘管它有點耗時,但它的效果很好。 將您網站的文件與未篡改網站的文件進行比較。 因此,如果您有網站的備份副本,請比較被篡改的網站。 如果沒有,請在不同主機上安裝 WordPress 和您在受感染網站上的插件的新副本並進行比較。

您可以使用多種工具來比較文件。 在這個例子中,我們使用了一個名為 Beyond Compare 的商業工具,儘管有幾個免費的替代品。 下面是一些示例比較的屏幕截圖。

在比較兩個 WordPress 網站的根目錄時,該工具會突出顯示index.php文件、新的.htaccesswp-config.php文件內容的差異,以及子目錄的差異。

比較兩個 WordPress 網站的根目錄

通過雙擊文件index.php我們可以看到有什麼不同。

WordPress 網站中感染的 index.php

在 WordPress 文件比較中尋找什麼?

查找不屬於 WordPress 核心的文件。 大多數感染將文件添加到 WordPress 安裝的根目錄或wp-content目錄。 如果黑客攻擊是由易受攻擊的插件引起的,則該插件的文件可能已被修改。

清理 WordPress 黑客

一旦您知道了 WordPress 黑客的來源並發現了感染,是時候按照以下程序開始清理了。

使用 WordPress 服務自動發現感染

如果上述情況似乎難以處理,請不要絕望。 您可以使用多種 WordPress 安全服務和插件來掃描您的網站以查找惡意軟件和其他感染。 我們推薦 Malcare WordPress 安全服務。

但是請注意,此類插件的惡意軟件簽名列表有限。 因此,如果影響您的 WordPress 網站的攻擊不常見,這些插件可能無法識別感染。 我們收到來自 WordPress 管理員的反饋並非聞所未聞,他們的 WordPress 網站成為 WordPress 惡意軟件插件未發現任何錯誤的攻擊的受害者。

這裡的要點是,有效的安全控制涉及多層防禦和檢測。 雖然手動分析幾乎總是最好的方法,但你可以做到; 這些插件也不應該被低估——它們仍然可以使用,並且在某些時候會派上用場。

從備份中恢復您的 WordPress

如果您有 WordPress 網站或博客的備份,請將其恢復。 它總是比手動清理代碼容易得多。

更改所有密碼,刪除未使用的用戶並驗證 WordPress 用戶角色

更改所有用戶和服務的所有密碼,包括 WordPress、CPanel、MySQL、FTP 和您自己的個人計算機。 檢查您的 FTP、WordPress、MySQL 和任何其他服務上的用戶列表,以確認所有用戶都是合法的。 如果有不再使用的用戶,請將其刪除。 檢查所有 WordPress 用戶是否具有正確的角色和權限。

升級 WordPress 核心、插件、主題和其他軟件

確保您運行的是運行 WordPress 網站所需的所有軟件的最新版本。 這不僅限於 WordPress 本身,還擴展到任何插件、主題以及操作系統補丁、PHP、MySQL 和 Web 服務器(例如 Apache HTTP Server 或 Nginx)以及您可能正在運行的任何 FTP 服務器。

備份您的 WordPress 網站

WordPress網站備份

在此階段,在刪除實際受感染的代碼之前,請備份您的 WordPress 網站。

刪除 Google 安全瀏覽惡意軟件警報

谷歌惡意軟件警告

如果您的網站被 Google 安全瀏覽列入黑名單,您可以申請安全審查以刪除警報。

一旦你刪除了 WordPress 黑客...

WordPress 安全流程

恭喜,您從黑客中恢復了您的 WordPress 網站。 現在你必須確保它不會再次發生。 以下是一些關於你應該做什麼的提示:

  1. 安裝 WordPress 活動日誌插件以跟踪 WordPress 網站上發生的一切。
  2. 如果您沒有適當的備份解決方案,請獲取一個。
  3. 使用 WordPress 安全掃描服務。
  4. 輪換數據庫和管理員密碼,並強制 WordPress 密碼安全。
  5. 始終使您的 WordPress、WordPress 插件、主題和您使用的任何其他軟件保持最新狀態。
  6. 刪除任何未使用的文件,例如舊的 WordPress 安裝、未使用的 WordPress 插件和主題(包括未使用的默認 WordPress 主題)。 未使用的組件和軟件會增加不必要的攻擊面,最好將其刪除。
  7. 遵循我們的 WordPress 安全強化指南,確保您處理好網站上所有可能的安全問題。

本文中使用的參考文獻[ + ]

本文使用的參考資料
1 https://developer.wordpress.org/reference/functions/wp_maintenance/
2 http://httpd.apache.org/docs/current/howto/htaccess.html#when
3 https://regexr.com/5lpf0