Vulnhub: unknowndevice64

Tempo di lettura: 7 minuti

Durante la mia preparazione per la certificazione OSCP inizierò a testare un pò di macchine di Vulnhub per esercitarmi e cercare di violare quanti più sistemi possibili per imparare il più possibile, questa è solo la prima della lista!

Come sempre, per chi fosse la prima volta che legge un Walkthrough di questo genere, consiglio Kioptrix 1, in cui vengono elencati i passi fondamentali da compiere per violare un dispositivo di questo tipo.

Scansione

Dopo aver identificato l’indirizzo IP della macchina virtuale eseguendo

┌─[mrtouch@parrot]─[~/Desktop/RedTeam/vulnhub/hidden]
└──╼ $sudo netdiscover -i wlan0

eseguo una scansione tramite nmap, per identificate tutte le porte aperte

┌─[✗]─[mrtouch@parrot]─[~/Desktop/RedTeam/vulnhub/hidden]
└──╼ $nmap -p- -sT --script vuln,discovery 192.168.1.130 
Nmap scan report for 192.168.1.130
Host is up (0.0032s latency).
Not shown: 65533 closed ports
PORT      STATE SERVICE
1337/tcp  open  waste
|_banner: SSH-2.0-OpenSSH_7.7
31337/tcp open  Elite

Vediamo che sulla 1337 è presente un servizio SSH, mentre per verificare cosa c’è sulla 31337 provo con un browser.

Footprinting ed enumerazione

Web Server online sulla porta in esame
Web Server online sulla porta in esame

Visto che la pagina non ci dice molto, provo a guardare il codice sorgente, trovando un utilissima informazione

Commento all'interno del codice sorgente
Commento all'interno del codice sorgente

Andando ad intuizione, provo a navigare sul path presente nel commento e trovo un’immagine decisamente criptica..

Immagine scaricata dal server
Immagine scaricata dal server

Dopo essere impazzito cercando di cambiare le tonalità dei colori o cercando stringhe nascoste all’interno della stessa, mi è venuto in mente che potesse contenere un messaggio stenografato!

Visto che tempo fa avevo pure scritto un articolo per guidare all’analisi di stringhe nascoste all’interno di file con un processo di steganalisi, provo ad utilizzare il tool steghide, inserendo come password l’unica parola colorata della pagine web: h1dd3n

Stringa estratta dall'immagine
Stringa estratta dall'immagine

Ammetto che la stringa inizialmente mi ha bloccato completamente, non avevo la più pallida idea di come decodificarla..dopo un po' di ricerche sono incappato nel grandioso linguaggio Brainfuck, e tramite il sito El Brainfuck sono riuscito a decodificarlo.

Decodifica da Brainfuck
Decodifica da Brainfuck

Visto che sono una coppia di credenziali, la prima cosa che mi viene in mente è quella di utilizzarle per connettermi alla porte 1337, sulla quale è presente un servizio ssh.

Accesso alla shell

Connessione ssh attiva
Connessione ssh attiva

Dopo aver eseguito qualche comando, inizio a pensare che qualcosa non andasse, poichè la maggior parte dei comandi era bloccata..

Comandi bloccati su ssh
Comandi bloccati su ssh

Stampando la tipologia di shell, capisco che non è una shell normale ma rbash, ossia una shell ristretta che non permette di eseguire certe tipologie di comandi definiti su una serie di regole.

Dopo aver provato alcuni dei classici metodi per eseguire una shell, come:

  • python -c ‘import pty; pty.spawn("/bin/bash")’  
  • /usr/bin/awk ‘BEGIN {system("/bin/bash")}’
  • echo os.system('/bin/bash')

ho provato tramite vi. Vi, uno dei più famosi editor di testo di Unix, permette di eseguire comandi di shell utilizzando il comando !/bin/bash -i.

Privilege escalation

Una volta ottenuta una shell bash, provo a vedere se l’utente con cui mi sono loggato ha il permesso di eseguire comandi con permessi di amministrazione, tramite il comando

bash-4.4$ /usr/bin/sudo -l
User ud64 may run the following commands on unknowndevice64_v1:
    (ALL) NOPASSWD: /usr/bin/sysud64

Per capire che tipo di programma è, lo eseguo effettuando un redirect a un file, in quanto la shell bash che ho ottenuto non è completa e certi comandi ancora non posso eseguirli

bash-4.4$ /usr/bin/sysud64 -h > help
Help visualizzato tramite vi
Help visualizzato tramite vi

Strace è un utility di Linux che permette di tracciare le system call di un programma, una sorta di debugger in sostanza. Visto che posso eseguirlo con i permessi di root, gli attacco una shell con il comando

/usr/bin/sudo /usr/bin/sysud64 -f -D /bin/bash

dove l’opzione -f serve per seguire eventuali fork, mentre -D per staccare il processo avviato da strace

Root ottenuta!
Root ottenuta!
Flag presente in home
Flag presente in home

Conclusioni

Penso sia stata una delle macchine di vulnhub più fantasiose che abbia mai visto, ma è stata una sfida interessante, specialmente per quanto riguarda l’immagina steganografata e il decoding della stringa econdata in Brainfuck. Speriamo che la prossima sia più simile alle macchina dell’OSCP!