// 01
Resumen
Lame es la primera máquina publicada en HackTheBox, de dificultad fácil. Corre Linux y expone cuatro servicios: FTP (vsftpd 2.3.4), SSH, y Samba en los puertos 139 y 445.
El ataque comienza explorando el backdoor conocido en
vsftpd 2.3.4, descubierto en 2011, que en esta máquina está
bloqueado y no funciona. El vector real es Samba 3.0.20, vulnerable al
CVE-2007-2447: una inyección de comandos shell a través del
parámetro "username map script" en smb.conf.
Usando el módulo de Metasploit exploit/multi/samba/usermap_script
con el LHOST correcto (IP de la VPN), se obtiene una shell directa como
root sin necesidad de escalada de privilegios.
| Fase | Técnica / Herramienta | Resultado |
|---|---|---|
| Reconocimiento | ping -c3 + nmap -Pn | OS Linux (TTL 63) · 4 puertos abiertos |
| Escaneo de servicios | nmap -p21,22,139,445 -sCV -Pn | vsftpd 2.3.4 · OpenSSH 4.7p1 · Samba 3.0.20 |
| Intento FTP | Metasploit vsftpd_234_backdoor | Exploit completo pero sin sesión creada |
| Enum. Samba | smbmap -H / smbclient -N | Share tmp con READ/WRITE · Samba 3.0.20-Debian |
| Explotación | Metasploit usermap_script · CVE-2007-2447 | Command shell session 1 abierta como root |
| Post-explot. | cd /root · cd /home/makis | root.txt + user.txt capturadas |
// 02
Conexión
Descargamos el archivo VPN desde HackTheBox y lo conectamos con openvpn. Luego encendemos la máquina Lame desde la plataforma y copiamos su IP objetivo: 10.10.10.3. El LHOST que usaremos en Metasploit será la IP asignada a nuestra interfaz VPN (en este caso 10.10.14.246).
En HackTheBox, el LHOST para Metasploit NO es la IP de tu máquina local
(ej. 192.168.x.x), sino la IP de tu interfaz tun0 (VPN). Puedes verla con
ip a show tun0. Si usas la IP incorrecta, el exploit ejecutará pero no podrá
establecer la sesión.
// 03
Reconocimiento
Verificamos que la máquina está activa y determinamos el sistema operativo analizando el TTL. El TTL de respuesta es 63, que indica Linux (TTL inicial 64 menos 1 salto de red).
Escaneamos los puertos de forma silenciosa con -Pn (sin enviar paquetes ICMP para detectar el host). Identificamos 4 puertos TCP abiertos: FTP en el 21, SSH en el 22, y SMB/NetBIOS en los puertos 139 y 445.
Con los puertos identificados, lanzamos un escaneo detallado con -sCV para obtener versiones exactas y ejecutar scripts NSE. Descubrimos información clave: vsftpd 2.3.4 en el FTP, OpenSSH 4.7p1 en el 22, y Samba smbd 3.0.20-Debian en los puertos SMB.
// 04
vsftpd 2.3.4 — La Falsa Pista
La versión vsftpd 2.3.4 es famosa por contener un backdoor malicioso introducido en junio de 2011. Se activa enviando un nombre de usuario terminado en ":)", que abre un listener en el puerto 6200. Metasploit tiene un módulo específico para esto.
Sin embargo, en Lame el backdoor está bloqueado y no funciona. El exploit completa sin crear sesión. Es una lección importante: no toda vulnerabilidad conocida es explotable en todos los entornos.
El exploit vsftpd_234_backdoor retorna Exploit completed, but no session was created.
El firewall o configuración de la máquina bloquea el puerto 6200 donde debería abrir el listener.
Ignoramos este vector y continuamos con Samba.
// 05
Enumeración Samba
Pivotamos hacia el servicio Samba. El escaneo Nmap ya reveló la versión 3.0.20-Debian, que es vulnerable al CVE-2007-2447. Antes de explotar, enumeramos los recursos compartidos con smbmap y nos conectamos manualmente con smbclient.
smbmap enumera los recursos compartidos y
sus permisos. Identificamos que el share tmp tiene
permisos de READ, WRITE, lo que confirma acceso anónimo amplio.
Nos conectamos al share tmp con
smbclient usando -N
(sin credenciales, sesión anónima). Exploramos el contenido con ls y
comprobamos que tenemos acceso. Aunque vemos archivos interesantes como
vmware-root, el acceso está denegado. La información más valiosa ya la
tenemos: la versión de Samba.
Samba 3.0.20 es vulnerable a ejecución remota de comandos cuando la
opción "username map script" está habilitada en smb.conf.
Un atacante puede inyectar metacaracteres shell en el campo de usuario durante la
autenticación, lo que ejecuta comandos arbitrarios con los privilegios del proceso Samba
(root en este caso). CVSS: 10.0 (Crítico).
// 06
Explotación — CVE-2007-2447
Usamos el módulo de Metasploit exploit/multi/samba/usermap_script
que explota el CVE-2007-2447. La clave es configurar correctamente el
LHOST con la IP de nuestra interfaz VPN (tun0),
no la IP de la red local, ya que HackTheBox enruta el tráfico de vuelta a través de la VPN.
Seleccionamos el módulo, configuramos RHOSTS con la IP de la víctima y LHOST con la IP de nuestra VPN. Este es el paso crítico donde muchos fallan al poner la IP local en lugar de la de la interfaz tun0.
El exploit CVE-2007-2447 entrega una shell directamente como root. No hay escalada de privilegios necesaria — Samba corría con permisos de superusuario en esta versión vulnerable. Desde aquí tenemos acceso completo al sistema.
// 07
Flags
Con shell como root, navegamos al directorio /root
para la flag de root, y a /home/makis
para la flag de usuario.
// 08
Referencia de Comandos
- -Pn — No hacer ping (tratar host como activo)
- -sC — Ejecutar scripts NSE por defecto
- -sV — Detectar versiones de servicios
- -p — Especificar puertos concretos
- -H — Host/IP objetivo
- -u — Usuario (vacío = anónimo)
- -p — Puerto SMB (default 445)
- -N — Sin contraseña (anónimo)
- -L — Listar shares disponibles
- get — Descargar archivo del share
- RHOSTS — IP de la víctima
- LHOST — IP VPN tun0 (¡no la local!)
- RPORT — Puerto SMB (default 139)
// 09
Glosario
Linux usa TTL inicial de 64 (llega a 63 tras 1 salto), Windows usa 128 (llega a 127). Este fingerprinting pasivo evita ruido en la red.username map script está configurada en smb.conf. El atacante inyecta metacaracteres shell (como ; comando) en el nombre de usuario durante la autenticación MS-RPC. El proceso Samba ejecuta esos comandos con sus propios privilegios (root). CVSS Score: 10.0.:) (ej. user:)), que abría un listener en el puerto 6200. En Lame, aunque la versión es la vulnerable, el puerto está bloqueado por firewall, haciendo el exploit inútil.search [vuln] → use [módulo] → set RHOSTS [IP] → set LHOST [IP_VPN] → exploit. El LHOST siempre debe ser la IP de la interfaz de red que puede recibir la conexión entrante de la víctima.tun0 (asignada por la VPN), no la IP de la red local. Si se usa la IP incorrecta, el exploit ejecuta pero no puede enrutar la conexión de vuelta.