Sicurezza Informatica

Esercitazioni, Competizioni e Test:
LABORATORIO DI SICUREZZA INFORMATICA
a cura di: Francesco (Galt) Faloci
XSS: server side
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?
- Raccolta, manipolazione e reindirizzamento di informazioni riservate
- Visualizzazione e modifica di dati presenti sui Server
XSS: server side
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...
CSRF
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.
- Per fare questo verrà creata una pagina web inviandola a Ted
- Quando Ted si autenticherà all’interno di Collabtive e cliccherà sull’URL mandato da Alice il suo profilo verrà modificato
CSRF
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
CSRF
Tools → Add-ons → Preferences
CSRF
CSRF
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.)
CSRF
CSRF
CSRF
Contromisure
Le contromisure principali sono due:
- Secret-Token
- ID hash
Contromisure
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.
Contromisure
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
Contromisure
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.
Contromisure
ID Hash
PRO: permette più transazioni contemporaneamente, non impedisce flow di modifiche e/o inserimenti
CONTRO: gettone segreto e non "troppo difficile" da reperire
/end

... grazie per l'attenzione.
CSLESS5
By frafolo
CSLESS5
- 167