
認証済みリモートコード実行エクスプロイト for WordPress Elementor プラグイン (3.6.0-3.6.2) 任意のPHPファイルアップロード経由。nonce取得とZIPペイロードパッケージングを含むペネトレーションテスト用。
Google Dork: なし
Date: 2022年4月16日
Exploit Author: AkuCyberSec (https://github.com/AkuCyberSec)
Vendor Homepage: https://elementor.com/
Software Link: https://wordpress.org/plugins/elementor/advanced/ (下にスクロールしてバージョンを選択)
Version: 3.6.0, 3.6.1, 3.62
Tested on: WordPress 5.9.3 (このエクスプロイトはペイロードを提供しないため、OS非依存)
CVE : CVE-2022-1329
WordPressプラグインElementor(バージョン3.6.0、3.6.1、3.6.2)には、認証されたユーザーであれば誰でも任意のPHPファイルをアップロードして実行できる脆弱性があります。
この脆弱性は、OWASP TOP 10 2021では位置#1(破損したアクセス制御)に分類されています。
この脆弱性を含むファイルは elementor/core/app/modules/onboarding/module.php です。
このファイルの末尾に以下のコードがあります。
add_action( 'admin_init', function() {
if ( wp_doing_ajax() &&
isset( $_POST['action'] ) &&
isset( $_POST['_nonce'] ) &&
wp_verify_nonce( $_POST['_nonce'], Ajax::NONCE_KEY )
) {
$this->maybe_handle_ajax();
}
} );
このコードは、任意のユーザーアカウントが /wp-admin にアクセスするたびにトリガーされます。
動作させるには、以下の4つが必要です。
/wp-admin/admin-ajax.php を呼び出すだけです。maybe_handle_ajax() 関数を確認してください)。/wp-admin ページを検査して取得する必要があります(このエクスプロイトはDoLogin関数でこれを行います)。upload_and_install_pro() 関数を確認してください)。アップロードするファイルは以下の構造でなければなりません。
このファイルがあなたのペイロードになります(例:PHP Reverse Shell など)。
警告:アップロードした偽のプラグインはElementorによって有効化されるため、ページにアクセスするたびにペイロードがトリガーされます。
例えば、オフラインのホストに接続しようとすると、Denial of Service が発生する可能性があります。
これを防ぐために、ペイロードをアクティブにするための変数を使用することをお勧めします。
次のような方法です(実際のペイロードを実行するには anypage.php?activate=1 にアクセスします)。
if (!isset($_GET['activate']))
return;