
WordPress Elementor 3.6.0 3.6.1 3.6.2 RCE POC
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 Sicherheitslücke steht in der OWASP TOP 10 2021 an Position #1 (Broken Access Control)
Die Datei, die diese Sicherheitslücke 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 aufruft.
Damit der Exploit funktioniert, benötigen wir die folgenden 4 Dinge:
Die hochzuladende Datei muss die folgende Struktur aufweisen:
Diese Datei wird Ihre Payload sein (z. B. PHP Reverse Shell oder etwas anderes).
WARNUNG: Das von uns hochgeladene gefälschte Plugin wird von Elementor aktiviert, was bedeutet, dass jedes Mal, wenn wir eine Seite besuchen, unsere Payload ausgelöst wird.
Wenn es beispielsweise versucht, eine Verbindung zu einem offline befindlichen Host herzustellen, könnte dies zu einem Denial of Service führen.
Um dies zu verhindern, empfehle ich Ihnen, eine Variable zu verwenden, um die Payload zu aktivieren.
So etwas wie dies (rufen Sie anypage.php?activate=1 auf, um mit der eigentlichen Payload fortzufahren):
if (!isset($_GET['activate']))
return;