
Datum: 16. April 2023
Exploit-Autor: Việt Hùng (https://github.com/phanthibichtram12)
Anbieter-Website: https://elementor.com/
Software-Link: https://wordpress.org/plugins/elementor/advanced/ (nach unten scrollen und Version auswählen)
Version: 3.6.0, 3.6.1, 3.62
Getestet auf: WordPress 5.9.3 (unabhängig vom Betriebssystem, da dieser Exploit KEINE Payload bereitstellt)
CVE : CVE-2022-1329
Das WordPress-Plugin Elementor (v. 3.6.0, 3.6.1, 3.6.2) weist eine Schwachstelle auf, die es jedem authentifizierten Benutzer ermöglicht, beliebige PHP-Dateien hochzuladen und auszuführen.
Diese Schwachstelle steht in den OWASP Top 10 2021 auf Platz 1 (Broken Access Control).
Die Datei, die diese Schwachstelle enthält, ist elementor/core/app/modules/onboarding/module.php
Am Ende dieser Datei finden Sie diesen Code:
add_action( 'admin_init', function() {
nếu ( wp_doing_ajax() &&
isset( $_POST['action'] ) &&
isset( $_POST['_nonce'] ) &&
wp_verify_nonce( $_POST['_nonce'], Ajax::NONCE_KEY )
) {
$this->maybe_handle_ajax();
}
} );
Dieser Code wird immer dann ausgelöst, wenn IRGENDEIN Benutzerkonto auf /wp-admin zugreift. Damit es funktioniert, benötigen wir die folgenden 4 Dinge:
Die von uns hochgeladene Datei muss die folgende Struktur aufweisen:
Diese Datei wird IHRE Payload sein (z. B. eine PHP-Reverse-Shell oder etwas anderes). WARNUNG: Das gefälschte Plugin, das wir hochladen, wird von Elementor aktiviert, was bedeutet, dass bei jedem Aufruf einer beliebigen Seite unsere Payload ausgelöst wird. Wenn es beispielsweise versucht, eine Verbindung zu einem Offline-Server herzustellen, kann dies zu einem Denial-of-Service führen. Um dies zu verhindern, empfehle ich, eine Variable zu verwenden, um die Payload auszulösen. Etwa so (rufen Sie Anypage.php?activate=1 auf, um mit der eigentlichen Payload fortzufahren):
if (!isset($_GET['activate']))
return;