
Exploit di esecuzione remota di codice autenticato per il plugin Elementor di WordPress (3.6.0-3.6.2) tramite caricamento arbitrario di file PHP. Include recupero del nonce e pacchettizzazione del payload ZIP per test di penetrazione.
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
Il plugin WordPress chiamato Elementor (v. 3.6.0, 3.6.1, 3.6.2) presenta una vulnerabilità che consente a qualsiasi utente autenticato di caricare ed eseguire qualsiasi file PHP.
Questa vulnerabilità, nell'OWASP TOP 10 2021, è posizionata al #1 (Controllo di Accesso Rotto)
Il file che contiene questa vulnerabilità è elementor/core/app/modules/onboarding/module.php
Alla fine di questo file puoi trovare questo codice:
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();
}
} );
Questo codice viene attivato ogni volta che QUALSIASI account utente visita /wp-admin
Per funzionare abbiamo bisogno delle seguenti 4 cose:
Il file che carichiamo deve avere la seguente struttura:
Questo file sarà il TUO payload (es. PHP Reverse Shell o qualsiasi altra cosa)
ATTENZIONE: Il plugin falso che carichiamo verrà attivato da Elementor, questo significa che ogni volta che visitiamo una pagina qualsiasi attiviamo il nostro payload.
Se prova, ad esempio, a connettersi a un host offline, potrebbe portare a un Denial of Service.
Per evitare ciò, ti suggerisco di utilizzare una variabile per attivare il payload.
Qualcosa come questo (visita anypage.php?activate=1 per continuare con il payload effettivo):
if (!isset($_GET['activate']))
return;