Discussione Mr.Robot WriteUp TryHackMe

Z3N0

Utente Silver
25 Ottobre 2020
79
7
64
51
3flies4.png

2021-01-18 00_07_06-PAET - VMware Workstation 16 Player (Non-commercial use only).png

Mr. Robot
Write up


Come sempre iniziamo con una scansione nmap per vedere quali porte sono attive sulla macchina e i rispettivi servizi
2021-01-17 22_33_34-PAET - VMware Workstation 16 Player (Non-commercial use only).png


vediamo che le porte 22-80-443 sono aperte, questo ci suggerisce la presenza di un web server. Apriamo quindi il browser e inseriamo l'indirizzo IP della macchina nella barra degli url, navigando all' indirizzo ci viene mostrato un sito web molto simpatico
2021-01-17 22_35_28-PAET - VMware Workstation 16 Player (Non-commercial use only).png


visto il nome della macchina per prima cosa andiamo a vedere il file robots.txt,

ecco la prima key ci basterà ora inserire il percorso al file “http://<ip macchina>/key-1-of-3.txt per prendere la prima key:
key1.png


tornando al file robots.txt vediamo che c'è anche un altro file che si chiama fsociety.dic il nome ci suggerisce che questo sia un file “dizionario” scarichiamolo e teniamolo da parte per ora. (per scaricarlo basterà fare lo stesso procedimento della key1)

Il prossimo passaggio è quello di cercare possibili cartelle o file, per fare ciò andremo ad utilizzare Gobuster(o qualsiasi altro tool simile come dirb,dirbuster) il comando da eseguire è il seguente
2021-01-17 22_41_49-PAET - VMware Workstation 16 Player (Non-commercial use only).png


analiziamo il comando:
  • dir specifica a gobuster che vogliamo utilizzare la modalità directory bruteforcing​
  • -w sta per wordlist, e dovremo quindi specificargli il percorso alla wordlist che desideriamo utilizzare​
  • -u sta per url, e dovremo quindi specificare l'indirizzo url sul quale vogliamo eseguire l'attacco.​
  • -t sta per threads, e possiamo quindi specificare il numero di thread che vogliamo utilizzare, di default è impostato a 10.(opzionale​
Dando un occhiata all'output che ci ha fornito gobuster, possiamo concludere che il sito con il quale abbiamo a che fare utilizza Wordpress. (possiamo affermare che il sito utilizzi wordpress dalla presenza delle cartelle wp-content, wp-login ecc..)
Ora che sappiamo di aver a che fare con wordpress e ci è stato fornito un file dizionario possiamo presumere che al suo interno ci siano nome utente e password, necessari per effettuare il log in a wordpress.
Per fare ciò possiamo usare diversi metodi e strumenti,

  • Wp-Scan​
  • BurpSuite​
  • Hydra​

In questo caso ho deciso di usarli tutti e 3 in modo che possiate familiarizzare con ognuno di loro.

Per prima cosa navighiamo alla pagina di log in (http://<ip macchina>/wp-login)
inseriamo quindi nei campi username e password “admin:admin”, prima di premere log in apriamo burpsuite e attiviamo il proxy in modo da poter intercettare la richiesta al server, burpsuite ci mostrera questa schermata
2021-01-17 22_47_36-PAET - VMware Workstation 16 Player (Non-commercial use only).png

da qui possiamo identificare i nomi dei due campi username e password che sono rispettivamente log & pwd, con queste informazioni possiamo procedere ed utilizzare Hydra per enumerare gli username validi.

Apriamo quindi un terminale e usiamo Hydra come mostrato nello screen.
2021-01-17 22_51_51-PAET - VMware Workstation 16 Player (Non-commercial use only).png


Per enumerare gli username andremo ad usare per gli user il file fsociety.dic che abbiamo scaricato in precedenza, per la password invece useremo un valore costante, analiziamo ora il comando.
  • -L sta per login, usando il maiuscolo possiamo specificare una lista da utilizzare per gli username, in questo caso abbiamo usato fsociety.dic.​
  • -p sta per password, qui abbiamo usato il minuscolo in quanto andremo a specificare una password statica (test) e non una lista.​
  • <url(ip macchina)> qui specifichiamo l'indirizzo sul quale andremo ad effettuare l'attacco​
  • http-post-form qui specifichiamo il servizio che andremo ad attaccare ed il rispettivo metodo.​
  • /wp-login.php:log=....” qui specifichiamo il percorso al log-in passando i valori ai parametri identificati in precedenza con burpsuite quindi log&pwd. Inoltre passiamo a hydra una stringa “invalid username” la quale fa si che vengano ignorate tutte le risposte contenenti quell' errore, visto che il nostro obbiettivo è quello di enumerare solamente gli username.​
Tornando all'output di hydra vediamo che abbiamo una corrispondenza con lo user Elliot e la password test, questo non significa che la password sia valida in quanto abbiamo filtrato gli errori solo per gli utenti non validi e non anche per le password errate.

A questo punto potremmo usare nuovamente hydra per effettuare il bruteforcing della password, modificando il comando usando elliot come username con l'opzione -l e fsociety.dic come lista di password usando l'opzione -P, senza dimenticarci di modificare anche l'errore da ignorare che in questo caso sarebbe “the password you entered for the user”.
2021-01-17 23_28_37-PAET - VMware Workstation 16 Player (Non-commercial use only).png


Ma come promesso andremo a vedere tutti e 3 i tool elencati in precedenza, quindi per l'ultimo passaggio andremo ad utilizzare Wp-scan.
Prima di procedere però, andiamo a togliere dal file fsociety.dic i doppioni come mostrato nello screen.

2021-01-17 23_23_54-PAET - VMware Workstation 16 Player (Non-commercial use only).png


Possiamo quindi procedere con l'attacco eseguendo il seguente comando
Codice:
wpscan --url http://<ip macchina> --passwords fsociety-uniche.dic  --usernames elliot

dopo un po' dovremmo ricevere in output da wp-scan o hydra la password esatta per l'utente elliot, la quale è E***–****
Ora possiamo effettuare il login, una volta dentro la prima cosa da controllare, e vedere se l'editor del tema è abilitato in quanto ci permetterà di ottenere una reverse shell. Come possiamo vedere dallo screen abbiamo la possibilità di modificare il codice del tema,
2021-01-17 23_37_29-PAET - VMware Workstation 16 Player (Non-commercial use only).png


Nello screen andiamo a modificare la pagina 404.php, ma la procedura può essere fatta per qualsiasi altra pagina es. archives.php ecc.. ora non ci resta che trovare una reverse shell in php ed incollare il codice all'interno dell' editor e salvare la modifica premendo il bottone Update File.

(in caso stiate utilizzando kali o parrot vi basta usare locate php-reverse-shell.php per trovare la posizione del file all'interno del sistema, la quale di default è /usr/share/webshells/php/php-reverse-shell.php, in caso contrario potete copiarne una da pentestmonkey.)
2021-01-17 23_41_04-PAET - VMware Workstation 16 Player (Non-commercial use only).png

copiamo quindi il codice e lo incolliamo dentro l'editor senza dimenticarci di modificare l'indirizzo IP con quello della nostra macchina e la porta in modo che corrisponda con la porta sulla quale metteremo in ascolto netcat.

Come detto quindi mettiamo in ascolto netcat o nel mio caso pwncat
ora ci basterà navigare alla pagina http://<ip macchina>/404.php per ottenere la nostra shell.

Ed ecco la nostra shell
2021-01-17 23_43_44-PAET - VMware Workstation 16 Player (Non-commercial use only).png

A questo punto iniziamo a navigare tra le directory alla ricerca della seconda key, la troviamo in /home/robot
provando a leggere il file ci viene mostrato un errore permission denied.

Vediamo però che oltre al file key2... c'è anche un file chiamato password.raw-md5, contenente una hash, proviamo a craccarla con l'auito del nostro amico John. Apriamo quindi un terminale ed eseguiamo il seguente comando
2021-01-17 23_53_34-PAET - VMware Workstation 16 Player (Non-commercial use only).png

analiziamo il comando:

  • hash è il file cntenente l'hash che abbiamo copiato dal file password.raw-md5
  • --format=Raw-MD5 specifichiamo a john il formato dell' hash
  • --wordlist= specifichiamo a john la wordlist da utilizzare per l'attacco in questo caso riutilizzeremo fsociety.dic
john ci dice che la password è ABCD.... provandola però vediamo che non è corretta, proviamo quindi a trasformarla in caratteri minuscoli con il seguente comando
2021-01-17 23_56_38-PAET - VMware Workstation 16 Player (Non-commercial use only).png

inserendola in minuscolo riusciamo ad accedere come utente robot, e possiamo quindi leggere il file key2-of-3.txt.

A questo punto non ci rimane che eseguire un privilage escalation per ottenere cosi i privilegi di root, visto che per usanza la key-flag finale sicuramente è leggibile solamente da root.
Iniziamo con il vedere se ci sono processi con SUID settato almeno a 4000, per fare ciò eseguiamo il seguente comando
2021-01-18 00_02_47-PAET - VMware Workstation 16 Player (Non-commercial use only).png


dall'output del comando vediamo che nmap ha lo SUID settato, spesso questo viene fatto dagli amministratori di rete in quanto nmap per poter eseguire le scansioni necessita dei permessi di root.

Quest'informazione, ci basta per portare a termine il nostro Priv-Esc, in quanto nmap ha la possibilità di essere eseguito in modo interattivo, e questo ci permette di eseguire quindi una shell avente i permessi di root, come mostrato nello screen qui sopra. Una volta ottenuta la shell possiamo spostarci nella cartella /root/ e leggere la key3-of-3.