Ciao Ragazzi,
oggi torniamo alle orgini…vediamo un po’ di nozioni di Hacking che ovviamente servono per difendersi e non per attaccare(lo so non sono convincente quando lo dico……..!!!)
Parliamo del Cross Site Scripting (XSS)
Per chi non lo conosce vi posso dire che è un insieme di tecniche che mirano a sfruttare delle vulnerabilità presenti nel codice HTML/JAVASCRIPT ma soprattutto dovute a chi interpreta queste pagine ovvero i nostri amatissimi Browser!
Queste pagine web, generalmente client-side, presentano delle malformazioni nel codice, ma non perchè chi le ha programmate non ha fatto un buon lavoro, semplicemente c’è stato qualcuno più furbo che ha capito come aggirare l’interprete di queste pagine ovvero il browser.
Prima di passare subito ai casi pratici vi faccio un esempio classico di SQL Injection ( che è un XSS relativo al linguaggio SQL):
In questo caso ho aggirato il codice SQL per ottenere l’accesso anche senza conoscere username o password.
Nel caso dell’XSS la cosa è molto simile, quello che bisogna fare è un buon debug delle pagine internet:
Come vedere un questo caso inserendo un carattere non standard posso creare “casini” sul sistema che interpreta la pagina web.
Questi caratteri “speciali” o di “escape” forniscono delle vere e proprie porte di accesso al browser e quindi alla connessione che si crea tra client e server:
Come potete notare in questo caso l’Attacker si “sostituisce” al browser del client per ingannare il server e quindi usarlo per capire diverse informazioni che possono essere cruciali.
Oggi vi presento un esempio semplicissimo, in realtà ne esistono diversi a secondo dei livelli di protezione alzati dai programmatori!
Useremo come test 2 siti:
1) http://it.eonline.com
2) http://www.paolodaniele.it
Mi sfido da solo!
Vediamo cosa succede se provo a forzare la stringa di ricerca del sito 1)
Il sito “Miagola”…Se vedete adesso la barra degli indirizzi, capirete la mia XSS:
it.eonline.com/search?query=“; alert(‘Miao’); //
Avete visto la stringa utilizzata?
In questo modo quando il browser rigenera la pagina con il nuovo “indirizzo” che gli passo io esegue il codice di alert. e quindi compare il popup che “Miagola!”
Complichiamo leggermente le cose, andando a far scrivere qualche variabile Javascript codificata nel sistema:
Nel secondo caso il cross script XSS è:
it.eonline.com/search?query=“; alert(JSON.stringify(model,null,4)); //
Dove model è una matrice definita nei sorgenti del sito.
In realtà tutte queste azioni sono state effettuate client-side, io devo insegnare a difendervi…ad attaccare ce ne sono già troppi che insegnano; ma il concetto è simile con un po’ di “studio” sul sito web sarebbe possibile carpire informazioni di configurazione, dati di utenti e così via fino agli Hijack delle sessioni tramite cookie.
Ma….
Il sito 2) ?
Non l’ho dimenticato…
Ecco il risultato della seconda XSS sul mio sito web:
Nessun popup, alert o robe del genere.
Spesso non dipende solo dalla bontà del CMS usato, ma dall’accortezza di chi lo utilizza!!
Fate buon uso di queste informazioni programmatori!
Per chi fosse interessato ad approfondire l’argomento, vi consiglio le slide di Ashar Javed un vero Guru dell’XSS dove spiega anche come aggirare i browser moderni!