🎣CSRF

Cross Site Request Forgery

Sites:

Mindmap

Principe

Exemple de modification d'email:

Exploit: (Test dans un fichier html en local)

Si la victime se rend sur le site web de l'attaquant contenant cet exploit, une requête HTTP sera envoyé à l'url "https://target.com/changeemailaddress" préremplie avec l'email de l'attaquant ([email protected]).

Si la victime a une session active sur le site target.com, l'action sera alors faite via son compte et son adresse mail sera alors remplacé par celle de l'attaquant.

Bypass de jeton CSRF

  • Tenter d'utiliser une autre méthode HTTP que celle utilisée.

  • Supprimer le paramètre "csrf" de la requête.

  • Utiliser son propre jeton CSRF à la place de celui de la cible.

  • Si le site Web contient un comportement qui permet à un attaquant de placer un cookie dans le navigateur d'une victime, L'attaquant peut se connecter à l'application à l'aide de son propre compte, obtenir un jeton valide et un cookie associé, placer son cookie dans le navigateur de la victime et transmettre son jeton à la victime lors de son attaque CSRF. (CRLF + CSRF)

  • Si le site utilise un header X-Csrf-Token, le remplacer par "1".

Exemple:

Bypass de vérification de l'en-tête referer

Si le site se fie à l'en-tête referer pour valider si le site de l'attaquant fait partie d'une whitelist ou non, on peu essayer d'ajouter une balise <meta> "no-referrer" à notre PoC.

Cela suffit parfois à bypass la liste blanche mise en place.

On peut aussi utiliser un nom de domaine tel que https://target.com.attacker.com pour tenter de bypass la regex vérifiant le domaine de confiance.

Exemple:

Via paramètre acceptant du path traversal ou vulnerable à open redirect

Exemple:

XSS+CSRF => Account takeover

Parfois, il est également possible de coupler une injection XSS (permettant de voler le token CSRF de la victime) et une CSRF avec XMLHttpRequest afin de parvenir souvent à la prise de contrôle d'un compte à haut privilèges.

CSRF sur endpoint JSON

Avec ACAO sur *

Dans le générateur de PoC CSRF de burp, dans options utiliser la technique "Cross-domain XHR" et set xhr.withcredentials dans le payload sur false si le true ne fonctionne pas.

Avec Content-Type: text/plain

Impacts possibles

  • Fuites de données sensibles

  • Enregistrement de Self-XSS dans le navigateur de la victime

  • Account takeover

Mis à jour

Ce contenu vous a-t-il été utile ?