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.

  1. Per fare questo verrà creata una pagina web inviandola a Ted
  2. 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.)


http://www.csrflabattacker.com
 

CSRF

CSRF

CSRF

Contromisure

Le contromisure principali sono due:

 

  1. Secret-Token
     
  2. 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