Getting Root: Kioptrix livello 1
Questa è la prima puntata di ‘Getting Root’, una serie di tutorial che mostrano come compromettere macchine preparate ad hoc, per testare la parte di sicurezza offensiva e prepararmi al secondo tentativo di OSCP.
Prologo
Ci eravamo lasciati un mese fa con il racconto della lezione impartita dal primo fallimento all’esame per l’OSCP.
Nel corso di questo mese, mentre decidevo di quanti giorni estendere il laboratorio, ho letto che il tasso di promozione è abbastanza basso, 4%.
Mi sono quindi detto «bene Paolo, sei proprio un grande xxx. Se non avessi trascurato il report del laboratorio e gli esercizi, forse avresti tirato su quei 5 punti mancanti…».
Visto che coi se e coi ma non si fa la storia, l’esame è da ripetere e quindi, sotto con la preparazione.
Kioptrix Livello 1
Potendo scegliere con cosa partire, ho preferito curare l’autostima intaccata dalla bocciatura al fil di lana, ed iniziare l’allenamento con qualcosa di semplice: una Kioptrix, Livello 1
Questa macchina virtuale è un box Linux su cui è montata una distribuzione RedHat obsoleta, con software vulnerabile, pensata proprio per essere bucata.
Nel mio percorso di avvicinamento al secondo tentativo per l’OSCP, mi sono prefissato di simulare le condizioni di esame evitando quindi di usare Metasploit, eccezion fatta per i tool come msfvenom, semplicemente fondamentale.
Setup dell’ambiente
Per iniziare, ho scaricato la macchina virtuale e configurato VirtualBox affinché esegua la mia Kali Linux e la macchina target in una rete ad hoc, isolata dal mondo esterno.
Questo si ottiene andando sulle preferenze di Virtual Box, selezionando Network ed il tab Host-only networks.
Ora che tutte le macchine, all’avvio, prenderanno un indirizzo sulla 192.168.56 possiamo partire.
La macchina 192.168.56.101 è una Kali Linux aggiornata e pronta all’uso. Qui non si fanno favoritismi, tutti i passaggi li potete seguire con un Linux a scelta, con un Mac OS X o, se volete, anche con un Windows e l’ambiente Cygbin.
La macchina 192.168.56.102 è il target.
Recon
Il primo passaggio è quello di enumerare i servizi in ascolto sulla macchina, per cercare di capire qualcosa in più.
Abbiamo quindi, su questa macchina, un demone SSH, un server web (in ascolto sia su protocollo HTTP che HTTPS), alcuni servizi RPC e Samba. Le versioni sono tutte obsolete e pensate per essere bucate.
L’unica informazione che mi manca, dal primo giro di nmap, è la versione di SAMBA in esecuzione. Usando il tool smbclient, riesco a rilevare che si tratta della versione 2.2.1a.
Exploit
SAMBA
Versioni dei servizi alla mano, proviamo a vedere se c’è qualche exploit pubblico che possiamo sfruttare. Prima di cercare su Internet, proviamo a chiedere a searchexploit.
searchexploit è un tool disponibile nel pacchetto exploitdb, presente sulla distribuzione Kali Linux. Con searchexploit è possibile fare una ricerca offline degli exploit disponibili per un certo software e pubblicati su exploit-db.com.
Essendo un test in preparazione all’OSCP, una regola che mi sono dato è: niente Metasploit ad esclusione di msfvenom ed eventualmente pattern_match e pattern_create.
Ho scaricato quindi l’exploit 22470.c dall’archivio locale del pacchetto exploit_db e, senza bisogno di modifiche una volta compilato ed eseguito, una shell di root è apparsa sotto ai miei polpastrelli.
La flag era nella mailbox.
mod_ssl
Chi ha creato questa macchina virtuale ha specificato esserci più modi per ottenere una shell di root. Proviamo a passare da mod_ssl che, in questa versione, è vulnerabile ad una remote code execution.
Aprendo l’exploit, vediamo una nota, aggiunta a posteriori che ci rimanda a questo post dove possiamo seguire le istruzioni per una corretta compilazione.
Ho fatto un’ulteriore modifica all’exploit. Ad un certo punto, alla riga 666, si fa il download di un exploit che sfrutta una vulnerabilità nei vecchi kernel di Linux e che permette una privilege escalation locale.
Visto che le macchine del mio laboratorio non possono uscire su Internet, ho caricato sulla Kali l’exploit e l’ho spostato nella /var/www/html in modo da poterlo servire via HTTP.
Dopo le modifiche, il nostro exploit si compila senza neanche un warning ed è pronto per essere eseguito.
Lanciato l’exploit, abbiamo i due stadi dell’attacco: la shell locale e l’upload dell’exploit per la privilege escalation che ci regala una shell di root .
Off by one
Questa era una macchina semplice. Sicuramente molto lontana da quelle che ho trovato durante l’esame. Mi serviva però qualcosa per aumentare un po’ l’autostima. Root alla mano, siamo pronti per una seconda macchina con cui allenarci…
Enjoy it!
Vuoi aiutarmi a portare avanti il progetto Codice Insicuro con una donazione? Fantastico, allora non ti basta che premere il pulsante qui sotto.
Supporta il progetto