Test delle vulnerabilità CSRF

Un attacco CSRF (Cross Site Request Forgery) sfrutta la logica generalmente accettata dei browser Web per la gestione di una sessione utente in pagine aperte. Lo standard è che un utente può avere una sola sessione attiva nell'applicazione Web che sta attualmente utilizzando. Qualsiasi scheda appena aperta nel browser utilizzerà automaticamente i cookie dell'utente già connesso. L'aggressore utilizza questo fatto il più delle volte inviando alla sua vittima un link appositamente preparato dopo aver fatto clic su quale azione verrà attivata (ad esempio modifiche alla password) nella pagina in cui la vittima ha una sessione attiva.


La protezione contro questo tipo di attacco è più spesso aggiungendo uno speciale parametro univoco e imprevedibile, almeno per sessione, che è associato come variabile alle richieste sensibili (ad esempio cambiando la password, aggiungendo un nuovo utente) e la cui correttezza è verificata dal server. Un utente malintenzionato che non conosce il valore di questo token non è in grado di generare una richiesta che il server non rifiuterà a causa della non conformità del token antiCSRF.


In una delle applicazioni che ho testato, ho scoperto la possibilità di effettuare molti attacchi CSRF. Un esempio è quello di preparare una pagina appositamente creata dopo l'immissione che, da parte dell'utente connesso, verrà effettuata una richiesta di modifica della password per conto dell'utente. Di seguito è riportato il codice di questa pagina, insieme ai parametri responsabili della applicazione della nuova password. Si noti che la riga selezionata nella stampa seguente mostra il codice che definisce il campo del modulo diinput in cui è definita la nuova password.


richiesta di modifica password CSRF Poc

Una richiesta inviata automaticamente che utilizza sessioni dell'utente che ha immesso la pagina sostituita è simile alla seguente:


Host: XXXXX
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
[...]
-----------------------------70124987214088125821572825923
Content-Disposition: form-data; name="newpassword"
csrf
[...]



In risposta, l'applicazione conferma la modifica della password, che viene visualizzata nella schermata seguente:


l'app conferma la modifica della password

Chcesz wiedzieć więcej?

Zapisz się i bądź informowany o nowych postach.

Nigdy nie podam, nie wymienię ani nie sprzedam Twojego adresu e-mail. W każdej chwili możesz zrezygnować z subskrypcji.

Aggiungi ai preferiti : permalink.

Podziel się swoją opinią na temat artykułu