
Authentifizierter Remote-Code-Ausführungs-Exploit für das WordPress Elementor-Plugin (3.6.0-3.6.2) über willkürlichen PHP-Datei-Upload. Enthält Nonce-Abruf und ZIP-Payload-Verpackung für Penetrationstests.
Google Dork: none
Date: April 16 2022
Exploit Author: AkuCyberSec (https://github.com/AkuCyberSec)
Vendor Homepage: https://elementor.com/
Software Link: https://wordpress.org/plugins/elementor/advanced/ (scroll down to select the version)
Version: 3.6.0, 3.6.1, 3.62
Tested on: WordPress 5.9.3 (os-independent since this exploit does NOT provide the payload)
CVE : CVE-2022-1329
Das WordPress-Plugin Elementor (v. 3.6.0, 3.6.1, 3.6.2) weist eine Sicherheitslücke auf, die es jedem authentifizierten Benutzer ermöglicht, beliebige PHP-Dateien hochzuladen und auszuführen.
Diese Schwachstelle steht im OWASP TOP 10 2021 an Position #1 (Broken Access Control).
Die Datei, die diese Schwachstelle enthält, ist elementor/core/app/modules/onboarding/module.php
Am Ende dieser Datei befindet sich folgender Code:
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();
}
} );
Dieser Code wird ausgelöst, sobald EIN Benutzerkonto /wp-admin besucht.
Damit dies funktioniert, werden die folgenden 4 Dinge benötigt:
Die hochzuladende Datei muss die folgende Struktur aufweisen:
Diese Datei wird Ihr Payload sein (z.B. PHP Reverse Shell oder irgendetwas anderes).
WARNUNG: Das von uns hochgeladene Fake-Plugin wird von Elementor aktiviert. Das bedeutet, dass jedes Mal, wenn wir eine Seite besuchen, unser Payload ausgelöst wird.
Wenn es beispielsweise versucht, sich mit einem Offline-Host zu verbinden, könnte dies zu einem Denial-of-Service führen.
Um dies zu verhindern, empfehle ich, eine Variable zur Aktivierung des Payloads zu verwenden.
So etwas wie (besuchen Sie anypage.php?activate=1, um mit dem eigentlichen Payload fortzufahren):
if (!isset($_GET['activate']))
return;