Continuiamo il nostro viaggio su hackthissite.org proseguendo gli esercizi di hacking del livello base. Per chi avesse perso la prima parte può cliccare qui per vedere le spiegazioni dall’esercizio 1 al 3 del livello di base.
Prima di iniziare, però, ci teniamo a precisare che, sia per nostra scelta che per esplicita richiesta del team di hackthissite.org, non verranno più fornite le soluzioni complete dei test in questione. Abbiamo preso questa decisione per vari motivi che elenchiamo:
- avere la soluzione pronta non ci insegna a ragionare
- imparare il problem solving
- imparare dai nostri errori
- comprendere come, la sicurezza informatica e lo stesso hacking, richiedano tempo e spesso creino una buona dose di frustrazione
- è giusto che ognuno di noi ce la faccia con le proprie forze, costruendosi gli strumenti per arrivare alla propria soluzione: l’intuito e l’inventiva giocano un ruolo estremamente importante in questa materia.
Inoltre, e per concludere questa introduzione, come vedremo qui, spesso e volentieri non esiste una sola soluzione, ma più sentieri da percorrere per arrivare allo stesso scopo.
LEVEL 4
This time Sam hardcoded the password into the script. However, the password is long and complex, and Sam is often forgetful. So he wrote a script that would email his password to him automatically in case he forgot. Here is the script.
[Traduzione: Questa volta Sam ha reso difficilmente decodificabile la password nello script. Comunque sia questa è lunga e complessa e Sam scorda spesso le cose. Quindi ha scritto uno script che invii la password automaticamente alla sua e-mail nel caso la dimenticasse. Ecco lo script].
Guardiamo attentamente gli indizi che ci vengono dati dalla descrizione dell’esercizio: ora, Sam, si è accorto che si poteva accedere allo script facilmente eliminando il problema precedente ma, dimenticandosi la password facilmente, ha dovuto trovare un altro modo per semplificarsi la vita, ovvero inviarsi un’e-mail con il codice per accedere.
Andiamo a controllarci, come sempre l’HTML della pagina cercando di trovare cosa ci interessa. L’e-mail a cui automaticamente viene inviato il codice è sam@hackthisite.org a cui però non abbiamo accesso. Non è possibile risalire alla password dall’HTML, quindi cosa possiamo fare?
I principianti sicuramente non lo sanno ma, l’inspector sui nostri browser ci permette di modificare il testo dell’HTML di una pagina temporaneamente e solo ed esclusivamente per noi: le modifiche che apporteremo non saranno mai effettive; inoltre, aggiornando la pagina scompariranno.
Si tratta quindi di effettuare una commutazione, ovvero una sostituzione affiché la password venga inviata al nostro indirizzo e-mail (attenzione ad utilizzare lo stesso scelto per la registrazione su hackthissite.org e controllate la cartella dello spam perché la password potrebbe trovarsi lì!).
LEVEL 5
Sam has gotten wise to all the people who wrote their own forms to get the password. Rather than actually learn the password, he decided to make his email program a little more secure.
[Traduzione: Sam è diventato più furbo per tutte quelle persone che hanno scritto i propri moduli per avere la password. Anziché impararsi la password, ha deciso rendere il suo programma email un po’ più sicuro]
La soluzione utilizzata al livello 4 coincide con quella del livello 5. Il fatto però che venga sottolineato la presenza di varie persone che hanno messo in atto questo tipo di soluzione ci suggerisce che era possibile ottenere lo stesso risultato con un altro metodo.
Andando nella fonte HTML della pagina, possiamo cancellare la parola “hidden” che coincide con il bottone “Send to Sam” così da far direttamente apparire la sua e-mail sul sito e modificarla da lì.
Oppure, esiste ancora una terza possibilità: ci sono sempre potenziali e differenti sentieri che possiamo intraprendere per arrivare dove vogliamo dipende solamente dalle nostre abitudini e dalla nostra elasticità di pensiero.
C’è un modo, infatti, molto più complicato per un principiante, di passare questo livello ed avviene usando JavaScript injection. Per questo servono delle conoscenze ulteriori di JS e di programmazione prima di dedicarsi al mondo dell’hacking in modo più serio. Più che aprire però dei libri e studiare delle definizioni, la cosa migliore è dedicarsi a degli esercizi di programmazione.
Cos’è JavaScript injection?
Questo è un tipo di attacco, che fa parte del Cross-Site Scripting (XSS), diretto al linguaggio Java. In pratica, e nell’esempio qui riportato, si “inietta” un codice javascript scrivendolo all’interno della barra dell’indirizzo del nostro browser.
Attenzione però a non confondere Java con il linguaggio Javascript: quest’ultimo è un linguaggio di scripting che viene interpretato dal browser e si usa esclusivamente per siti ed applicazioni web.
Nel browser web, il codice che viene eseguito è particolarmente vasto e questo significa che questo tipo di attacco può essere portato a termine in una marea di modi diversi. Si possono leggere e rubare cookies, interferire con una sezione, ridirigere informazioni ad un luogo prescelto, etc.
Questo avviene perché all’interno di una pagina scritta con puro HTML ed escludendo i fogli di stile (CSS), per creare un’interazione e degli effetti dinamici, serve l’uso del linguaggio javascript.
Vediamo, quindi, come mettere in atto il Javascript injection, che nel nostro caso è particolarmente semplice e basilare.
Non daremo la risposta definitiva, ma presenteremo i vari passi che ci permetteranno di arrivare alla soluzione e non fidatevi di molti video che si trovano in rete perché spesso e volentieri si inventano una risposta, mettendo due o tre comandi assieme (a volte anche errati) e fingendo di aver passato il livello senza, in realtà, averlo fatto.
Tutti i comandi andranno scritti nell’URL, ovvero nella barra dove di solito compare l’indirizzo del sito che stiamo visitando. Se utilizziamo Firefox, invece, dovremo andare su Menu, Sviluppo Web, Console web, si aprirà così la stessa finestra dell’HTML dove inserire direttamente i comandi.
Per vedere se un sito web utilizza cookie esiste uno specifico comando:
javascript:alert("scriviamo ciò che preferiamo");
Piccola parentesi: tutto ciò che scriviamo tra le virgolette ” (oppure gli apostrofi ‘, che in programmazione si equivalgono, possiamo modificarlo a nostro piacimento); dobbiamo, inoltre, e sempre ricordarci che ogni parentesi aperta va anche chiusa ed, ovviamente, il punto e virgola a fine stringa.
Il comando sopra riportato, se il sito lo permette, fa comparire una popup mostrando il cookie scritto tra le virgolette. Nel caso la finestra non compaia, sarà meglio controllare le nostre impostazioni e vedere se il nostro browser ci permette di visualizzare cookies (Firefox in questo caso potrebbe dare qualche problema, quindi per sicurezza diamo un’occhiata su Chrome).
javascript:alert(document.forms);
Questo è un comando di inline javascripting, ovvero uno script non aggiunto da un file esterno, ma presente nell’HTML: il nostro scopo infatti è lo stesso di prima, ovvero quello di modificare la famosa e-mail di Sam ed inserire la nostra.
javascript:void(document.forms[X].name.value)="ciò che vogliamo modificare";
Questo comando indica il form che andremo a modificare ed il cui numero è da derivare ed inserire tra parentesi quadre al posto della X. Il fattore name, invece, indica il campo da modificare che dovremo andare a pescare nell’HTML e che si troverà tra virgolette dopo la dicitura name=.
Legando assieme i due comandi, quello per l’alert ed il void, ed inserendo correttamente i dati necessari potremo portare a termine anche la quinta sfida usando questo diverso metodo!
Comincia la discussione