giovedì 1 novembre 2012

OverTheWire Natas level 0-10 writeup

Sul sito OverTheWire è apparso da qualche giorno un nuovo wargame, chiamato appunto natas, che secondo me è molto carino ed utile per sperimentare qualche tecnica sulle app web che sono il mio punto debole(o il mio punto più debole)...

Così mi sono cimentato con i primi 10 livelli, che variano con difficoltà crescente... Come per tutti i wargames della OTW conviene sempre leggere le pagine iniziali più quelle relative ad ogni livello(che possono eventualmente presentare qualche informazione utile)... Nella prima pagina si trova questo:

Natas teaches the basics of serverside web-security.
Each level of natas consists of its own website located at http://natasX.natas.labs.overthewire.org, where X is the level number. There is no SSH login. To access a level, enter the username for that level (e.g. natas0 for level 0) and its password.
Each level has access to the password of the next level. Your job is to somehow obtain that next password and level up. All passwords are also stored in /etc/natas_webpass/. E.g. the password for natas5 is stored in the file /etc/natas_webpass/natas5 and only readable by natas4 and natas5.

Quindi niente SSH, e le password sono in /etc/natas_webpass/... Sono informazioni importanti ed utili(soprattutto la seconda)... E ci indica anche la strada per iniziare:

Start here:
Username: natas0
Password: natas0
URL: http://natas0.natas.labs.overthewire.org

Ed è appunto il primo passo da fare... Io ho risolto i primi 10 livelli con l'aiuto sia di strumenti con interfaccia grafica che con la command-line... La parte con interfaccia grafica può essere più utile per visualizzare ordinatamente alcune informazioni, ma ho voluto usare questi primi livelli per imparare meglio le potenzialità di curl  che si può definire brevemente come un browser da command-line... Ed è pure molto potente... Ringrazio g0tmi1k per aver dimostrato più volte nei suoi tutorial l'uso di questo tool(seguitelo per imparare qualcosa)...

E ringrazio raidersec  per il suo livello10, che mi ha aiutato a conoscere ed informarmi sulle wildcards di grep...

E' meglio però cliccare sul link originale perchè in questo riquadro non vengono rispettati gli invii, quindi meglio cliccare su questo link:

http://pastebin.com/nBd2JCQi

Una breve spiegazione per ogni livello:

-Livello 0
Semplicemente andiamo a leggere il sourcecode della pagina e tramite grep visualizziamo solo il commento HTML con la password
-Livello 1
curl non viene bloccato dal tasto destro, perchè non ha tasti, quindi è uguale a prima... Con un browser(tipo firefox) il tasto destro sarebbe bloccato
-Livello 2
Questo livello ci mostra l'indirizzo di un'immagine... All'inizio credevo di dover cercare nell'immagine(con hexdump) ma poi invece ho trovato il file dentro alla cartella dell'immagine(visto che con hexdump l'immagine non dava informazioni)
-Livello 3
In questo livello nel codice sorgente è espressamente indicato Google, e Google indicizza i siti tramite il file robots.txt presente nella root... Questo era un livello facile se già si era entrati in contatto con i wargames della OTW... Si trova quindi nascosta questa cartella s3cr3t con all'interno il file users.txt
-Livello 4
Questo livello richiedeva che il referer fosse uguale a quello indicato... Si poteva fare con TamperData e Firefox, ma con curl è stato veramente semplice grazie all'opzione --referer(e quante altre opzioni utili ha curl)
-Livello5
Anche questo livello si risolve con curl più semplicemente che con un browser con interfaccia grafica... Richiede la modifica di un cookie, dal valore 0 ad 1... L'opzione -b serve appunto a questo...
-Livello6
Il livello 6 secondo me è simile al livello 2, dove all'interno del sourcecode si trovano le informazioni necessarie... Infatti nel file all'indirizzo relativo includes/secret.inc è contenuta la parola segreta da inviare... Ho usato sempre curl per il form post con l'opzione --data per inserire i dati, concatenandolo al grep per visualizzare solo la parte relativa alla password
-Livello 7
Dal codice della pagina si vede che forse la pagina è vulnerabile al LFI, inserendo abbastanza ../ da risalire la struttura... Ho poi incluso il file relativo a natas8, per trovare la password
-Livello 8
Qui ho usato python da riga di comando... Quello che si doveva fare era decodificare la parola encodata... Però ragionando inversamente, un po' come si fa con le funzioni matematiche(ho notato che Steven Van Acker usa molto la matematica)... Con python è molto veloce risolvere il problema e passare la parola a curl, come fatto nel livello 6
-Livello 9
Questo livello era più semplice risolverlo con Firefox, piuttosto che con curl, ma ho riportato solo il procedimento con curl... La vulnerabilità stava nel codice php ed all'uso di passthru(simile a exec)... Concatenando il comando grep con il cat si visualizza la password... Per concatenare comandi in passthru si usa il punto e virgola ;(all'inizio usavo il && come in bash, poi ho cercato il perchè non funzionasse)... Questa vulnerabilità era già presente in un altro wargames sempre di OTW...
-Livello 10
Qui si doveva sempre sfruttare la vulnerabilità presente nel passthru, ma questa volta l'input era molto filtrato... Ma usando appunto come citato prima le wildcards di grep si poteva aggirare il problema...

Nessun commento: