CozyHosting
Autore: Lord Shiva • Aggiornamento: 23.09.2023 • Tempo di lettura: 10 min.Per prima cosa come sempre eseguo una scansione della macchina per capire queli porte sono aperte con il seguente comando:
Il risultato è il seguente:
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 4356bca7f2ec46ddc10f83304c2caaa8 (ECDSA)
|_ 256 6f7a6c3fa68de27595d47b71ac4f7e42 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://cozyhosting.htb
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Una votla aggiunto il dominio al mio hosts trovo la seguente schermata:
Provo a eseguire alcune azioni di SQL Injection sulla login ma senza risultati. Così provo a vedere se vi sono delle directory nascoste:
La cartella admin sembra interessante ma riporta alla schermata di login. Se invece proviamo ad andare su /error troviamo la seguente schemrata:
Questo è un errore di Spring Boot. Ciò significa che potrebbero esserci endpoint aggiuntivi nell'applicazione come /actuator ;-)
Nella sessione ho trovato l'utente kanderson e nuovi endpoint /executessh e /addhost nella directory /actuator/mappings... Quindi possiamo utilizzare cookie di sessione e accedere alla directory /admin
di seguito sono riportate le impostazioni di connessione
Invece del nome possiamo caricare una shell inversa...
ma abbiamo bisogno di un formato URL senza spazi vuoti in modo da poter aggiungere ${IFS%??}, ; alla fine e all'inizio per questo sono andato sul seguente sito https://www.urlencoder.org/ e ho codificato la mia stringa
nc dovrebbe funzionare durante la richiesta...
A questo punto scarico il file jar e mi installo jd-gui per leggerlo.
In application.properties trovo la password per postgres e in schedule/FakeUser.class trovo le credenziali per l'utente kanderson:
A questo punto controllo il database
...ma cos'è quella hash?
A questo punto eseguo hashcat per trovare la password dell'utente josh, unico utente presente nella directory home.
Il risultato è la password dell'utente manchesterunited
Prima flag catturata: d71..........................e79
Adesso vediamo se l'utente può eseguire comandi root...
Questo è il risultato del comando sudo -l
[sudo] password for josh:
Matching Defaults entries for josh on localhost:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User josh may run the following commands on localhost:
(root) /usr/bin/ssh *
Grazie a questo https://gtfobins.github.io/gtfobins/ssh/#sudo riesco a fare l'escalation e di prendere la root flag:
sudo ssh -o ProxyCommand=';bash 0<&2 1>&2' x
09c...........................6a3