CSRF
Def et Fonctionnement:
CSRF ou Cross-Site Request Forgery effectue des actions grâce à une victime qui sert de vecteur porteur de l'attaque. L'attaquant envoie en général un lien à la victime qui dispose de droits admin ou autre qui vont executer la requête malveillante de l'attaquant.
Un lien très intéressant avec des exemples simples : https://kinsta.com/fr/blog/attaques-csrf/#questce-quune-attaque-csrf-
Exploitation :
Il faut plusieurs conditions pour effectuer cette attaque :
- Une action utile : il faut une action que la victime puisse faire (changer le passwd, le mail etc...)
- Management de session : les session doivent être gérées uniquement par les cookies ou sur de l'HTTP d'authentification basique (puisque le reste ne peut pas être manipulé)
- Pas de paramètres non-prédictible : les paramètres non-prédictibles peuvent faire échouer l'attaque
Vérifier CSRF : Sur burp et copy as fetch pour vérifier
https://cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_Cheat_Sheet.html
CSRF - 0 est un chall rootme avec une exploitation
Prévention :
Il y a plusieurs contre-mesures pour le CSRF :
- SameSite cookies: This attribute prevents the browser from sending cookies along with cross-site requests. More about SameSite cookies.
- Cross-origin resource sharing: The CORS policy of the victim site can influence the feasibility of the attack, especially if the attack requires reading the response from the victim site. Learn about CORS bypass.
- User Verification: Prompting for the user's password or solving a captcha can confirm the user's intent.
- Checking Referrer or Origin Headers: Validating these headers can help ensure requests are coming from trusted sources. However, careful crafting of URLs can bypass poorly implemented checks, such as:
- Using
http://mal.net?orig=http://example.com
(URL ends with the trusted URL) - Using
http://example.com.mal.net
(URL starts with the trusted URL)
- Using
- Modifying Parameter Names: Altering the names of parameters in POST or GET requests can help in preventing automated attacks.
- CSRF Tokens: Incorporating a unique CSRF token in each session and requiring this token in subsequent requests can significantly mitigate the risk of CSRF. The effectiveness of the token can be enhanced by enforcing CORS.