Esercitazioni, Competizioni e Test:
LABORATORIO DI SICUREZZA INFORMATICA
a cura di: Francesco (Galt) Faloci
XSS = Cross-site scripting
Vulnerabilità peculiare di Applicazioni Web, siti dal contenuto dinamico o Form di accesso.
Come si individuano le falle? Brute force.
Cosa si può fare?
Cross-Site Request Forgery (CSRF): attacco che forza un utente ad eseguire azioni non volute o dannose su una web application nel quale (eventualmente) non è autenticato
http://www.csrflabcollabtive.com/
Sulla V.M. già installata...
Esercizio
L’obiettivo è lanciare un CSRF usando una richiesta POST tramite l'utente Alice verso l'utente Ted.
Alice deve modificare il profilo di Ted senza che lui lo sappia.
La prima cosa da fare è osservare come funziona la richiesta HTTP edit profile
Per fare questo entriamo con l’account Alice (password: alice!) e creiamo una modifica al suo profilo.
Prima di premere il pulsante "send" andiamo su
Tools → Add-ons → Preferences
... in corrispondenza di Live HTTP heders Questo strumento ci mostrerà come avviene la richiesta HTTP della modifica del profilo
Tools → Add-ons → Preferences
Ora che abbiamo visto come è fatta la richiesta di un
"edit profile" di un utente generico bisogna crearne una per modificare il profilo di Ted...
Creiamo quindi una webpage malevola nel file
/var/www/CSRF/attacker/index.html
Questa pagina è disponibile all'indirizzo (sempre sulla V.M.)
Le contromisure principali sono due:
Secret-Token
Consiste nell'inserire in ogni chiamata (... non solo POST!) un token segreto memorizzato generalmente in altre tabelle dell'applicazione.
Questo gettone ha visibilità solo per le pagine lato server.
Viene generato in modo dinamico tramite una funzione
"ad hoc" che avrà valore solo per quella chiamata e solo per quell'utente.
Quando una nuova chiamata arriverà al servizio, verrà validata solo tramite la corrispondenza di quel gettone.
Secret-Token
PRO: gettone segreto e particolarmente difficile da recuperare all'esterno
CONTRO: permette una sola transazione alla volta; più transazioni potrebbero essere rifiutate o non essere riconosciute
ID Hash
Similarmente al Secret-Token, questa tecnica si basa sulla creazione di una chiave nascosta visibile solo all'applicazione.
In questo caso però, il "gettone" è creato tramite un hash dell'id dell'utente e vari campi interni.
In questo caso, un solo Hash verrà utilizzato per ogni transazione.
ID Hash
PRO: permette più transazioni contemporaneamente, non impedisce flow di modifiche e/o inserimenti
CONTRO: gettone segreto e non "troppo difficile" da reperire
... grazie per l'attenzione.