La máquina Dance-Samba se encuentra en la plataforma de DockerLabs la plataforma fue creada por "El Pingüino de Mario" y la máquina fue creada por "d1se0", dicha máquina está catalogada con la dificultad "MEDIO".

Nota: Estas máquinas se encuentran en entornos controlados por lo que lás herramientas y técnicas vistas son con total responsabilidad y ética por lo que son una oportunidad inmensa para amantes de la seguridad ofensiva.

Reconocimiento

Dado que es un entorno controlado el cual se despliega la infraestructura montada en con Docker, pasamos a un escaneo directo para detectar serviciso y vulnerabilidades con Nmap.

nmap -sCV -Pn -p- --min-rate=4000 --reason -vvv 172.17.0.2 -oN ScriptsDanceSamba

El escaneo nos mostró que se encuentran 4 servicios corriendo en 4 puertos, ftp, ssh, netbios y samba; las versiones detectadas no contaban con vulnerabilidades comprobables sin embargo podemos señalar una mala configuración para inicio de sesión como anonymous.

None
Escaneo de nmap detectado lectura para nota.txt

Si accedemos por ftp como anonimo podemos leer el contenido del archivo "nota.txt"

ftp 172.17.0.2

=== Dentro de FTP ===
cat nota.txt

Con los comandos previos podemos acceder al servicio de ftp que está corriendo en la máquina, dicho contenido de nota.txt nos señala que Macarena es un usuario y posiblemente donald tenga algo que ver con la manera en la que podemos acceder.

None
Contenido de nota.txt

Enumeración / Explotación

Pasando a enumerar información sensible hacemos uso de smbclient, smbmap y crackmapexec para poder obtener posible acceso por samba a algún share, como inicio, hacemos uso de smbclient con una sesión Null para Listar Shares.

None
Share macarena

El acceso a los shares no fue posible, se realizó una autenticación null con smbmap lo cual indicó que no se cuenta con los permisos de lectura.

None
smbmap resultados

Retomando la parte mencionada de la posibilidad del usuario "macarena" hacemos uso de crackmapexec para aplicar una fuerza bruta de contraseñas y así poder autenticarnos como macarena para leer el share.

None
Comando de escaneo

Esto nos brindó la contraseña, la cual fue mencionada curiosamente en la nota.txt que logramos leer.

smbclient -U macarena //172.17.0.2/macarena
# Posteriormente nos autenticamos para obtener acceso
None
Acceso al share como macarena

En este punto se intentó acceder por ssh con las credenciales encontradas, sin embargo esto no fue posible por lo que una posibilidad sería poder cargar archivos desde smb y obtener una conexión remota por ssh en caso de contar con los permisos requeridos, para esto los pasos fueron:

  1. Corroborar que es posible cargar archivos o crear carpetas:
None
cargamos el archivo "try.txt"

2. Creamos una carpeta por para almacenar llaves como .ssh

None
Creación de directorio .ssh

3. En nuestra máquina atacante creamos llaves públicas

None
creación de llaves

4. Revisamos las llaves generadas en la ruta que nos especificó el comando

None
llave privada y pública generada

5. Copiamos la llave pública al directorio donde establecimos la conexión para poder cambiarle el nombre a "authorized_keys" y subir dicha llave para la autenticación.

cp /Ruta/De/.ssh/para/id_pub . (copia en el directorio que nos encontramos actualmente)
mv id_pub authorized_keys

#### En la consola de smb con el servidor que hicimos conexión ####
put authorized_keys

6. Hacemos uso de la llave privada que generamos nosotros para acceder de manera remota como macarena.

ssh -i /Ruta/de/llave/privada macarena@172.17.0.2
None
Acceso obtenido
  • nota: Para poder comprender mejor el proceso de autenticación por SSH y la transferencia de llaves se recomienda investigar sobre "Transferencia de llaves para autenticación por SSH".

Post-Enumeración / Post-explotación

Una vez que obtuvimos el acceso a tráves de ssh como macarena, podemos comenzar a enumerar, dentro de podemos observar que en el directorio de "secret" se encuentra un hash el cual puede ser leído.

None
secret hash

Dicho hash tiene más una apariencia de un cifrado en base64, podemos hacer uso de cyberchef para descifrar el texto.

None
Contraseña encontrada

Si intentamos hacer uso de la contraseña con el comando "sudo -l" para listar posibles binarios con permisos de root podemos observar que si existe uno.

None
file puede ser ejecutado por todos como sudo

Investigando un poco entre los directorios nos encontramos con un archivo llamado "password.txt", si nos dirigimos a GTFOBins nos da un ejemplo de como podemos explotar esta configuración para leer el contenido de archivos con permisos de sudo.

None
Credenciales de root
su root
# ingresar la contraseña que se visualiza #
None
Escalación lograda

Como últimos pasos si nos dirigimos a la carpeta de root, se encuentran 2 archivos que se pueden leer "root.txt" y "true_root.txt"

None
Contenido de root.txt
None
Contenido de true_root.txt

Mitigaciones y recomendaciones.

No almacenar contraseñas o información sensible en servidores críticos.

SMB / Samba (Enumeración y Acceso)

  • Deshabilitar Sesiones Null: Restringir el acceso anónimo configurando del archivo smb.conf. Esto obliga a tener una cuenta válida para listar recursos.
  • Control de Escritura: Revisa los permisos de los "shares". Asegúrarse de que los permisos de lectura y escritura sean para cuentas autorizadas únicamente.

FTP (Acceso Anónimo)

  • Deshabilitar Anonymous Login: Cambiar la configuración para el acceso de FTP donde anonymous_login sea falso.
  • Cerrar el Servicio: Si no hay una necesidad de negocio para el FTP y ya se cuenta con SSH/SFTP, lo más seguro es deshabilitar y detener el servicio por completo.

SSH y Persistencia

  • Protección de Claves y Directorios: Es crítico que los permisos de los directorios /home/usuario/.ssh sean estrictos (700 para carpetas y 600 para archivos).
  • Deshabilitar Autenticación sin Password: Si es posible, utilizar únicamente llaves criptográficas y configurar la autenticación de contraseña en el archivo de configuración de ssh.

Escalada de Privilegios (Sudo /usr/bin/file)

  • Eliminar Privilegios de Sudo Innecesarios: El binario file puede ser explotado para leer el contenido de archivos sensibles como "/etc/shadow" esto expone los hashes de los usuarios, dando la posibilidad a un crackeo de contraseñas inseguras.
  • Principio de Menor Privilegio.

Muchas gracias por leer, y gracias al creador de la máquina como a dockerlabs por brindarnos la posibilidad de resolver retos como estos.