Concetti Chiave
- Il Cross Site Scripting (XSS) consente di eseguire comandi non previsti su pagine web dinamiche tramite modifiche all'URL.
- Un attacco XSS può portare al furto di cookies e password attraverso link che sembrano ufficiali, compromettendo la privacy degli utenti.
- La vulnerabilità di una pagina web può essere testata modificando l'URL per eseguire comandi come la formattazione del testo o l'apertura di pop-up.
- Gli attacchi XSS possono sottrarre credenziali d'accesso inviando dati a script esterni tramite URL manipolati.
- Per eseguire codice complesso tramite XSS, è consigliabile caricare il codice su un server locale e utilizzare l'URL per richiamare lo script.
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 e vulnerabilità XSS
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)
È 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. 
Test di vulnerabilità XSS
png[/img] 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=Andrea [img alt="URL con parametro name e tag bold" width="443" height="287" /> Funziona! La pagina non solo esegue la funzione per cui è stata progettata ma esegue anche dei comandi non previsti.
Inserimento di codice complesso
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 "" nell'url che diventerà:
http://server2.lan/pag.php?name=Andrea
Schema e sottrazione credenziali
png[/img]
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. [img alt="Schema uso XSS per violazione privacy" width="615" height="613" /> 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.
Scriviamo uno script che salvi in un file di testo qualsiasi parametro gli passiamo.
Testiamolo. 

Script keylogger e invio dati
png[/img] 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. [img alt="Codice Javascript del keylogger" width="615" height="355" /> Facciamo in modo che il codice sia tutto su una riga.
Generiamo il link contenente il codice XSS:
http://server2.lan/pag.php?name=Andrea 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.
L'url funzionante contenente l'attacco XSS sarà quindi:
http://server2.lan/pag.php?name=Andrea [img alt="Output dei dati registrati dal keylogger" width="498" height="39"]https://cdn.skuola.net/news_foto/images/stories/informatica/carriero/virus-sicurezza-informatica-xss/terminale-xss-script-output.
Soluzione e diffusione del link
png[/img] 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
Domande da interrogazione
- Cos'è il Cross Site Scripting (XSS) e come funziona?
- Quali sono i principali rischi associati agli attacchi XSS?
- Come si può testare la vulnerabilità di una pagina a un attacco XSS?
- In che modo un attacco XSS può violare la privacy degli utenti?
- Qual è la strategia per rendere efficace un attacco XSS?
Il Cross Site Scripting (XSS) è un attacco che consente a un utente di eseguire comandi non previsti su pagine web dinamiche, inserendo direttive nell'URL della pagina.
I rischi principali includono la possibilità di creare link "ufficiali" che rubano cookies e password, compromettendo la sicurezza degli utenti.
Si può testare modificando i parametri dell'URL, ad esempio, cambiando il nome in un formato che esegue comandi non previsti, come nel caso di un testo in grassetto.
Un attacco XSS può essere sfruttato per sottrarre credenziali d'accesso, utilizzando script che catturano e inviano dati sensibili a un server controllato dall'attaccante.
Per rendere efficace un attacco XSS, è fondamentale diffondere un link che sembri legittimo ma contenga codice dannoso, ingannando gli utenti meno esperti.