L'affermazione, "ogni sito senza un token CSRF è vulnerabile a un attacco CSRF", non è accurato. Certamente non si applica ai siti web statici che non hanno funzionalità lato server, dove CSRF non è nemmeno applicabile / possibile. Inoltre, il OWASP CSRF Prevenzione Cheat Sheet cita alcuni altri meccanismi di CSRF di prevenzione che non utilizzare i token CSRF:
Adding CSRF tokens, a double submit cookie and value, encrypted token,
or other defense that involves changing the UI can frequently be
complex or otherwise problematic. An alternate defense which is
particularly well suited for AJAX endpoints is the use of a custom
request header. This defense relies on the same-origin policy (SOP)
restriction that only JavaScript can be used to add a custom header,
and only within its origin. By default, browsers don't allow
JavaScript to make cross origin requests.
A particularly attractive custom header and value to use is:
X-Requested-With: XMLHttpRequest
o
Sometimes it's easier or more appropriate to involve the user in the transaction in order to prevent unauthorized transactions (forged or otherwise).
The following are some examples of challenge-response options:
- Re-Authentication (password or stronger)
- One-time Token
- CAPTCHA
In caso contrario, qualsiasi applicazione web che non realizzare qualsiasi di questi meccanismi e ha HTTP GET o POST richieste che avviano le azioni possono essere vulnerabili.
CSRF e CORS sono concetti piuttosto separati anche se c'è qualche somiglianza, almeno alla base di tutto.
CORS, o Cross-Origin-condivisione delle risorse consente a un server di definire una politica di cui origini (altri domini) possono recuperare le informazioni da esso. Anche se il criterio predefinito impedisce a un'altra origine di leggere i dati, non impedisce l'esecuzione di un attacco CSRF.
Please share your methodology if possible, like what will you test for
if you don't find a site with crsf token? how will you check if it has
one or not?
È possibile verificare la presenza di un token CSRF esaminando i cookie, il corpo della richiesta e l'HTML, sebbene possa dipendere dallo specifico sistema utilizzato.
Puoi testare le vulnerabilità CSRF creando una pagina HTML di prova che tenti di eseguire richieste sensibili verso il sito web in questione.