Module : Sécurité des Applications Web
Niveau : 3ème année IRIC
Cross-Site Request Forgery
Le CSRF, ou Cross-Site Request Forgery (Falsification de Requêtes Inter-Sites), est une attaque
de sécurité qui exploite la confiance qu'un site accorde à un utilisateur authentifié. L'attaque se
produit lorsque l'attaquant parvient à faire exécuter à l'insu de l'utilisateur des actions non
autorisées sur un site web auquel l'utilisateur est déjà connecté.
L'attaque CSRF exploite le fait que les navigateurs web envoient automatiquement les cookies
d'authentification avec chaque requête vers le même domaine. Voici comment fonctionne
généralement une attaque CSRF :
1. Authentification de l'utilisateur : L'utilisateur se connecte à un site web légitime et
reçoit un cookie d'authentification, qui est stocké dans le navigateur.
2. Exploitation de la confiance : L'attaquant persuade l'utilisateur de visiter un site
contrôlé par l'attaquant. Cela peut être accompli par des moyens tels que l'envoi de liens
malveillants par e-mail, la publication sur des forums, ou même l'insertion de code
malveillant sur des sites web compromis.
3. Requête non autorisée : Une fois que l'utilisateur visite le site malveillant, des requêtes
HTTP sont générées de manière automatique (par exemple, à l'aide de balises image
invisibles, de formulaires invisibles ou de scripts malveillants). Ces requêtes sont
envoyées au site légitime auquel l'utilisateur est déjà authentifié.
4. Utilisation des cookies d'authentification : Les navigateurs envoient
automatiquement les cookies associés au domaine cible avec chaque requête, même si
la requête a été générée par un site tiers. Ainsi, le site légitime traite la requête comme
si elle provenait de l'utilisateur légitime, puisque les cookies d'authentification sont
inclus.
5. Exécution d'actions non autorisées : Les requêtes forgées peuvent effectuer des
actions non autorisées au nom de l'utilisateur sur le site légitime. Cela peut inclure la
modification des paramètres du compte, la suppression de données, la réalisation
d'achats, etc.
1
Module : Sécurité des Applications Web
Niveau : 3ème année IRIC
• Exemple :
Supposons qu'un utilisateur ait la possibilité de changer son mot de passe à l'aide d'une
requête POST :
Dans cet exemple, l'utilisateur effectue une requête pour changer son mot de passe sur le site
vulnerable-site.com. Les cookies d'authentification (la session) sont inclus dans la requête pour
indiquer au serveur que l'utilisateur est déjà authentifié.
Maintenant, imaginons qu'un attaquant réussisse à convaincre l'utilisateur de visiter un site
malveillant qu'il contrôle. Sur ce site malveillant, l'attaquant pourrait inclure du code HTML
qui génère automatiquement une requête de changement de mot de passe vers le site vulnérable
sans que l'utilisateur en soit conscient. Par exemple, en utilisant du code HTML tel que :
Dans ce scénario, le simple fait que l'utilisateur visite la page malveillante déclenche
automatiquement une requête de changement de mot de passe sur le site vulnérable. Étant donné
que les cookies d'authentification sont inclus, le serveur traitera cette requête comme légitime
et changera le mot de passe de l'utilisateur sans son consentement explicite. C'est un exemple
de détournement de requête inter-sites (CSRF).
2
Module : Sécurité des Applications Web
Niveau : 3ème année IRIC
Construction d’une Attaque CSRF :
Par la suite nous détaillerons le déroulement d’une attaque CSRF à l’aide de Burp Suite.
L'utilisation de cet outil facilite la création d'exploits CSRF en automatisant une partie du
processus et en offrant la possibilité de personnalisation.
• Configuration initiale de Burp Suite
o Configurez votre navigateur pour utiliser Burp Suite comme proxy.
o Activez l'interception dans Burp Suite.
• Enregistrement de la requête cible :
o Connectez-vous au site cible.
o Utilisez Burp Suite pour enregistrer la requête que vous souhaitez reproduire dans
votre attaque CSRF.
• Dans le menu contextuel (clic droit), accédez à Outils d'engagement / Générer un PoC
CSRF.
• Burp Suite générera du code HTML déclenchant la requête sélectionnée, avec exclusion
des cookies (ajoutés automatiquement par le navigateur de la victime).
• Personnalisez les options du générateur CSRF PoC pour ajuster les aspects de l'attaque,
si nécessaire, en particulier pour gérer des caractéristiques spécifiques des requêtes.
• Copiez le code HTML généré et intégrez-le dans une page web. Affichez cette page dans
un navigateur connecté au site vulnérable pour tester si la requête attendue est
correctement émise et si l'action désirée se produit.
Atelier 1 : Vulnérabilité CSRF sans défense
Cet atelier présente une vulnérabilité de type CSRF dans la capacité de changer les adresses e-
mail . Afin de compléter l’atelier , concevez un code HTML exploitant une attaque CSRF pour
altérer l'adresse e-mail du spectateur, puis téléchargez ce code sur le serveur d'exploit. Les
informations d'identification suivantes :wiener:peter
Accédez au Lab
Pour résoudre à cet atelier vous devez utiliser Burp Suite, nous n’allons pas travailler avec la
version pro.
- Explorez le site cible.
- Commencez par intercepter la demande en utilisant le proxy puis envoyez la au
répéteurs (repeater).
- Connectez-vous au compte (sur le site cible) avec Login et Mot de passe déjà fournis
- Créez par la suite un document html ou vous allez mettre le code suivant :
3
Module : Sécurité des Applications Web
Niveau : 3ème année IRIC
<html>
<body>
<h1>Hello World!</h1>
<iframe style="display:none" name="csrf-iframe"></iframe>
<form action="https://target-
acb91feb1e053ea78076271500a20022.web-security-academy.net/my-
account/change-email" method="POST" target="csrf-iframe" id="csrf-form">
<input type="hidden" name="email" value="[email protected]">
</form>
<script>document.getElementById("csrf-form").submit()</script>
</body>
</html>
Þ Ce qui en gras est l’URL du compte. Veillez à le changer par le votre
Þ A votre Avis que fais ce code ? est-ce que vous pouvez l’expliquer ?
L’une de point clé d’une attaque CSRF est de la cacher à l’utilisateur. C’est-à-dire qu’il ne doit
pas être conscient de ce qui se passe en arrière-plan.
D’où l’utilisation de la balise iframe au niveau du code qui nous permettra de rendre l’attaque
invisible pour l’utilisateur.
Par la suite il faut héberger ce code sur le serveur web, en créant un serveur python sur le
Localhost. Après envoyer le scripts à l’utilisateur (adresselocalhot/fichierattaque.html), au
niveau du site cible vérifiez si l’email a changé.
¨ NB : vous pouvez explorer d’autre solutions possible soit en utilisant la version pro du
Burp Suite ou bien en utilisant le serveur d’exploit indiqué au niveau de l’atelier