
Exploit pour CVE-2022-1329, une vulnérabilité RCE du plugin WordPress Elementor, permettant aux utilisateurs authentifiés de téléverser et d'exécuter des fichiers PHP arbitraires via des charges utiles ZIP spécialement conçues.
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
Le plugin WordPress appelé Elementor (v. 3.6.0, 3.6.1, 3.6.2) présente une vulnérabilité qui permet à tout utilisateur authentifié de télécharger et d'exécuter n'importe quel fichier PHP.
Cette vulnérabilité, dans le OWASP TOP 10 2021, est placée en position #1 (Contrôle d'accès défaillant)
Le fichier qui contient cette vulnérabilité est elementor/core/app/modules/onboarding/module.php
À la fin de ce fichier, vous trouverez ce 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();
}
} );
Ce code est déclenché lorsque n'importe quel compte utilisateur visite /wp-admin
Pour fonctionner, nous avons besoin des 4 éléments suivants :
Le fichier que nous téléchargeons doit avoir la structure suivante :
Ce fichier sera votre charge utile (par exemple, PHP Reverse Shell ou autre)
ATTENTION : Le faux plugin que nous téléchargeons sera activé par Elementor, ce qui signifie que chaque fois que nous visitons une page, nous déclenchons notre charge utile.
S'il tente, par exemple, de se connecter à un hôte hors ligne, cela pourrait entraîner un déni de service.
Pour éviter cela, je vous suggère d'utiliser une variable pour activer la charge utile.
Quelque chose comme ceci (visitez anypage.php?activate=1 pour continuer avec la charge utile réelle) :
if (!isset($_GET['activate']))
return;