# Open redirect

## [Open redirect](https://app.gitbook.com/s/OIXudYEdnnE8JjXBrL0o/pentest-web/open-redirect) via un paramètre GET dans le stockage d'une image de profile

### Description

L'application Web permettait à tous les utilisateurs de télécharger des images d'avatar. Après avoir essayé de trouver sans succès des vulnérabilités de la fonctionnalité de téléchargement, j'ai essayé de suivre mon image d'avatar dans une nouvelle fenêtre et j'ai vu que l'application utilisait un paramètre appelé "u" pour rediriger vers l'un des sous-domaines de l'entreprise utilisant une api  pour la stocker. Ce paramètre en trompant la regex de vérification de domaine était vulnérable aux redirections ouvertes.

### Exploitation

* J'ai fait un clic droit sur mon image de profile et l'ai ouvert dans un nouvel onglet.
* L'url était <https://img.exemple.xyz/?u=https%3a%2f%2fxyz-api.exemple.xyz%2f>
* J'ai d'abord essayé de simplement changer le domaine original par mon propre domaine me renvoyant une erreur Golang.

<https://img.exemple.xyz/?u=https%3a%2f%2fattacker.xyz%2f>

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2FcFPahClPUgmG4JSKise1%2Fimage.png?alt=media&#x26;token=a8caef99-325c-4acb-91f6-fa810437834e" alt=""><figcaption><p>Erreur Golang</p></figcaption></figure>

* J'ai donc d'abord essayé de me renseigner sur de potentielles vulnérabilités sur golang en me basant sur cette erreur sans succès.
* Puis je me suis reconcentré sur les open redirect par la suite, j'ai alors tenter de manipuler la regex utilisée pour vérifier le domaine d'origine en ajoutant simplement ".attacker.xyz" puis "@attacker.xyz" mais cela n'a pas fonctionné.
* J'ai finalement réussi à contourner la validation à l'aide du caractère URL encodé "%ff" donnant l'url finale suivante.

<https://img.exemple.xyz/?u=https%3a%2f%2fattacker.xyz%ffxyz-api.exemple.xyz>

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2FXqgJ8xgFmCDisfvafWxK%2Fimage.png?alt=media&#x26;token=549ae63c-0d68-4846-ae76-6eb277ef90b7" alt=""><figcaption><p>Résultat</p></figcaption></figure>

### Risques

Les attaquants peuvent exploiter cette vulnérabilité afin d'inciter les utilisateurs à visiter un site Web malveillant qui peut voler leurs informations sensibles, installer des logiciels malveillants sur leur appareil ou effectuer d'autres actions malveillantes.

Les vulnérabilités de redirection ouverte sont un vecteur d'attaque courant pour les campagnes de phishing, car les attaquants peuvent créer un lien d'apparence convaincante vers un site légitime, mais qui redirige en fait l'utilisateur vers une fausse page de connexion conçue pour voler ses informations d'identification.

## Open redirect via paramètre callback sans vérification

### Description

L'application web contenait une fonctionnalité permettant d'envoyer un lien par SMS ou email à un client lui demandant de lier son compte bancaire à l'application afin de récupérer son historique de transactions. Celle-ci fournissait la documentation de ses API donc celle se chargeant de cette liaison. La requête permettant d'envoyer le lien en question contenait un paramètre caché nommé "callbackUrl" qui n'était donc pas utilisée par défaut par les utilisateurs mais probablement par les développeurs le callback étant par défaut fait vers un endpoint statique.

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2F2z4dTsskK17b1TFdnr99%2Fimage.png?alt=media&#x26;token=a678a138-27f9-47b5-99bb-edb50ebb3112" alt=""><figcaption><p>API Doc</p></figcaption></figure>

### Exploitation

* J'ai intercepté la requête de génération de lien.

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2FFTYp36rix87yIf7dY6ba%2Fimage.png?alt=media&#x26;token=32bfdd0a-80ac-406f-9860-568294266be1" alt=""><figcaption><p>Requête originale</p></figcaption></figure>

* J'ai ajouté le paramètre caché "callbackUrl" pointant vers mon burp collaborator.

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2Foxr6M2eH2CofmArZP2TU%2Fimage.png?alt=media&#x26;token=d75f0458-77be-4326-982b-776c97cb3ff5" alt=""><figcaption><p>requête modifiée</p></figcaption></figure>

* J'ai suivi le lien généré et complété la connexion avec ma banque pui ai été redirigé vers le burp collaborator après avoir validé la demande sur mon application mobile (à la fin du processus lors normalement de la redirection vers le domaine de l'entreprise).

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2FsZ8lLigOqB9Fg31gFrKA%2Fimage.png?alt=media&#x26;token=f3960fc8-a2b8-46a7-b43e-6b9534a9d59d" alt=""><figcaption><p>Redirection from bank to the domain given in callback param</p></figcaption></figure>

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2FkynBw4UKAdIFkt7K4TBe%2Fimage.png?alt=media&#x26;token=564cfb18-f591-4aba-b944-634979a1078b" alt=""><figcaption><p>Result</p></figcaption></figure>

### Risques

Le risque principal ici serait un scénario dans lequel un acteur malveillant abuse du contexte de la fonctionnalité pour ce faire passer pour une banque et hameçonner le client afin de voler ses idantifiants bancaires.

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2FzxVFxAAuFHVtAHIg1Yzb%2Fimage.png?alt=media&#x26;token=c5893f6b-840a-4ea7-9ee2-3138ea63d406" alt=""><figcaption><p>Exemple</p></figcaption></figure>

## Open redirect vers une application du play store arbitraire

### Description

L'entreprise vulnérable propose des applications mobiles dont les deeplinks sont gérées via un sous-domaine <https://app.redacted.com>. Lorsque l'application est installé sur l'appareil, un deeplink permet de rediriger l'utilisateur sur l'application. Cependant, si celle-ci n'est pas installé, alors l'utilisateur est redirigé vers la page associée sur le playstore.

### Exploitation

* Pour trouvé l'endpoint vulnérable, j'ai combiné deux de mes outils (WebHackUrls et ParamFirstCheck) afin de filtrer les urls de l'entreprise ayants été archivés.

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2Ft82lL0X0sXKRpSoWI6KL%2Fimage.png?alt=media&#x26;token=e2575e8a-bba3-468c-b24a-f6f6d629da73" alt=""><figcaption><p>Lien original</p></figcaption></figure>

* J'ai ainsi trouvé une url sur <https://app.redacted.com> utilisant un paramètre "link" redirigeant vers une url du domaine principal de l'entreprise qui lui même faisait une deuxième redirection.
* J'ai alors essayé des open redirect conventionnels et des contournement pour la whitelist en place mais ceci sans succès.
* Je n'ai alors pas eu d'autre choix que te tenter d'effectuer des actions malveillantes en passant par les domaines whitelistés dont <https://play.google.com> faisait donc partie d'après certaines fonctionnalités du sous-domaine.

<figure><img src="https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2F5FQ2pVsqtPcWaEWM2fIK%2Fimage.png?alt=media&#x26;token=873d71ee-e0df-49bf-9caa-df5fcbf523b0" alt=""><figcaption><p>Lien modifié</p></figcaption></figure>

* J'ai alors ensuite tout simplement abusé de la confiance envers le play store de Google afin de faire pointer le paramètre link de l'url vers une application arbitraire n'étant pas du tout celui de l'entreprise.

![](https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2FvN9ESjil8oytfjTV8tvW%2Fimage.png?alt=media\&token=a647e214-df16-43fb-a39e-e6a4609aa0c7)![](https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2FWvLcVRviIlnmD17WhsXr%2Fimage.png?alt=media\&token=96c216ba-f573-43b8-bcdf-2c99eb3c3775)

### Risques

En utilisant cette vulnérabilité, un attaquant est capable de manipuler un potentiel client intéréssé par l'application de l'entreprise afin de lui faire télécharger un "clone" malicieux de l'application ou encore l'application d'un concurrent.

## Rewards

![](https://2066510612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW6ZEoKWMMfREUbvU2oOZ%2Fuploads%2F0bwaI9trpyTPt75vcdaX%2Fimage.png?alt=media\&token=a9c984fa-cb20-43db-aeb0-71dfbb309437)
