_stan
Ominide
4 min. di lettura
Vota 4,5 / 5

Concetti Chiave

  • Il Cross Site Scripting (XSS) consente di eseguire comandi non previsti inserendo direttive nell'URL di pagine web dinamiche.
  • Gli attacchi XSS possono dare origine a link dannosi che sembrano autentici, permettendo il furto di cookie e password.
  • Un esempio pratico mostra come un sito fittizio sia vulnerabile a XSS, permettendo l'esecuzione di codice non autorizzato.
  • Gli attacchi XSS possono essere usati per sottrarre credenziali d'accesso tramite script malevoli integrati nell'URL.
  • Per un attacco riuscito, il codice complesso deve essere caricato su un server locale, con l'URL che punta allo 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.

Indice

  1. Analizziamo un esempio
  2. Vediamo adesso come questo tipo di vulnerabilità può essere sfruttata per violare la privacy
  3. Rischi

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)

Home page sito fittizio

È 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.

URL con parametro name

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

URL con parametro name e tag bold

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 "" nell'url che diventerà:
http://server2.lan/pag.php?name=Andrea

Passaggio script come parametro

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.

Schema uso XSS per violazione privacy

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.

Pagina web con modulo d'inserimento

Scriviamo uno script che salvi in un file di testo qualsiasi parametro gli passiamo.

Codice PHP salvataggio parametro indirizzo

Testiamolo.

Indirizzo web con parametro

Output del keylogger

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.

Codice Javascript del keylogger

Facciamo in modo che il codice sia tutto su una riga.

Codice Keylogger su una sola 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.

Passaggio dell'IP nello script XSS

L'url funzionante contenente l'attacco XSS sarà quindi:
http://server2.lan/pag.php?name=Andrea

Output dei dati registrati dal keylogger

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

  1. Che cos'è il Cross Site Scripting (XSS)?
  2. Il Cross Site Scripting è un tipo di attacco che consente di eseguire comandi non previsti su pagine web dinamiche inserendo direttive nell'URL della pagina.

  3. Quali sono i rischi associati a un attacco XSS?
  4. I rischi principali includono la possibilità di ottenere un link "ufficiale" che può rubare cookies e password, violando così la privacy degli utenti.

  5. Come si può verificare se una pagina è vulnerabile a un attacco XSS?
  6. Si può testare la vulnerabilità modificando l'URL per eseguire comandi non previsti, come cambiare la formattazione del testo o far apparire un pop-up.

  7. In che modo un attacco XSS può violare la privacy degli utenti?
  8. Un attacco XSS può essere utilizzato per sottrarre credenziali d'accesso o altri dati sensibili inviando i dati a uno script esterno tramite un URL manipolato.

  9. Qual è una soluzione per eseguire un codice complesso tramite XSS?
  10. Una soluzione è caricare il codice complesso su un server locale e inserire nell'URL solo il link allo script, facilitando così la cattura dei dati.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community