
Laboratoire d'exploitation RCE Drupalgeddon3 avec environnement vulnérable basé sur Docker et intégration Metasploit pour une formation pratique à l'exploitation de CVE-2018-7602.
Une vulnérabilité d'exécution de code à distance existe dans plusieurs sous-systèmes de Drupal 7.x et 8.x. Cela permet potentiellement aux attaquants d'exploiter plusieurs vecteurs d'attaque sur un site Drupal, ce qui pourrait entraîner la compromission du site. Cette vulnérabilité est liée au cœur de Drupal - Hautement critique - Exécution de code à distance - SA-CORE-2018-002. SA-CORE-2018-002 et cette vulnérabilité sont toutes deux exploitées activement. --- MITRE
En raison de certaines limitations réseau dans Docker pour Mac (https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) et Windows, le code ci-dessous doit être exécuté sur une machine LINUX avec docker et docker-compose installés.
Nous avons ici une procédure en deux étapes : d'abord la machine Drupal avec une version vulnérable 7.57, puis la machine attaquante avec un exploit modifié qui nous permet de montrer le danger potentiel de la vulnérabilité.
# Supposing that you are placed inside the directory CVE-2018-7602
cd vulnerable_machine
docker-compose up -d
cd ..
Avertissement Assurez-vous que le port 80 n'est pas utilisé par un autre logiciel avant d'exécuter la commande.
Machine attaquante : Ici, nous allons instancier une image Docker Metasploit contenant un exploit personnalisé (drupal_drupalgeddon3_commander) qui sera utilisé par la suite. Pour ce faire, nous exécutons :
cd attacking_machine
docker-compose run --rm --service-ports -e MSF_UID=$(id -u) -e MSF_GID=$(id -g) ms
Si vous rencontrez un problème lors de l'exécution des commandes ci-dessous, envoyez un e-mail à [email protected] en joignant le journal d'exécution et il se fera un plaisir de vous aider à résoudre le problème.
Maintenant que Drupal est en cours d'exécution, nous devons configurer et créer du contenu avec Drupal. Pour cela, suivez les étapes suivantes :


# Overview
We will try to use the vulnerability to execute commands like ls or whoami
to show that it is possible to execute commands remotely.
Maintenant que nous avons l'instance vulnérable de Drupal en cours d'exécution sur localhost. Les étapes suivantes consistent à commencer à utiliser l'instance Metasploit créée lors de l'étape de configuration de l'environnement.
Dans Metasploit, nous devons recharger la base de données des exploits en utilisant la commande :
reload_all
Avec cela, nous avons accès à l'exploit dont nous avons besoin. Pour préparer les informations nécessaires à l'exploit, nous aurons besoin des cookies de session d'un utilisateur connecté sur le site.
Pour l'obtenir facilement, en supposant que vous êtes toujours connecté, allez dans les outils de développement, regardez le stockage des cookies et sauvegardez-le pour plus tard. Vous devriez obtenir à la fin quelque chose comme
#<session_name>=<session_token>
SESS49960de5880e8c687434170f6476605b=DGHZKHWaNC51nrVQHEsTD0_PS68EeNyvGjdzk1SVmss
Un exemple utilisant Google Chrome pour obtenir le cookie

Maintenant, nous commençons à charger l'exploit avec Metasploit. Pour ce faire, exécutez les commandes suivantes :
use exploits/unix/webapp/drupal_drupalgeddon3_commander
show options
Comme vous pouvez le voir, nous avons besoin de certains paramètres. Nous configurons les paramètres comme suit
set RHOSTS localhost
set DRUPAL_SESSION <session_name>=<session_token>
Après cela, nous pouvons exécuter
exploit
Nous obtiendrons l'utilisateur qui exécute actuellement le serveur web. Dans ce cas, www-data. Parce que la commande par défaut configurée est whoami. Vous verrez également quelques informations supplémentaires au format JSON qui ne sont pas pertinentes pour nous.
Résultat final de l'exploit :

Fin de l'expérimentation : Si vous êtes parvenu à exécuter toute l'expérimentation avec succès, alors c'est la fin Félicitations.
Si vous souhaitez continuer à expérimenter, vous pouvez modifier la valeur de la commande en utilisant l'instruction set. Ou modifier le script Ruby utilisé par Metasploit.