tags: csrf web misconfiguration


Una Cross-Site Request Forgery (CSRF, anche nota come XSRF o Cross-Site Reference Forgery) è un tipo di attacco informatico che compromette la sicurezza di un sito web lato client. Sostanzialmente l’attacco si svolge in due fasi, nella prima fase l’attaccante utilizza una cattiva configurazione di un modulo del sito web (come potrebbe essere una sezione per cambiare la password) per creare una richiesta http di cambio della password valida che verrà poi mandata alla vittima, se la vittima ha il sito web attivo sul suo browser e clicca il link che gli abbiamo mandato (che è una richiesta legittima di cambio password) il suo browser gli andrà a cambiare la password con la password inserita nel link inviato alla vittima, quindi con la password dell’attaccante, senza che lui abbia effettivamente effettuato il cambio password, o meglio lo ha fatto nel momento che clicca il link.

Quindi questo attacco di svolge in due fasi:

  • Preparazione della richiesta

  • Ingegneria sociale

Per esempio, un attaccante potrebbe creare un link apparentemente innocuo che, quando cliccato, invia una richiesta GET per trasferire 1000 dollari da un conto bancario all’account dell’attaccante. Se l’utente è già loggato sulla banca online e clicca sul link, la richiesta verrà eseguita senza che l’utente ne sia a conoscenza.

Ricapitolando le tre cose essenziali per eseguire questo tipo di attacco sono:

  • L’attaccante conosce già il formato delle richieste dell’applicazione web per svolgere un’attività specifica e invia un link dannoso all’utente.

  • L’identità della vittima sul sito web viene verificata, in genere tramite cookie trasmessi automaticamente con ogni richiesta di dominio e clic sul link condiviso dall’attaccante. Questa interazione potrebbe essere un clic, un passaggio del mouse o qualsiasi altra azione.

  • Misure di sicurezza insufficienti impediscono all’applicazione web di distinguere tra richieste autentiche degli utenti e quelle falsificate.

Una prima cosa da fare per capire se è presente una csrf su un sito è quello di verificare tramite Burpsuite se è possibile per esempio cambiare una richiesta POST che potrebbe servire per cambiare il nome utente con una richiesta GET e vedere se la esegue comunque (Per fare questo non è sufficiente cambiare GET con POST, ma bisogna mandare la richiesta al Repeater cliccare sull’opzione “Change request method” tramite tasto destro), inoltre per verificare ulteriori misconfigurazioni in caso fossero presenti dei token provare ad eliminarli e vedere se l’operazione viene comunque eseguita.

Un ulteriore sezione da guardare quando si cerca questa vulnerabiltà è il “guid” questo parametro se non è configurato correttamente ci può permettere di eseguire comandi remoti su per esempio un’altro utente senza che lui se ne accorga. Questo avviene perchè se noi possiamo modificare una richiesta al server legittima come potrebbe essere quella di modifica del nome utente e vediamo che il server la accetta anche se trasformiamo la richiesta da POST a GET e se togliamo gli eventuali token, possiamo cambiare il nostro guid con quello della vittima e il server interpreterà la richiesta come se fosse stata fatta dalla vittima il che ci permetterebbe di cambiare in questo esempio il nome utente della vittima senza che se ne renda conto. Per fare ciò però dobbiamo prendere la richiesta GET che prima era POST modificata e fare in modo che l’utente vittima la clicchi e quindi la esegua lui stesso, quindi per esempio possiamo creare un’immagine HTML con all’interno la nostra richiesta modificata la quale verrà eseguita non appena cliccata dall’utente vittima e il server la interpreterà come una richiesta legittima.