CSRF funziona quando il sito di destinazione non è aperto in una scheda?

6

Questo è uno scenario di attacco di esempio di OWASP per CSRF

The application allows a user to submit a state changing request that does not include anything secret. For example:

http://example.com/app/transferFunds?amount=1500&destinationAccount=4673243243

So, the attacker constructs a request that will transfer money from the victim’s account to the attacker’s account, and then embeds this attack in an image request or iframe stored on various sites under the attacker’s control:

<img src="http://example.com/app/transferFunds?amount=1500&destinationAccount=attackersAcct#“width="0" height="0" />

If the victim visits any of the attacker’s sites while already authenticated to example.com, these forged requests will automatically include the user’s session info, authorizing the attacker’s request.

Tuttavia non capisco l'ultimo paragrafo. Se accedo ad un account su example.com e poi esco dalla pagina web senza disconnettermi, e ora visito il sito dell'attaccante, funziona questo attacco? O per funzionare, è necessario che io sia sul sito?

    
posta yzT 14.06.2013 - 16:38
fonte

3 risposte

9

Quando accedi a example.com , il tuo browser memorizza un token di sessione in un cookie. Questo token di sessione identifica in modo univoco la sessione di accesso con example.com . Ogni volta che il tuo browser invia una richiesta a example.com , quella richiesta include i tuoi dati del cookie example.com , incluso il tuo token di sessione univoco.

Tenendo questo a mente, considera il fatto che una pagina Web può far sì che il tuo browser tenti di recuperare qualsiasi risorsa sul Web , ad esempio attraverso <img> o <iframe> tag. Se una pagina include un tag che chiede al browser di recuperare una pagina da example.com , il recupero includerà le informazioni sulla sessione. La richiesta viene eseguita nel contesto della sessione di accesso (ad esempio, il recupero viene eseguito come account utente example.com connesso).

Se il recupero della risorsa example.com causa qualche azione , allora tu (e il sito) sei vittima di un attacco CSRF.

Per rispondere direttamente alla tua domanda: no, non è necessario avere una pagina example.com aperta; devi solo avere un token di sessione example.com valido nei tuoi cookie.

    
risposta data 14.06.2013 - 16:53
fonte
4

La vittima non ha bisogno di avere quel sito aperto.

La vittima ha un cookie che lo autentica su example.com ; quando il browser della vittima richiede l'URL nel tag img, invierà il cookie example.com nell'intestazione alla richiesta.

Nella visualizzazione di questa risposta, il tuo browser ha inoltrato una richiesta a wikimedia.org , indipendentemente dal fatto che tu stia navigando separatamente o meno quel sito:

È lo stesso principio all'opera nell'esempio OWASP, ma piuttosto che un'immagine, stai eseguendo un'azione (autenticata) su example.org .

    
risposta data 14.06.2013 - 16:40
fonte
0

Se il cookie è un cookie persistente, il sito di destinazione non deve essere aperto.

Se il cookie è un cookie di sessione, l'utente deve autenticarsi con il sito di destinazione una volta per creare il cookie. Ogni volta che l'utente chiude il browser, il cookie di sessione viene perso.

In generale, il browser richiede il cookie per il sito di destinazione.

    
risposta data 09.01.2014 - 11:06
fonte

Leggi altre domande sui tag