Monday, January 31, 2011

DVWA: Cross Site Request Forgery (CSRF) Easy

Questo post fa parte della serie DVWA.

Anche questa è una vulnerabilità molto potente. In maniera molto semplice, ci permette di sfruttare i cookie di sessione che rimangono settati nel browser dell'utente, per ottenere indirettamente accesso a pagine o funzioni (più informazioni).

Nella pagina DVWA, è presente un normalissimo form che ci permette di cambiare la password dell'utente. Se proviamo a cambiarla, analizzando l'URL, notiamo che i nostri parametri sono passati nell'URL, es:
http://127.0.0.1:8888/dvwa/vulnerabilities/csrf/?password_new=pippo&password_conf=pippo&Change=Change#

La vulnerabilità non risiede nell'aver messo i parametri come GET, ma nell'avere un URL riproducibile per qualunque utente loggato, poichè non contiene alcun parametro legato all'utente, come l'ID di sessione, o la password vecchia.
Si può pensare di impostare l'attacco in questo modo: se noi sappessimo che il bersaglio è loggato a questo sito e riuscissimo a fargli accedere ad un link come quello sopra, il browser genererebbe una HTTP Request settando il campo Cookie con il cookie di sessione ancora valido, bypassando l'autentificazione (poichè è già avvenuta).
Non è neppure necessario creare un link esplicito, o un redirect, basta una immagine:

<img src="
http://127.0.0.1:8888/dvwa/vulnerabilities/csrf/?password_new=pippo&password_conf=pippo&Change=Change#" width="0" height="0" />

Una immagine 0 per 0, che quando viene valutata il browser inconsciamente si collega alla pagina di cambio password con i parametri settati da noi e con il prorpio Cookie di sessione.

Per testare con efficienza questa vulnerabilità, è meglio testare il link da un server esterno a 127.0.0.1, ad esempio dal proprio blog o dal proprio sito su altervista/google o inviandosi una mail, in questo modo è più realistico (se riuscissimo ad inserire l'immagine sul server del sito web avremmo sfruttato un'altra vulnerabilità.

No comments: