Cookies%20poisoning - PowerPoint PPT Presentation

About This Presentation
Title:

Cookies%20poisoning

Description:

Title: PowerPoint Presentation Last modified by: Stefano Bistarelli Created Date: 1/1/1601 12:00:00 AM Document presentation format: Presentazione su schermo – PowerPoint PPT presentation

Number of Views:143
Avg rating:3.0/5.0
Slides: 28
Provided by: dmiUnipg
Category:

less

Transcript and Presenter's Notes

Title: Cookies%20poisoning


1
Cookies poisoning
  • Prof. Stefano Bistarelli

C Consiglio Nazionale delle Ricerche Iit
Istituto di Informatica e Telematica - Pisa
Università G. dAnnunzioDipartimento di
Scienze, Pescara
2
Cookies poisoningcookies gessablebroken
authenticationsession hijacking
  • Prof. Stefano Bistarelli

C Consiglio Nazionale delle Ricerche Iit
Istituto di Informatica e Telematica - Pisa
Università G. dAnnunzioDipartimento di
Scienze, Pescara
3
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

4
A3. Broken Authentication
  • Meccanismi di autenticazione non adeguati

5
A3. Broken Authentication (2)
6
A.3 Concetto di gestione della sessione nel
mondo reale
Dipendente Banca A. Ferrari
Mario Rossi
Verifica identità in base alla carta di identità
Num. 33 Firma A.Ferrari
Verifica identità in base al ticket
Meccanismo di autenticazione? Meccanismo di
gestione della sessione? Livello di sicurezza del
sistema?
7
A.3 Gestione della sessione web
--Procedura di autenticazione--
Web Server
Mario Rosssi
1 https//www.mia-banca.it
2 Invio form di autenticazione via HTTPS
3 inserisce username/password via HTTPS
Username/password
--Richieste seguenti--
8
A.3 Furto di identità
Mario Rossi
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 allutente
Se altero la GET HTTP, forgiando il cookie sono
in grado di accedere al contenuto di unaltra
persona
I dati relativi allutenza di Verdi non sono
stati adeguatamente protetti
9
A.3 Errata gestione della sessione - Furto di
identità
10
Review your account
  • Find where the confidential data is

11
So Many Cookies
  • TestSess
  • Site cookie
  • Seg
  • TestPerm
  • ProfileAddressVerified
  • ProfileID
  • MEMUSER
  • USERID
  • SESSIONUSERID
  • PROFILE

12
  • Eliminate each one until the ones that matter are
    left
  • In this case SESSIONUSERID505741
  • Is the number incremental?
  • Keep everything the same except decrement the
    number SESSIONUSERID505740

13
Victorias Secret
  • Victorias 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

Victorias Secret
14
Quale e la soluzione al problema?
  • Suggerimenti ..

15
  • Usare hashing, encryption, nonces, timestamp

16
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.

17
  • 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
  • ltaspLabel ID"lblCookieInfo" runat"server"gtlt/asp
    Labelgtltbr /gt
  • Possiamo usare cookie come input e fare un XSS
    attack come prima!!!
  • (provare a settare come cookie ltscriptgtalert(ciao
    )lt/scriptgt ?

18
  • 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
  • ltpages validateRequest"false"/gt
  • E se lo modifichiamo con lo ltscriptgt . ??
  • Funziona!!! ?
  • Ma su IE no ?

19
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!!!

20
Difesa
  • Controllare i cookies come se fossero un input!!
  • Al solito ltpages validateRequesttrue"/gt
  • A tamper detector
  • Add new item, new class TamperDetector
  • using 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 CheckAndRemoveTamperDetec
    tion(string s)
  • return s
  • public static string GenerateRandomKey()
  • return string.Empty

21
AddTamperDetection
  • public static string AddTamperDetection(string s)
  • byte data Encoding.UTF8.GetBytes(s)
  • byte hash getKeyedHash().ComputeHash(d
    ata)
  • return Convert.ToBase64String(hash) ''
    s
  • static HMACSHA1 getKeyedHash()
  • string skey ConfigurationManager.AppSett
    ings"validationKey"
  • byte key Convert.FromBase64String(skey
    )
  • return new HMACSHA1(key)

22
CheckAndRemoveTamperDetection
  • public static string CheckAndRemoveTamperDetectio
    n(string s)
  • int i s.IndexOf('')
  • if (-1 i) throw new DataTamperingExcept
    ion("Unexpected format.")
  • string prefix s.Substring(0, i)
  • string suffix s.Substring(i 1)
  • byte hash Convert.FromBase64String(pre
    fix)
  • byte data Encoding.UTF8.GetBytes(suffi
    x)
  • byte computedHash getKeyedHash().Compu
    teHash(data)
  • if (!isEqual(hash, computedHash))
  • throw new DataTamperingException("Stri
    ng has been modified!")
  • return suffix
  • static bool isEqual(byte a, byte b)
  • if (a.Length ! b.Length) return false
  • for (int i 0 i lt a.Length i)
  • if (ai ! bi) return false
  • return true

23
GenerateRandomKey
  • Usata per salvare su web.config la chiave per
    fare hash
  • public static string GenerateRandomKey()
  • byte rnd new byte16 // 128 bits
  • new RNGCryptoServiceProvider().GetBytes(rn
    d)
  • return Convert.ToBase64String(rnd)

24
Change to write and read cookie
  • cookie.Value TamperDetector.AddTamperDetection(v
    alue)
  • return TamperDetector.CheckAndRemoveTamperDetecti
    on(cookie.Value)

25
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!"

26
Aggiunta chiave a web.config
  • Aggiungi a Page_Load in Default.aspx
  • lblRandomKey.Text TamperDetector.GenerateRandomK
    ey()
  • Run
  • Copia su web.config la stringa
  • ltappSettingsgt
  • ltadd key"validationKey" value""/gt
  • lt/appSettingsgt

27
  • Se ora modifico i cookie
  • Errore!!! ?
Write a Comment
User Comments (0)
About PowerShow.com