WordPress 的 XMLRPC 權威指南(+ 如何禁用它)

已發表: 2021-04-08

網站安全是一件很難以正確方式解決的問題。 特別是與 XML-RPC 相關的安全問題——通常在 WordPress 網站的攻擊中被利用。 互聯網上有很多提供各種解決方案的信息,但哪些是正確的? 本文將解釋如何,那裡的解決方案,以及實際上什麼是最好的解決方案。 讓我們潛入吧!

XMLRPC 比 WordPress 本身更早。 該系統被引入 WordPress 以通過幫助用戶離線撰寫新帖子然後將其上傳到服務器來解決緩慢的互聯網連接困境。 只有使用 xmlrpc.php 文件才能將 WordPress 與其他應用程序遠程連接。

即使是一些有經驗的開發人員也不能完全理解 XMLRPC 以及與之相關的安全威脅。 您管理的站點很有可能有一個活動的 XMLRPC 文件,需要您立即關注,但您只有在了解 XMLRPC 的操作方式以及安全處理它的最佳方式後才能執行有效的行動計劃。

儘管 WordPress 現在有自己的 REST API,但 xmlrpc.php 文件仍然存在於核心中,並且默認啟用,從而使 WordPress 站點暴露於各種網絡攻擊。 在本文中,我們將了解此文件的用法、與之相關的漏洞,以及如何在不危及您網站安全的情況下處理此問題。

目錄

  • 什麼是 xmlrpc.php 文件?
  • xmlrpc.php 文件對黑客有多大危害?
    • 蠻力攻擊
    • DDoS 攻擊
    • 跨站端口攻擊 (XSPA)
  • 阻止 XMLRPC 攻擊的無效方法
    • 通過完全禁用 XMLRPC
    • 為什麼安裝安全插件實際上會傷害您的網站
    • Accelerated Domains 如何為其客戶處理 XMLRPC 問題?
  • 最後的想法

什麼是 xmlrpc.php 文件?

在其最簡單的形式中,為跨平台通信創建了 XML-RPC(遠程過程調用)。 該協議用於通過使用 HTTP 作為傳輸和 XML 作為編碼器來進行過程調用。 客戶端通過向服務器發送 HTTP 請求並接收 HTTP 響應來進行這些調用。 XML-RPC 通過 HTTP 請求調用函數,然後這些函數執行一些操作並發送硬編碼的響應作為回報。

讓我們將其與 REST API 調用進行比較,以充分理解這個概念。

程序RPC 休息
註冊發布/註冊POST/用戶
讀取用戶GET/readUser?userid=123 獲取/人/1234

REST 使用 URL 參數來識別資源,而 RPC 使用查詢參數作為函數參數提供。

WordPress 使用 XMLRPC 允許其用戶與他們的站點進行遠程交互。 它仍然使用它來為其移動應用程序提供動力並支持 JetPack、WooCommerce 等插件。使用xmlrpc.php文件有其缺點,但完全禁用它是唯一可行的解​​決方案嗎? 要回答這個問題,我們首先需要查看與之相關的漏洞以及可以避免這些漏洞的解決方案。

xmlrpc.php 文件對黑客有多大危害?

使用 XMLRPC,黑客利用遠程過程調用 (RPC) 並調用函數來獲取他們想要的數據。 在大多數 WordPress 站點中, xmlrpc.php文件很容易被追踪,黑客只需發送任意 XML 數據,就可以控制站點運行他們準備好的代碼來執行某種類型的攻擊。

要了解 WordPress XMLRPC 是如何被入侵的,讓我們看看與之相關的最流行的網絡攻擊。

蠻力攻擊

在蠻力攻擊中,黑客通過多次登錄嘗試來猜測正確的用戶名和密碼。 不幸的是,大量 WordPress 網站使用弱管理員密碼或沒有添加任何安全層來阻止攻擊者。 這些網站很容易受到這種類型的攻擊。

其他人使用強密碼,也有適當的安全機制,例如 reCaptcha,以及自動 IP 阻止,可有效抵禦暴力攻擊,但如果黑客決定使用 XMLRPC; 她甚至不需要訪問 WordPress 管理員。

來自 Kali Linux 的一個非常常見的工具,WPSCAN 用於枚舉所有用戶名,一旦完成,黑客就會使用xmlrpc.php文件通過向受害者站點發送以下 HTTP 請求來暴力破解密碼。

POST /xmlrpc.php HTTP/1.1
User-Agent: Fiddler
Host: www.example.com
Content-Length: 164

<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>

在上面的示例中,黑客可以發送數千個變體,直到他檢索到正確的密碼。

針對上述請求返回以下響應。 響應包含錯誤代碼和一條明確的消息,說明嘗試的用戶名和密碼不正確。 這是一個明確的指示,告訴黑客再試一次,直到匹配正確的密碼。

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 26 May 2019 13:30:17 GMT
Content-Type: text/xml; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.1.21
Cache-Control: private, must-revalidate
Expires: Sun, 02 Jun 2019 13:30:17 GMT
Content-Length: 403

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>403</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Incorrect username or password.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>

響應返回 HTTP 200 代碼以及提供的用戶名和密碼不正確的消息。 通過 XMLRPC 通道,黑客不必擔心 reCaptchas 或限制登錄嘗試插件。 她可以繼續運行變體,直到檢索到正確的密碼。

注意:蠻力攻擊是資源密集型的,也會導致性能問題。 試錯過程循環運行更長的時間,這會使您的服務器忙於為實際訪問者提供服務。 這種不必要的資源消耗會導致服務器消耗更多功率。

DDoS 攻擊

分佈式拒絕服務 (DDoS) 是最致命的網絡攻擊之一,它可以通過成百上千的並發請求攻擊服務器來使服務器癱瘓。 黑客使用 WordPress 的 pingback 功能以及 xmlrpc.php 文件來執行此類攻擊。

理想情況下,黑客會針對可能被多次攻擊且需要更長響應時間的端點或頁面。 這樣,單次點擊就可以對服務器資源產生最大的影響,在我們的例子中,XMLRPC 很好地為黑客提供了暴露這些端點的服務。

幾個已經受到攻擊的 WordPress 站點被用來執行 pingback.ping 方法來針對單個受害者。 壓倒性的 HTTP GET 和 POST 請求阻塞了常規流量並最終導致服務器崩潰。

首先,黑客通過發送以下請求來檢查 xmlrpc.php 文件是否已啟用。

POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 175

<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>demo.sayHello</methodName>
<params>
<param>
<value>admin</value>
</param>
</params>
</methodCall>

一旦確認在目標網站上啟用了 XMLRPC,攻擊者就會開始使用被利用站點的網絡攻擊它,向受害者站點發送多個 pingback 請求。 這可以從多個主機自動執行,並用於對受害者站點進行大規模 DDoS 攻擊。

POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 293

<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string>http://173.244.58.36/</string></value>
</param>
<param>
<value><string>https://example.com/blog/how-to-make-a-salad</string></value>
</param>
</params>
</methodCall>

跨站端口攻擊 (XSPA)

跨站點端口攻擊 (XSPA) 非常常見,其中黑客注入惡意腳本以檢索有關 TCP 端口和 IP 地址的信息。 對於 WordPress,XMLRPC 與其 pingback 機制一起用於繞過任何 IP 掩碼,例如 Cloudflare 等基本 WAF。

在 XSPA 攻擊中,黑客使用 pingback.ping 方法對目標網站上的帖子進行 pingback,然後發送 IP 地址作為響應。 黑客使用嗅探器創建端點以發送 pingback 和博客文章的實時 URL。

黑客從她的服務器發送以下請求。

<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>http://<YOUR SERVER >:<port></string></value>
</param><param><value><string>http://<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>

如果響應包含 faultCode 且值大於 0,則表示端口已打開,您可以開始直接發送 HTTP 數據包。

阻止 XMLRPC 攻擊的無效方法

到目前為止,我們已經確定 xmlrpc.php 文件容易受到一些嚴重的網絡攻擊,例如 DDoS、Bruteforce 和跨站端口攻擊,因此,正確處理它以阻止這些攻擊至關重要.

通過完全刪除 XMLRPC

您可以簡單地刪除 XMLRPC 文件,該文件將使您的服務器開始向任何試圖訪問它的人拋出 404 錯誤。 此解決方案的缺點是每次更新 WordPress 時都會重新創建文件。

通過完全禁用 XMLRPC

另一個更可行的選擇是禁用xmlrpc.php文件。 您只需在.htaccess文件中添加代碼塊即可完成此操作。 確保在 WordPress 添加的永不更改的.htaccess規則之前執行此操作。

<Files xmlrpc.php>
order allow,deny
deny from all
</Files>

這將為使用它的每個應用程序或服務禁用xmlrpc.php文件。 如果您仍希望通過 XMLRPC 訪問您的 WordPress 站點,您可以將某個 IP 地址列入白名單。 為此,您需要添加以下命令:

<Files xmlrpc.php>
<RequireAny>
Require ip 1.1.1.2
Require ip 2001:db8::/32
</RequireAny>
</Files>

優點

  • 消除 XMLRPC 在網絡攻擊中被濫用的風險。
  • 長期性能優勢和服務器資源節省。

缺點

  • 禁用 XMLRPC 與禁用使用此版本遠程訪問的應用程序的遠程訪問相同。 這意味著 Jetpack、WP 移動應用程序或任何其他通過 XMLRPC 與您的 WordPress 站點連接的解決方案無法再與您的站點連接。
  • 自定義應用程序的舊代碼也可能不起作用。

為什麼安裝安全插件實際上會傷害您的網站

WordPress 用戶經常依賴插件來獲得任何所需的特性或功能,而沒有過多考慮它們對網站性能的影響。 有幾個 WordPress 安全插件承諾保護您的網站免受與 XMLRPC 相關的安全問題的影響,但實際上,它們對您的網站造成的傷害更大。

以下是使用插件保護您的網站不是最佳選擇的一些原因。

  • 安全插件僅在應用程序級別有效,並不能保護您的服務器免受攻擊。
  • 他們在您的網站上添加了不必要的代碼,這會降低其性能並增加首字節 (TTFB) 的時間。
  • 其中一些插件弊大於利,被黑客用來為您的網站創建後門。
  • 這些插件需要頻繁的管理,這會增加更多的工作量。

從上面的評估來看,沒有一個選項可以提供處理 XMLRPC 安全問題的理想解決方案。 這將我們帶到了加速域。 一種服務,旨在解決複雜的安全相關問題等等。 讓我們看看 Accelerated Domains 如何為您有效解決 XMLRPC 問題。

Accelerated Domains 如何為其客戶處理 XMLRPC 問題?

Accelerated Domains 以最有效的方式解決了複雜的性能、安全性和可擴展性問題。 Accelerated Domains 提供企業級託管安全性,可阻止任何類型的網絡攻擊,包括與 XMLRPC 相關的網絡攻擊。

Accelerated Domains 的智能安全引擎位於服務器前面,可過濾近 40% 的所有 HTTP 流量。 它通過連續數據饋送和 Servebolt 的實踐知識和流量分析提供支持的智能啟發式功能,甚至可以在時間線的早期檢測到最複雜的網絡攻擊。 Accelerated Domains 在不以任何方式降低您網站的性能的情況下發揮其魔力。 事實上,它加速了它。

Accelerated Domains 主動安全引擎可自動保護您的網站免受 DDoS 攻擊。 憑藉接近 60 Tbps 的網絡容量,它能夠抵禦互聯網上一些最大規模的 DDoS 攻擊。 同樣,它通過自動限速功能提供了一種有效的防禦機制來抵禦暴力攻擊,其中識別並限制從單一來源生成的請求數量以防止惡意活動。

優點

  • Accelerated Domains 緩解了與 XMLRPC 相關的大多數安全漏洞,因此無需禁用它。
  • 允許用戶繼續使用插件,如 Jetpack、WooCommerce 應用程序和其他依賴於 xmlrpc.php 文件的工具。
  • 在任何域上輕鬆集成,因此無需修改.htaccess文件。
  • 無需安裝額外的插件。

缺點

  • 它沒有。

最後的想法

網絡攻擊日益複雜,作為網站管理員和企業主,了解它們並了解遇到它們的工具對您來說至關重要。 大多數攻擊都是通過主動方法避免的,例如持續監控和更新軟件,或者通過添加像 Accelerated Domains 這樣的工具來自動完成所有這些操作。 啟用後,Accelerated Domains 會智能地過濾流量並在需要時採取必要的措施來保護您的源服務器和您的網站免受網絡攻擊。