Skip to content
CyberXplore - Xplore the Unseen

Comment nous pouvions pirater n’importe quelle entreprise avec un simple message – prime de 20 000 $ [CVE-2021-34506]

cyberxplorePar cyberxplore8 min de lecture

L’histoire d’un XSS universel (uXSS) dans le traducteur de Microsoft Edge, récompensé par une prime de 20 000 $ (CVE-2021-34506) – et comment il permettait de compromettre les utilisateurs sur Facebook, Google et YouTube.

Comment nous pouvions pirater n’importe quelle entreprise avec un simple message – prime de 20 000 $ [CVE-2021-34506]

L’histoire d’un XSS universel (uXSS) dans Microsoft Edge

Salut à tous , j’espère que tout le monde va bien en cette pandémie & que vous en profitez pour apprendre de nouvelles choses au quotidien . Voici donc l’histoire de comment pirater n’importe quelle entreprise, même les plus grandes comme Facebook , Google , Microsoft, etc. Comment tout cela a-t-il commencé? Pour le comprendre, il faut repartir de zéro .

Le 3 juin, moi, @Th3Pr0xyB0y (Vansh Devgan) & mon ami @MrRajputHacker (Shivam Kumar Singh) chassions ensemble sur un sous-domaine de mail.ru (programme via Hackerone). Malheureusement, ce programme est en russe et, comme chacun sait, Chrome traduit automatiquement les pages depuis d’autres langues. Mais nous utilisons tous Firefox avec Burpsuite pour manipuler les applications web. Alors, lorsque nous cherchions des vulnérabilités sur redacted.com (un sous-domaine de mail.ru), nous avons rencontré beaucoup de problèmes de traduction dans Firefox .

Nous avons donc cherché des extensions Firefox pour traduire la page en anglais lisible. En cherchant sur Google, nous avons découvert que de très nombreuses extensions avaient été retirées parce qu’elles contenaient du code vulnérable. Nous nous sommes alors demandé quel impact une extension vulnérable pouvait avoir sur les utilisateurs du navigateur. Au bout d’un moment, je me suis dit que ces extensions ont un accès universel à n’importe quel site du navigateur – si vous êtes sur facebook.com, par exemple, elles peuvent lire tout le DOM de la page, les cookies & tout ce qui est possible avec JavaScript. Nous avons donc laissé tomber l’idée de chercher une faille dans le sous-domaine de mail.ru .

Vient maintenant la partie intéressante : comme MrRajputHacker avait déjà trouvé plusieurs vulnérabilités chez Microsoft, il a commencé à parler de nouvelles failles chez Microsoft. Je lui ai plutôt proposé de tenter d’exploiter un navigateur ou des extensions préinstallées. Et comme MrRajputHacker aime chercher des failles chez Microsoft , nous (Th3Pr0xyB0y & MrRajputHacker) avons décidé que notre cible serait Microsoft Edge, puisqu’il dispose d’un programme de bug bounty .

Avant de nous lancer définitivement sur le navigateur Microsoft Edge Th3Pr0xyB0y & MrRajputHacker se sont dit : essayons une dernière fois de traduire le site dans Microsoft Edge et de le tester (Edge venait de recevoir une mise à jour avec un nouveau traducteur signé Microsoft). Nous sommes donc retournés sur le même site et, comme notre mail.ru était rempli de payloads XSS, nous avons constaté que dès que nous traduisions la page, une multitude de popups apparaissaient dans Microsoft Edge. Cela nous a paru étrange. Nous sommes repassés sur Chrome pour refaire la même chose – mais cette fois, aucun popup !

Nous avons donc creusé tous les deux et découvert que le traducteur interne de Microsoft Edge (celui qui est préinstallé) contient du code vulnérable : lors de la traduction, il reprend n’importe quelle balise HTML contenant une balise “>img sans nettoyer l’entrée ni convertir la payload en texte. Ce traducteur interne prenait donc la payload “>img src=x et l’exécutait comme du JavaScript, car il n’y avait aucun contrôle de validation correct pour assainir ou convertir d’abord tout le DOM en texte avant de le traiter pour la traduction .

Ci-dessous, voici l’extrait de code concerné ; il semble que la fonction startPageTranslation soit la fonction touchée .

function translateInternal(originalLang, targetLang, shouldTranslateFullPageInOneGo) {
        resetDataBeforeTranslateCall();
        try {
            originalLang = GetEdgeLanguageCode(originalLang);
            targetLang = GetEdgeLanguageCode(targetLang);
            /**
           * This will call the startPageTranslation function of edge script
           */
            Microsoft.JS.startPageTranslation(originalLang, targetLang, shouldTranslateFullPageInOneGo, ""/*domTranslatorSessionId*/
            , ""/*token*/
            , onSuccessCallback, onTranslateApiCalled, onErrorCallback);
            console.error("edge Translation started");
        } catch (err) {
            console.error("Translate: " + err);
            errorCode = ERROR["UNEXPECTED_SCRIPT_ERROR"];
            return false;
        }
        return true;

Pour prouver que la vulnérabilité existait, moi (Th3Pr0xyB0y) & MrRajputHacker avons créé un fichier POC.html contenant du texte dans différentes langues avec la célèbre payload XSS “><img src=x>

Vous trouverez ci-dessous l’extrait de code du fichier POC.html

<b><u>SOME TEXT IN DIFFERENT LANGUAGE </u></b>
<br>

Políticas de Privacidade
Usaremos seus dados pessoais para resolver disputas, solucionar problemas e aplicar nossos Termos e Condições de Uso.

<br>

Para prevenir abusos no app/site, o Badoo usa decisões automáticas e moderadores para bloquear contas, como parte de seu procedimento de moderação. Para isso, nós conferimos contas e mensagens para encontrar conteúdo que indicam quebra dos nossos Termos e Condições de Uso. Isso é feito através de uma




<b><u>OUR PAYLOAD IN TEXT FORM </u></b>
<br>
<br>



"><img src=x





<br>
<br>
<br>
Políticas de Privacidade
Usaremos seus dados pessoais para resolver disputas, solucionar problemas e aplicar nossos Termos e Condições de Uso.

Vient maintenant la partie spéciale de ce blog : l’exploitation, ou les étapes de reproduction & la description de la vulnérabilité

Nom de la vulnérabilité – uXSS (Universal Cross Site Scripting)

Description de la vulnérabilité 

Contrairement aux attaques XSS classiques, l’UXSS est un type d’attaque qui exploite des vulnérabilités côté client dans le navigateur ou dans ses extensions afin de créer une condition XSS et d’exécuter du code malveillant. Lorsque de telles vulnérabilités sont découvertes et exploitées, le comportement du navigateur est altéré et ses fonctions de sécurité peuvent être contournées ou désactivées.

Étapes de reproduction –

1- Téléchargez le fichier POC.html depuis l’extrait de code ci-dessus, ou copiez-collez le code dans un fichier > renommez-le POC.html et enregistrez-le

2- Dans le même dossier que votre fichier POC, démarrez un serveur python sur localhost avec la commande ci-dessous

python3 -m http.server 80

3- Ouvrez Microsoft Edge ( Version 91.0.864.48 (Official build) (arm64)) & rendez-vous sur http://localhost/POC.html

Il est fort probable qu’au moment où vous lisez cet article, Edge ait déjà été mis à jour vers une version sécurisée – c’est pourquoi vous ne pourrez peut-être pas reproduire la faille

4-Le traducteur vous affichera un message indiquant que cette page est dans une autre langue et vous demandera si vous souhaitez la traduire ? Cliquez sur le bouton de traduction

5-Boom, vous obtenez alert(1)

À noter- La raison pour laquelle nous lançons un serveur python même pour un fichier HTML est simple : parfois, le traducteur n’apparaît pas lorsqu’on se contente d’ouvrir la page HTML, sans doute parce que document.location vaut alors about:html quand on ouvre simplement le fichier HTML.

Deux conditions pour un exploit à distance →

1-La personne doit utiliser Microsoft Edge

2-La personne doit avoir active AutoTranslate

VIDÉO DU POC →

Impact –

Nous pouvons résumer l’impact dans les quatre points suivants

1- Toute page qui reflète “><img src=x (ou n’importe quelle payload XSS) est vulnérable – il nous suffit d’un reflet

2- Toute personne d’un autre pays (qui ne parle pas anglais) lisant un article sur le XSS sur un site anglophone est exposée → car elle va traduire (le XSS s’affichera en popup)

3- Tous les utilisateurs d’Edge sont exposés à un XSS qui peut se déclencher sur n’importe quel site web

4- Toute personne qui recevra un e-mail ou un message dont le contenu est dans une autre langue + une payload XSS (est exposée)

Il y a énormément de scénarios possibles avec ce vecteur d’attaque

Cette vulnérabilité est connue sous le nom de XSS universel

Maintenant, voici comment nous aurions pu pirater Google & Facebook

Facebook → nous avons créé un profil avec un nom dans une autre langue et une payload XSS, puis envoyé une demande d’ami à la victime (qui utilise Edge). Dès qu’elle a consulté notre profil, elle était piratée (popup XSS à cause de la traduction automatique)

Google → nous avons rédigé sur Google un avis pour une entreprise nommée HackENews, dans une autre langue + payload XSS ; toute personne consultant le lien de cet avis était piratée (popup XSS à cause de la traduction automatique)

Youtube → nous avons créé une vidéo YouTube et laissé un commentaire avec une payload XSS+une autre langue ; quiconque regardait cette vidéo dans Edge était piraté (popup XSS à cause de la traduction automatique)

YOUTUBE ET GOOGLE ONT LA MÊME VIDÉO DE POC

Application du Windows Store → nous avons constaté qu’une application web (par exemple Instagram) sur le Windows Store est elle aussi vulnérable à cette attaque, car le Windows Store livre les applications avec le même Microsoft Edge Translator qui était responsable du déclenchement de l’attaque uXSS (Universal XSS) .

Chronologie

3 juin 2021 : Rapport envoyé à Microsoft
7 juin 2021 : Réponse de Microsoft, en cours d’examen 
8 juin 2021 : Informations complémentaires sur l’impact envoyées
15 juin 2021 : Rapport trié 
17 juin 2021 : Prime de 20 000 $ accordée
19 juin 2021 : Correctif en pré-publication
24 juin 2021 : Mise à jour du correctif déployée & CVE attribué sous le nom CVE-2021-34506

Vous pouvez consulter les notes de version et les remerciements de Microsoft ici

uXSS Microsoft Edge Translator Bounty

Ressources pour apprendre –

1- Port-swigger Labs

2- Acuentix

3- Hacker-one Hactivity

Merci à tous d’avoir lu . N’oubliez pas de laisser un clap si ça vous a plu .

Suivez-nous –

Twitter → @MrRajputHacker @Th3Pr0xyB0y

Instagram → @MrRajputHacker @vanshdevgan

Linkedin → MrRajputHacker @th3pr0xyb0y

Medium → @mrrajputhacker @th3pr0xyb0y

Articles associés

Transformez ces analyses en mission

Bénéficiez d'un test d'intrusion mené par des experts seniors, adapté à votre stack - des résultats exploitables, pas une simple checklist.

  • Retest gratuit de chaque correctif
  • Périmètre et devis sous 24 heures
  • Testeurs exclusivement seniors
  • ISO 27001
  • ISO 9001
  • OSCP
  • CRTP
  • CREST
Obtenir un devis