CVE-2022-1329 WordPress 500萬量級插件 Elementor 遠程命令執行漏洞分析

聲明

以下內容,來自且聽安全公眾號的QCyber作者原創,由于傳播,利用此文所提供的信息而造成的任何直接或間接的后果和損失,均由使用者本人負責,長白山攻防實驗室以及文章作者不承擔任何責任。

漏洞信息

Elementor 是全球最受歡迎的 WordPress 插件之一,可以使得網站創建者能夠使用只管的視覺構建器構建專業、像素完美的網站。插件累計安裝數量達到 500w+ :

近日 Wordfence 威脅情報團隊發布了針對 WordPress Elementor 存在 RCE 漏洞的信息,編號 CVE-2022-1329 。CVSS Score 高達 9.9 。經過身份認證的用戶(普通用戶即可)可以上傳任意 PHP 代碼,從而 Getshell。

影響版本為:3.6.0 – 3.6.2 :

環境搭建

安裝Apache 、PHP和MySQL 數據庫。選擇安裝WordPress v5.9.3版本:

安裝配置遠程調試環境。

下載`elementor.3.6.2.zip`和`elementor-3.6.3.zip`。上傳插件并激活:

漏洞分析

Elementor從v3.6.0 版本開始,引入了`Onboarding`模塊,主要用來優化 WordPress 應用程序的AJAX請求操作。

`\elementor\core\app\modules\onboarding\module.php`中定義了一個 `admin_init` 的 Hook,當任意構造一個`admin-ajax.php`請求(比如`/wp-admin/admin-ajax.php?action=test`)

程序都會進入`Onboarding`的處理邏輯,觸發斷點:

從上面的判斷可以得出,請求必須是 POST 類型,并且必須攜帶 WordPress 的 `_nonce` 參數(可以在 WordPress 認證時獲取)并驗證是否正確,然后進入 `maybe_handle_ajax` 函數:

根據 action`參數的取值,選擇不同的處理方式,重點關注

`elementor_upload_and_install_pro` ,進入 `upload_and_install_pro` 函數:

讀取上傳的文件(參數名稱為`fileToUpload`)并調用 WordPress 自帶的插件安裝函數`Plugin_Upgrader-#install` ,安裝成果后,將調用`activate_plugin` 激活插件:

這里指向的插件路徑為 `WP_PLUGIN_DIR . '/elementor-pro/elementorpro.php'`。

回顧前面的分析,當 `action` 取值為 `elementor_upload_and_install_pro` 時,實際上完成的是 WordPress 正常的插件安裝過程,這本身沒有問題,但是從 `Onboarding` 處理 AJAX 請求的驗證過程來看,只對 `_nonce` 進行了檢查,并未對用戶權限進行限制,這就意味著普通用戶也可以安裝插件,從而Getshell。

漏洞復現

從前面的分析可知,我們首先需要提取 `_nonce` ,在 WordPress 登錄過程中就可以獲取:

手動構造一個插件安裝包( ZIP 文件),從前面分析可知,壓縮包中必須有一個 `elementor-pro` 文件夾,文件夾里面必須有一個 `elementor-pro.php` 文件,可以將 Webshell 植入其中,然后構造數據包上傳:

上傳成功:

修復方式

增加了對當前用戶權限的檢查。

原文鏈接:

https://mp.weixin.qq.com/s/YtqSaDB8Ufn0w62W2BuZ_A

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容