Ben tornati su Exploitnetworking per vedere il writeup della macchina Celestial di Hack The Box. Questa è una semplice macchina divisa in due passaggi: il primo è composto da un servizio web Nodejs exploitabile in un modo facile e diretto. Il secondo step è composto da un semplice trick in python che ci permette di aprire una shell di root.
Iniziamo con la solita scansione nmap:
Come possiamo vedere c’è solo la porta 3000 aperta con un servizio Node.js Express framework. Apriamo subito il browser per vedere la pagina web:

C’è la stampa di un errore 404, ma ricaricando la pagina vediamo che la scritta cambia:
Interessante. Proviamo ad aprire Burp per vedere cosa è successo nella richiesta:

Notiamo subito che c’è un cookie chiamato “profile”:
A primo impatto questa sembra essere una codifica in base64, proviamo a decodificarla per vedere cosa c’è dietro:
Infatti ci sono alcune informazioni riguardo un account con username “Dummy”. Proviamo a modificare alcuni valori in questo cookie iniziando dallo username:
La risposta del server web è:
Uhm, sì, possiamo manipolare la risposta con il cookie. Notiamo che “22” sembra essere una concatenazione di “2”, proviamo a modificare il valore “2” per vedere cosa succede:
La risposta è:
Forse c’è qualche trick per la concatenazione del valore “42”. Proviamo con qualche valore differente da un numero:
Ecco la risposta:
Yeah, c’è la funzione eval! Con la funzione eval noi possiamo eseguire codice manipolando il cookie! Proviamo a cambiare il cookie inserendo all’interno una reverse shell in javascript:
Mettiamoci in ascolto sulla porta 2222 con netcat e mandiamo la richiesta:
Yeah! Abbiamo aperto una reverse shell! Prendiamo la flag in Documents/user.txt e procediamo con la privilege escalation. In Documents c’è un altro file interessante:
Il contenuto del file script.py è:
E nella home directory c’è un file chiamato “output.txt” con questo contenuto:
dove il proprietario di questo file è root. Forse c’è un crontask di root che fa girare lo script per scrivere nel file output.txt. Per vedere se c’è questo cronjob, scriviamo uno script in bash che cerca i nuovi processi che vengono eseguiti nel sistema:
Facciamo partire lo script:
dopo alcuni minuti possiamo vedere che c’è un crontask di root che fa partire lo script python e lo rimpiazza con un altro script.py. Ora possiamo semplicemente modificare lo script e inserire all’interno una reverse shell in python. Inseriamo questo codice per aprire una reverse shell:
Mettiamoci in ascolto sulla porta 2224 con netcat e dopo qualche minuto:
Scrivi un commento