Sto leggendo su CSRF e ho trovato i token di sincronizzazione. Non capisco perché non puoi fare un CSRF per ottenere il token per fare un vero CSRF.
Esempio: bank.com
ha una forma come questa in https://bank.com/transfer
:
<form action="https://bank.com/do_transfer" method="post">
<input type="hidden" name="synchroniser_token" value="j/DcoJ2VZvr7vdf8CHKsvjdlDbmiizaOb5B8DMALg6s=" >
<input type="hidden" name="to" value="ciro">
<input type="hidden" name="amount" value="100">
<button type="submit">Send 100$ to Ciro.</button>
</form>
Questo codice è stato adattato dal link
Che cosa fermerebbe malicioussite.com
da GETing https://bank.com/transfer
con JavaScript sul client (utilizzando l'ID di sessione già memorizzato nel cookie) e scartando la pagina per authenticity_token
? Quindi, potrebbero usare quell'ID per fare un CSRF reale , essenzialmente un CSRF per fare un altro CSRF.
Richiede l'esecuzione di JavaScript, quindi sarebbe più difficile fare una semplice immagine di 0px X 0px, ma è più che fattibile.