Cookies poisoning Prof. Stefano BistarelliC Consiglio Nazionale delle Ricerche
Iit Istituto di Informatica e Telematica - Pisa Università “G. d’Annunzio”Dipartimento di Scienze, Pescara
Cookies poisoning Prof. Stefano Bistarelli
C Consiglio Nazionale delle Ricerche
Iit Istituto di Informatica e Telematica - Pisa Università “G. d’Annunzio”Dipartimento di Scienze, Pescara
Cookies poisoningcookies gessablebroken authenticationsession hijacking Prof. Stefano Bistarelli
C Consiglio Nazionale delle Ricerche
Iit Istituto di Informatica e Telematica - Pisa Università “G. d’Annunzio”Dipartimento di Scienze, Pescara
A3. Broken Authentication e Session Management
Processo di autenticazione
Meccanismo di autenticazione implementato non adeguato
Gestione delle sessioni web
HTTP protocollo stateless: è necessario implementare una corretta gestione delle sessioni
A3. Broken Authentication
Meccanismi di autenticazione non adeguati
A3. Broken Authentication (2)
A.3: Concetto di “gestione della sessione” nel mondo reale
Dipendente Banca
A. Ferrari Mario Rossi Carta di identità Mario Rossi Buongiorno Mario Rossi
Ticket #33 Verifica identità in base alla carta di identità Ticket #33: mi dia 1000 euro dal mio conto Tenga 1000 euro Sig. Rossi Verifica identità in base al ticket Meccanismo di autenticazione?
Meccanismo di gestione della sessione?
Livello di sicurezza del sistema? Num. 33
Firma: A.Ferrari
A.3: Gestione della sessione web
[1] https://www.mia-banca.it [2] Invio form di autenticazione via HTTPS [3] inserisce username/password via HTTPS [4] Welcome page personale e
Set Cookie=TWFyaW8123 Mario Rosssi Web Server
--Richieste seguenti-- --Procedura di autenticazione-- Verifica credenziali: se ok client autenticato
Generazione del cookie [6] Invio del contenuto Token di autenticazione Cookie=TWFyaW8123 Verifica del cookie:
Identifica il mittente
Invio del contenuto al DEST Username/password [5] Richiesta dell’estratto CC (https://www. mia-banca.it/cont.jsp) Cookie=TWFyaW8123
A.3: Furto di identità
Se altero la GET HTTP, “forgiando” il cookie sono in grado di accedere al contenuto di un’altra persona [6a] Invio del contenuto di Paolo Verdi Verifica del cookie:
TWFyaW8122
Identifica il mittente Paolo Verdi
Invio del contenuto di Paolo Verdi al destinatario Mario Rossi Mario Rossi I dati relativi all’utenza di Verdi non sono stati adeguatamente protetti Cookie=TWFyaW8122 [5a]Richiesta dell’estratto CC (https://www. mia-banca.it/cont.jsp)
Per implementare una corretta gestione delle sessioni è necessario proteggere sia le credenziali di autenticazione di un utente che i token di sessione generati dal server ed assegnati all’utente
A.3: Errata gestione della sessione - Furto di identità Cookie poisoning
Alterando campi forniti al client tramite un cookie (stato), un attaccante puo’ impersonare un utente per accedere a servizi web.
Cookie: lang=en-us; ADMIN=no; y=1 ; time=10:30GMT ;
Cookie: lang=en-us; ADMIN=yes; y=1 ; time=12:30GMT ;
Cookie guessable
Cookie:aefdsg6757nb90 ; M.Rossi
Cookie:aefdsg6757nb92 ; G.Verdi
Cookie:aefdsg6757nb9? ; V.Bianchi
Credenziali di autenticazione = Token di autenticazione !!!
Eliminate each one until the ones that matter are left
In this case ‘SESSIONUSERID=505741’
Is the number incremental?
Keep everything the same except decrement the number – ‘SESSIONUSERID=505740’
Victoria’s Secret
Victoria’s Secret Victoria’s Secret, November 27, 2002
Order ID parameter in the order status page
Order status page bound to your session, but not the parameters
$50,000 fine and publicity in 2003
Quale e’ la soluzione al problema?
Suggerimenti ..
Usare hashing, encryption, nonces, timestamp
Lab:
In this scenario, you have a public-facing web application accepts anonymous requests from the Internet. Cookies are used to store state on the client machines, but the cookies are being tampered with by malicious users, leading to possible cross-site scripting attacks and general data tampering mischief.
Controllando codice:
Page_load chiama display_cookie
string cookieValue = readCookie();
if (null == cookieValue) {
lblCookieInfo.Text = "No cookie was found.";
}
else {
// Note that there is an XSS vulnerability here.
// The user can change the contents of any cookie!
lblCookieInfo.Text = "Cookie found: " + cookieValue;
}
Su tag:
Possiamo usare cookie come input e fare un XSS attack come prima!!!
(provare a settare come cookie
Modifichiamo cookie in black
Per IE andare sotto
C:\Documents and Settings\Stefano Bistarelli\Cookies
Per firefox
C:\Documents and Settings\Stefano Bistarelli\Dati applicazioni\Mozilla\Firefox\Profiles
Nota:
E se lo modifichiamo con lo
Comments