
MapPress Maps Pro < 2.53.9 - Exécution de code à distance (RCE) due à un contrôle d'accès incorrect dans les actions AJAX
MapPress Maps Pro < 2.53.9 - Exécution de code à distance (RCE) en raison d'un contrôle d'accès incorrect dans les actions AJAX
La version pro de ce plugin enregistre plusieurs actions AJAX qui appellent des fonctions manquant de vérifications de capacités et de nonces, en particulier les fonctions 'ajax_get', 'ajax_save' et 'ajax_delete' dans mappress_template.php. Ainsi, il est possible pour un attaquant connecté disposant de permissions minimales, tel qu'un abonné, d'effectuer les actions suivantes :
Télécharger un fichier PHP exécutable (y compris des backdoors potentielles) et obtenir une exécution de code à distance en envoyant une requête $_POST à wp-admin/admin-ajax.php avec le paramètre 'action' défini sur 'mapp_tpl_save', le paramètre 'name' défini sur le nom de base du fichier à créer, et le paramètre 'content' défini sur du code PHP exécutable. Ce fichier serait alors créé dans et pourrait être exécuté depuis le répertoire du thème actuellement actif.
Supprimer tout fichier PHP existant sur le site (tel que wp-config.php) en envoyant une requête $_POST à wp-admin/admin-ajax.php avec le paramètre 'action' défini sur 'mapp_tpl_delete', et le paramètre 'name' défini sur le nom de base du fichier à supprimer. Par exemple, pour supprimer wp-config.php, une attaque par traversée de répertoire pourrait être utilisée, et le paramètre 'name' pourrait être défini sur '../../../wp-config'. Cela entraînerait la réinitialisation du site, moment auquel un attaquant pourrait obtenir un contrôle total du site.
Voir le contenu de tout fichier PHP existant sur le site (tel que wp-config.php) en envoyant une requête $_GET à wp-admin/admin-ajax.php avec le paramètre 'action' défini sur 'mapp_tpl_get', et le paramètre 'name' du fichier à divulguer. Par exemple, pour voir le contenu de wp-config.php, une attaque par traversée de répertoire pourrait être utilisée, et le paramètre 'name' pourrait être défini sur '../../../../wp-config'.
python3 exploit.py --url http://wordpress.lan --username user --password useruser1 --code "<?php phpinfo(); ?>"