揭開未打補丁的WordPress SSRF漏洞研究中隱藏的危險

admin

簡介 – 探索未知:未修補的 WordPress SSRF 的表面之下

在不斷發展的網路安全領域,WordPress 由於其廣泛的使用和廣泛的插件生態系統仍然是一個受歡迎的目標。雖然 WordPress 核心通常是安全的,但第三方外掛和主題經常會出現漏洞。引起關注的此類漏洞之一是伺服器端請求偽造 (SSRF) 漏洞。在這篇文章中,我們將深入探討未修補的 WordPress SSRF 漏洞的複雜性、其影響,以及 WP-Firewall 如何幫助保護您的 WordPress 網站免受此類威脅。

## 根本原因:wp_http_validate_url()

2022 年 9 月,SonarSource 發布了有關未修補的 WordPress 核心未經身份驗證的盲 SSRF 的公告。該漏洞的根本原因在於「wp_http_validate_url()」函數,該函數容易受到DNS重新綁定攻擊。雖然 WordPress 核心本身沒有直接受到影響,但利用此漏洞功能的外掛程式面臨風險。

了解 wp_http_validate_url()

`wp_http_validate_url()` 函數旨在驗證 URL 以防止重定向和請求偽造攻擊。然而,它在防禦 DNS 重新綁定攻擊方面存在不足,使其成為 SSRF 漏洞的潛在載體。此函數通常與“wp_remote_get()”及其更安全的替代方案“wp_safe_remote_get()”結合使用。

明顯的部分:wp_remote_get() 和 wp_safe_remote_get()

`wp_remote_get()` 函數通常用於透過伺服器請求遠端主機。然而,眾所周知,將使用者輸入的 URL 傳遞到此函數中可能會導致 SSRF 漏洞。為了減輕這種風險,WordPress 引入了“wp_safe_remote_get()”,其中包括防止 SSRF 攻擊的額外驗證。

wp_safe_remote_get() 有多安全?

`wp_safe_remote_get()` 函數被設計為比 `wp_remote_get()` 更安全的替代方案。根據 WordPress 官方文件:

“當向任意 URL 發出 HTTP 請求時,此功能非常理想。對 URL 進行驗證以避免重定向和請求偽造攻擊。”

然而,函數的安全性受到底層「wp_http_validate_url()」函數的限制,如前所述,該函數容易受到 DNS 重新綁定攻擊。

深入了解函數

`wp_safe_remote_get()`的原始碼如下:

php
函式 wp_safe_remote_get( $url, $args = array() ) {
$args['reject_unsafe_urls'] = true;
$http = _wp_http_get_object();
返回 $http->get( $url, $args );
}

在第 2 行,“$args['reject_unsafe_urls']”參數設定為“true”,最終在請求 URL 之前將使用者輸入傳遞給“wp_http_validate_url()”函數。由於「wp_http_validate_url()」容易受到 DNS 重新綁定攻擊,因此任何僅依賴它進行驗證的函數也容易受到攻擊。

該漏洞的局限性

雖然這不是一個成熟的 SSRF,但 `wp_http_validate_url()` 函數設定了一些限制:

– 協議必須是“http://”或“https://”
– 連接埠只能是 80、443 或 8080 之一

儘管有這些限制,但可以透過此 SSRF 請求這些邊界內的內部主機。

易受攻擊的插件程式碼

以下是一些易受攻擊的插件程式碼範例:

非盲SSRF

php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response = wp_remote_retrieve_body( $response );
回顯$響應;
?>

如果插件接受使用者輸入,將其傳遞給「wp_safe_remote_get()」函數,然後顯示回應,則它很容易受到非盲限制 SSRF 的影響。

盲SSRF

php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response_code = wp_remote_retrieve_response_code( $response );
如果($response_code == 200){
echo「啟動並運行」;
} 別的 {
echo "已關閉或未找到!";
}
?>

如果外掛程式將使用者輸入傳遞給「wp_safe_remote_get()」但僅傳回回應代碼/狀態,則它很容易受到盲目 SSRF 的影響,從而限制對任何內部主機的連接埠 80、443 或 8080 進行連接埠掃描的影響。

攻擊演示

為了示範此漏洞,我們使用一些秘密資訊對在連接埠 80 上執行 WordPress 的 Apache 伺服器和在 localhost:8080 上運行的 PHP 伺服器進行了攻擊。易受攻擊的程式碼被插入到插件目錄“/wp-content/plugins/vulnerable-plugin/index.php”中。

GitHub 儲存庫

您可以在此找到一個易受攻擊的 Docker 實例以及用於利用此漏洞的利用腳本 GitHub 儲存庫,圖片來源:阿南達·達卡爾

## 更多易受攻擊的函數

同樣的漏洞也適用於依賴「wp_http_validate_url()」進行驗證的其他函數:

– `wp_safe_remote_request()`
– `wp_safe_remote_post()`
– `wp_safe_remote_head()`

此外,某些函數充當「wp_safe_remote_get()」的包裝器,並且在某種程度上也容易受到攻擊:

– `WP_REST_URL_Details_Controller::get_remote_url()`
– `download_url()`
– `wp_remote_fopen()`
– `WP_oEmbed::discover()`

結論

顯然,被認為是安全的、旨在防止 SSRF 漏洞的功能並不完全萬無一失。對「wp_http_validate_url()」的依賴容易受到 DNS 重新綁定攻擊,從而使 WordPress 網站面臨潛在的 SSRF 攻擊。我們敦促 WordPress 核心團隊解決此問題並發布補丁以增強平台的安全性。

WP-Firewall 如何提供協助

在 WP-Firewall,我們了解保護您的 WordPress 網站免受新興威脅的至關重要。我們全面的安全解決方案旨在針對各種漏洞(包括 SSRF 攻擊)提供強大的保護。以下是 WP-Firewall 如何幫助保護您的 WordPress 網站:

即時威脅偵測

WP-Firewall 提供即時威脅偵測功能,可監控您的網站是否有可疑活動和潛在漏洞。我們的先進演算法可以識別並阻止 SSRF 嘗試,確保您的網站保持安全。

定期安全審核

我們的安全專家團隊會對您的 WordPress 網站及其外掛程式進行定期審核,以識別和解決漏洞。透過領先於潛在威脅,我們協助您為使用者維護一個安全的環境。

自動化補丁管理

保持 WordPress 核心、主題和外掛程式最新對於安全至關重要。 WP-Firewall 提供自動修補程式管理,確保網站的所有元件都使用最新的安全性修補程式進行更新。

自訂防火牆規則

WP-Firewall 可讓您建立適合您的特定需求的自訂防火牆規則。透過實施阻止惡意請求和未經授權的存取嘗試的規則,您可以增強網站的安全性。

綜合報告

我們詳細的安全報告可深入了解偵測到的威脅以及為保護您的網站所採取的措施。透過 WP-Firewall,您可以隨時了解 WordPress 網站的安全狀態。

使用 WP 防火牆防禦 SSRF

為了專門解決 SSRF 漏洞,WP-Firewall 提供了以下功能:

輸入驗證

WP-Firewall 執行嚴格的輸入驗證,以確保使用者提供的 URL 安全且無惡意。透過在多個層級驗證輸入,我們可以防止 SSRF 攻擊利用易受攻擊的功能。

DNS 重新綁定保護

我們的防火牆包含 DNS 重新綁定保護機制,可偵測並阻止利用 DNS 重新綁定漏洞的嘗試。即使「wp_http_validate_url()」等底層函數容易受到攻擊,這也可以確保您的網站保持安全。

安全 API 請求

WP-Firewall 透過執行嚴格的驗證和身分驗證措施來保護 API 請求。這可以防止未經授權的存取並降低針對 API 端點的 SSRF 攻擊的風險。

持續監控

我們的持續監控功能會密切關注您網站的流量和活動。任何可疑行為都會被及時標記並解決,從而最大限度地降低 SSRF 攻擊成功的風險。

呼籲採取行動

雖然未修補的 WordPress SSRF 漏洞會帶來重大風險,但主動措施可以減輕其影響。透過利用 WP-Firewall 的全面安全解決方案,您可以保護您的 WordPress 網站免受 SSRF 攻擊和其他新興威脅。使用 WP-Firewall 領先於潛在漏洞並確保為您的用戶提供安全的環境。

不要等到出現安全漏洞才採取行動。立即使用 WP-Firewall 保護您的 WordPress 網站。 開始你的免費試用 並體驗強大的即時保護所帶來的安心。

有關 WP-Firewall 如何幫助保護您的 WordPress 網站的更多信息,請訪問我們的 網站 或聯絡我們的支援團隊。

確保安全,保持安全,並使用 WP-Firewall 保護您的 WordPress 網站。

每周安全建議

將最新的 WordPress 安全情報發送到您的收件匣。 訂閱我們的新聞 並隨時了解最新的威脅和保護 WordPress 網站的最佳實踐。

最新的安全建議

查看所有最新的安全建議,並隨時了解影響 WordPress 外掛和主題的關鍵漏洞。

– 2024 年 5 月 19 日: WordPress漏洞報告(2024年5月6日至2024年5月12日)
– 2024 年 5 月 15 日: Uncode 核心插件中修復的高優先漏洞


wordpress security update banner

免費接收 WP 安全周刊 👋
立即註冊
!!

註冊以每週在您的收件匣中接收 WordPress 安全性更新。

我們不發送垃圾郵件!閱讀我們的 隱私權政策 了解更多。