
MapPress Maps Pro < 2.53.9 - Remote Code Execution (RCE) aufgrund fehlerhafter Zugriffskontrolle in AJAX-Aktionen
MapPress Maps Pro < 2.53.9 - Remote-Code-Ausführung (RCE) aufgrund falscher Zugriffskontrolle in AJAX-Aktionen
Die Pro-Version dieses Plugins registriert mehrere AJAX-Aktionen, die Funktionen aufrufen, denen Berechtigungsprüfungen und Nonce-Prüfungen fehlen, insbesondere die Funktionen 'ajax_get', 'ajax_save' und 'ajax_delete' in mappress_template.php. Dadurch ist es einem eingeloggten Angreifer mit minimalen Berechtigungen, wie etwa einem Abonnenten, möglich, die folgenden Aktionen durchzuführen:
Hochladen einer ausführbaren PHP-Datei (einschließlich potenzieller Backdoors) und Erreichen einer Remote-Code-Ausführung durch Senden einer $_POST-Anfrage an wp-admin/admin-ajax.php mit dem Parameter 'action' gesetzt auf 'mapp_tpl_save', dem Parameter 'name' gesetzt auf den Basisnamen der zu erstellenden Datei und dem Parameter 'content' gesetzt auf ausführbaren PHP-Code. Diese Datei würde dann im Verzeichnis des aktuell aktiven Themes erstellt und könnte von dort aus ausgeführt werden.
Löschen einer beliebigen vorhandenen PHP-Datei auf der Website (wie wp-config.php) durch Senden einer $_POST-Anfrage an wp-admin/admin-ajax.php mit dem Parameter 'action' gesetzt auf 'mapp_tpl_delete' und dem Parameter 'name' gesetzt auf den Basisnamen der zu löschenden Datei. Zum Beispiel könnte zum Löschen von wp-config.php ein Directory-Traversal-Angriff verwendet werden, und der Parameter 'name' könnte auf '../../../wp-config' gesetzt werden. Dies würde dazu führen, dass die Website zurückgesetzt wird, woraufhin ein Angreifer die vollständige Kontrolle über die Website erlangen könnte.
Anzeigen des Inhalts einer beliebigen vorhandenen PHP-Datei auf der Website (wie wp-config.php) durch Senden einer $_GET-Anfrage an wp-admin/admin-ajax.php mit dem Parameter 'action' gesetzt auf 'mapp_tpl_get' und dem Parameter 'name' der offenzulegenden Datei. Zum Beispiel könnte zum Anzeigen des Inhalts von wp-config.php ein Directory-Traversal-Angriff verwendet werden, und der Parameter 'name' könnte auf '../../../../wp-config' gesetzt werden.
python3 exploit.py --url http://wordpress.lan --username user --password useruser1 --code "<?php phpinfo(); ?>"