Tuesday, February 1, 2011

DVWA: Cross Site Request Forgery (CSRF) Medium

Questo post fa parte della serie DVWA.

(
DVWA: Cross Site Request Forgery (CSRF) Easy)

Provando lo stesso giochino dell'easy (un link da un sito esterno verso la pagina di cambio password), non otteniamo il risultato sperato.

Possiamo ipotizzare che il webmaster abbia inserito degli strumenti di protezione, ma forse (per nostra fortuna) non i più efficaci (tokenizzare la sessione inviando il token come parametro, chiedere la password corrente...). Con un po' di guessing si può intuire che il webmaster faccia un controllo sul referrer.

Il referrer è un campo dell'header http che indica la pagina da cui è partita la richiesta. Se la richiesta è nuova (non è partita da nessuna pagina) il campo referrer non compare.

Possiamo quindi pensare di fare del Referrer Spoofing!

Tramite un proxy locale, modificando la richiesta di cambio password e cambiando il referrer mettendo l'indirizzo ip dell'host di DVWA (nel nostro caso 127.0.0.1), il cambio password va a buon fine. Ora sappiamo che la pagina fa solo un controllo sul referrer,

Purtroppo l'idea dell'attaco è quella di cambiare la password di altri utenti e di certo questi utenti non cambieranno di loro spontanea volontà il referrer!

Per fortuna ci vengono in aiuto tanti proxy online che fanno esattamente questo lavoro. Ne cito uno: 
http://referer.us/Spoof-HTTP-Referer.html.

Questo proxy permette di collegarsi ad un dato URL, spoofando il referrer con un dato url (ovviamente non possiamo usarlo per testarlo su DVWA in localhost, poichè un proxy remoto non può raggiungere il nostro 127.0.0.1).

Supponiamo che la pagina vulnerabile sia http://vulnsite.com/user/changepwd.php, e che per cambiare la password occorra fornire i parametri: newpass=nuovapassword&confirm=nuovapassoword&change=Change , spoofando il referrer con http://vulnsite.com/.

Utilizzando il simpatico form di referer.us, generiamo il link:

http://referer.us/f/?url=http%3A%2F%2Fvulnsite.com%2Fuser%2Fchangepwd.php%3Fnewpass%3Dnuovapassword%26confirm%3Dnuovapassoword%26change%3DChange&referer=http%3A%2F%2Fvulnsite.com%2F


e lo possiamo inserire in una immagine 0x0. Chiunque carichi l'immagine e sia loggato al sito 
http://vulnsite.com/ cambierà inconsciamente la propria password :).

No comments: