cookies poisoning

27
UNIVERSITÀ DI PERUGIA DIPARTIMENTO DI MATEMATICA E INFORMATICA Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione 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

Upload: berget

Post on 20-Mar-2016

34 views

Category:

Documents


0 download

DESCRIPTION

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 poisoning cookies gessable broken authentication session hijacking. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Cookies poisoning

UNIVERSITÀ DI PERUGIADIPARTIMENTO DI MATEMATICA E INFORMATICAMaster di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Cookies poisoning

Prof. Stefano Bistarelli

C Consiglio Nazionale delle RicercheIit Istituto di Informatica e Telematica - Pisa

Università “G. d’Annunzio”Dipartimento di Scienze, Pescara

Page 2: Cookies poisoning

UNIVERSITÀ DI PERUGIADIPARTIMENTO DI MATEMATICA E INFORMATICAMaster di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Cookies poisoningcookies gessablebroken authenticationsession hijacking

Prof. Stefano Bistarelli

C Consiglio Nazionale delle RicercheIit Istituto di Informatica e Telematica - Pisa

Università “G. d’Annunzio”Dipartimento di Scienze, Pescara

Page 3: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

3

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

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

Page 4: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

4

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Meccanismi di autenticazione non adeguati

A3. Broken Authentication

Page 5: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

5

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

A3. Broken Authentication (2)

Page 6: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

6

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

A.3: Concetto di “gestione della sessione” nel mondo reale Dipendente

BancaA. Ferrari

Mario Rossi

Carta di identità Mario Rossi

Buongiorno Mario RossiTicket #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

Page 7: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

7

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

[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 mittenteInvio del contenuto al DEST

Username/password

[5] Richiesta dell’estratto CC (https://www. mia-banca.it/cont.jsp)Cookie=TWFyaW8123

A.3: Gestione della sessione web

Page 8: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

8

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

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:

TWFyaW8122Identifica il mittente Paolo VerdiInvio 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)

A.3: Furto di identità

Per implementare una corretta gestione delle sessioni è necessario proteggereproteggere sia le credenziali di credenziali di autenticazioneautenticazione di un utente che i token di sessionetoken di sessione generati dal server ed assegnati all’utente

Page 9: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

9

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della ComunicazioneA.3: Errata gestione della sessione - Furto A.3: Errata gestione della sessione - Furto di identità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.RossiCookie:aefdsg6757nb92 ; G.VerdiCookie:aefdsg6757nb9? ; V.Bianchi

Page 10: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

10

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Review your account

Find where the confidential data is

Page 11: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

11

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

So Many Cookies

TestSess ‘Site cookie’ Seg TestPerm ProfileAddressVerified ProfileID MEMUSER USERID SESSIONUSERID PROFILE

Page 12: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

12

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

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’

Page 13: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

13

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

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

Victoria’s Secret

Page 14: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

14

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Quale e’ la soluzione al problema?

Suggerimenti ..

Page 15: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

15

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Usare hashing, encryption, nonces, timestamp

Page 16: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

16

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

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.

Page 17: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

17

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

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: <asp:Label ID="lblCookieInfo" runat="server"></asp:Label><br />

Possiamo usare cookie come input e fare un XSS attack come prima!!! (provare a settare come cookie <script>alert(‘ciao’)</script>

Page 18: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

18

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

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: <pages validateRequest="false"/>

E se lo modifichiamo con lo <script> …. ?? Funziona!!! Ma su IE no

Page 19: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

19

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Perche? IE ha un controllo sulla lunghezza dei

cookies Ma ora lo bypassiamo Usiamo tool per editare cookies

iecv.zip Altro problema i caratteri Bypassiamo

Usiamo X al posto dei caratteri vietati e popi editiamo a mano il file!!

FUNZIONA!!!

Page 20: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

20

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Difesa: Controllare i cookies come se fossero un input!!

Al solito <pages validateRequest=“true"/> A tamper detector:

Add new item, new class TamperDetectorusing System;using System.Text;using System.Security.Cryptography;using System.Configuration;public class TamperDetector { public static string AddTamperDetection(string s) { return s; } public static string CheckAndRemoveTamperDetection(string s) { return s; } public static string GenerateRandomKey() { return string.Empty; }}public class DataTamperingException : Exception { public DataTamperingException(string msg) : base(msg) {}}

Page 21: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

21

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

AddTamperDetection public static string AddTamperDetection(string s) { byte[] data = Encoding.UTF8.GetBytes(s); byte[] hash = getKeyedHash().ComputeHash(data); return Convert.ToBase64String(hash) + '|' + s;

} static HMACSHA1 getKeyedHash() { string skey =

ConfigurationManager.AppSettings["validationKey"]; byte[] key = Convert.FromBase64String(skey); return new HMACSHA1(key); }

Page 22: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

22

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

CheckAndRemoveTamperDetection public static string CheckAndRemoveTamperDetection(string s) {

int i = s.IndexOf('|'); if (-1 == i) throw new DataTamperingException("Unexpected format."); string prefix = s.Substring(0, i); string suffix = s.Substring(i + 1); byte[] hash = Convert.FromBase64String(prefix); byte[] data = Encoding.UTF8.GetBytes(suffix); byte[] computedHash = getKeyedHash().ComputeHash(data); if (!isEqual(hash, computedHash)) throw new DataTamperingException("String has been modified!"); return suffix;

} static bool isEqual(byte[] a, byte[] b) { if (a.Length != b.Length) return false; for (int i = 0; i < a.Length; ++i) if (a[i] != b[i]) return false; return true; }

Page 23: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

23

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

GenerateRandomKey Usata per salvare su web.config la chiave per

fare hash public static string GenerateRandomKey() { byte[] rnd = new byte[16]; // 128 bits new RNGCryptoServiceProvider().GetBytes(rnd); return Convert.ToBase64String(rnd);

}

Page 24: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

24

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Change to write and read cookie cookie.Value = TamperDetector.AddTamperDetection(value);

return TamperDetector.CheckAndRemoveTamperDetection(cookie.Value);

Page 25: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

25

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Gestione ecc su displaycookie Cambia displaycookie per gestire eccezione

void displayCookie() { try { 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; } } catch (DataTamperingException) { lblCookieInfo.Text = "Cookie has been tampered with or corrupted!"; } }

Page 26: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

26

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Aggiunta chiave a web.config Aggiungi a Page_Load in Default.aspx

lblRandomKey.Text = TamperDetector.GenerateRandomKey(); Run:

Copia su web.config la stringa<appSettings> <add key="validationKey" value=""/></appSettings>

Page 27: Cookies poisoning

S. Bistarelli - Metodologie di Secure Programming

27

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione

Se ora modifico i cookie Errore!!!