Skip to content
CyberXplore - Xplore the Unseen

Come potevamo hackerare qualsiasi azienda con un semplice messaggio – taglia da 20.000 $ [CVE-2021-34506]

cyberxploreDi cyberxplore8 min di lettura

La storia di un XSS universale (uXSS) nel traduttore di Microsoft Edge, premiato con una taglia da 20.000 $ (CVE-2021-34506), e come permetteva di compromettere gli utenti su Facebook, Google e YouTube.

Come potevamo hackerare qualsiasi azienda con un semplice messaggio – taglia da 20.000 $ [CVE-2021-34506]

La storia di un XSS universale (uXSS) in Microsoft Edge

Ciao a tutti , spero che stiate tutti bene in questa pandemia & che la stiate sfruttando per imparare qualcosa di nuovo nella vita di tutti i giorni . Questa è la storia di come si possa hackerare qualsiasi azienda, anche le più grandi, come Facebook , Google , Microsoft, ecc. Come è cominciato tutto questo? Per capirlo dobbiamo partire da zero .

Il 3 giugno io, @Th3Pr0xyB0y (Vansh Devgan) & il mio amico @MrRajputHacker (Shivam Kumar Singh) stavamo cacciando insieme su un sottodominio di mail.ru (programma tramite Hackerone). Purtroppo quel programma è in russo e, come sappiamo, Chrome traduce automaticamente le pagine da altre lingue. Noi però usiamo tutti Firefox con Burpsuite per lavorare sulle applicazioni web, quindi, quando cercavamo di trovare vulnerabilità su redacted.com (un sottodominio di mail.ru), ci siamo scontrati con parecchi problemi durante la traduzione in Firefox .

Abbiamo quindi cercato delle estensioni per Firefox che traducessero la pagina in un inglese leggibile. Cercando su Google abbiamo scoperto che moltissime estensioni erano state rimosse perché contenevano codice vulnerabile, e così ci siamo messi a pensare a quale impatto potesse avere un’estensione vulnerabile sugli utenti del browser. Dopo un po’ ho pensato che queste estensioni hanno accesso universale a qualsiasi sito nel browser: se sei su facebook.com, per esempio, possono leggere l’intero DOM della pagina, i cookie & qualsiasi cosa sia possibile con JavaScript. Così abbiamo deciso di abbandonare l’idea di cercare una falla nel sottodominio di mail.ru .

Ora arriva la parte interessante: dato che MrRajputHacker aveva già trovato diverse vulnerabilità in Microsoft, ha iniziato a parlare di altri bug da cercare in Microsoft, ma io gli ho proposto di provare invece a sfruttare un browser o delle estensioni preinstallate. E siccome a MrRajputHacker piace cercare falle in Microsoft , noi (Th3Pr0xyB0y & MrRajputHacker) abbiamo deciso che il nostro obiettivo sarebbe stato Microsoft Edge, dato che ha un programma di bug bounty .

Prima di dedicarci definitivamente al browser Microsoft Edge Th3Pr0xyB0y & MrRajputHacker abbiamo pensato: proviamo a tradurre il sito in Microsoft Edge e a testarlo un’ultima volta (Edge aveva appena ricevuto un nuovo aggiornamento con un nuovo traduttore di Microsoft). Così siamo tornati sullo stesso sito e, dato che la nostra mail.ru era piena di payload XSS, abbiamo scoperto che, non appena traducevamo la pagina, comparivano moltissimi popup in Microsoft Edge. Ci è sembrato strano. Siamo tornati su Chrome e abbiamo fatto lo stesso, ma questa volta nessun popup !

Così ci siamo messi entrambi a scavare a fondo e abbiamo scoperto che il traduttore interno di Microsoft Edge (quello preinstallato) contiene codice vulnerabile: durante la traduzione prende qualsiasi tag HTML che contenga un tag “>img senza sanificare l’input né convertire il payload in testo. Quel traduttore interno prendeva quindi il payload “>img src=x e lo eseguiva come JavaScript, perché non c’era alcun controllo di validazione adeguato che sanificasse o convertisse prima l’intero DOM in testo per poi elaborarlo ai fini della traduzione .

Qui sotto trovate il frammento di codice interessato; sembra che la funzione startPageTranslation sia la funzione coinvolta .

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;

Per dimostrare che la vulnerabilità esisteva, io (Th3Pr0xyB0y) & MrRajputHacker abbiamo creato un file POC.html che contiene testo in diverse lingue insieme al famoso payload XSS “><img src=x>

Qui sotto trovate il frammento di codice del file 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.

Ora arriva la parte speciale di questo blog: lo sfruttamento, ovvero i passaggi per riprodurlo & la descrizione della vulnerabilità

Nome della vulnerabilità – uXSS (Universal Cross Site Scripting)

Descrizione della vulnerabilità 

A differenza dei comuni attacchi XSS, l’UXSS è un tipo di attacco che sfrutta vulnerabilità lato client nel browser o nelle sue estensioni per generare una condizione di XSS ed eseguire codice dannoso. Quando queste vulnerabilità vengono individuate e sfruttate, il comportamento del browser viene alterato e le sue funzioni di sicurezza possono essere aggirate o disattivate.

Passaggi per riprodurlo –

1- Scarica il file POC.html dal frammento di codice qui sopra, oppure copia e incolla il codice in un file > rinominalo POC.html e salvalo

2- Nella stessa cartella in cui si trova il tuo file POC, avvia un server python su localhost con il comando riportato qui sotto

python3 -m http.server 80

3- Apri Microsoft Edge ( Version 91.0.864.48 (Official build) (arm64)) & visita http://localhost/POC.html

Molto probabilmente, nel momento in cui leggi questo articolo, Edge è già stato aggiornato a una versione sicura, ed è per questo che potresti non riuscire a riprodurlo

4-Il traduttore ti mostrerà un messaggio che dice che questa pagina è in un’altra lingua e ti chiede se vuoi tradurla ? Fai clic sul pulsante per tradurre

5-Boom, ottieni alert(1)

Nota bene- Il motivo per cui avviamo un server python anche per un file HTML è semplice: a volte il traduttore non compare quando ci si limita ad aprire la pagina HTML, probabilmente perché in quel caso document.location è about:html quando apriamo il file HTML così com’è.

Due condizioni per un exploit da remoto →

1-La persona deve usare Microsoft Edge

2-La persona deve avere attiva la traduzione automatica (AutoTranslate)

VIDEO DEL POC →

Impatto –

Possiamo riassumere l’impatto nei quattro punti seguenti

1- Qualsiasi pagina che rifletta “><img src=x (o qualsiasi payload XSS) è vulnerabile: ci basta la riflessione

2- Qualsiasi persona di un altro paese (che non conosce l’inglese) che legge di XSS su un sito in inglese è esposta → perché la tradurrà (l’XSS comparirà come popup)

3- Tutti gli utenti di Edge sono esposti a un XSS che può attivarsi su qualsiasi sito web

4- Qualsiasi persona che ricevera un’email o un messaggio con contenuto in un’altra lingua + payload XSS (è esposta)

Ci sono moltissime possibilità che possono verificarsi con questo vettore d’attacco

Questa vulnerabilità è nota come XSS universale

Ora, ecco come avremmo potuto hackerare Google & Facebook

Facebook → abbiamo creato un profilo con un nome in un’altra lingua e un payload XSS e abbiamo inviato una richiesta di amicizia alla vittima (che usa Edge). Appena ha guardato il nostro profilo, è stata hackerata (popup XSS a causa della traduzione automatica)

Google → abbiamo scritto su Google una recensione per un’azienda chiamata HackENews in un’altra lingua + payload XSS; chiunque aprisse il link di quella recensione veniva hackerato (popup XSS a causa della traduzione automatica)

Youtube → abbiamo creato un video su YouTube e lasciato un commento con un payload XSS+un’altra lingua; chiunque guardasse quel video in Edge veniva hackerato (popup XSS a causa della traduzione automatica)

YOUTUBE E GOOGLE HANNO LO STESSO VIDEO DI POC

Applicazione del Windows Store → abbiamo scoperto che anche un’applicazione web (per esempio Instagram) sul Windows Store è vulnerabile a questo attacco, poiché il Windows Store distribuisce le applicazioni con lo stesso Microsoft Edge Translator che era responsabile dell’attivazione dell’attacco uXSS (Universal XSS) .

Cronologia

3 giugno 2021 : Report inviato a Microsoft
7 giugno 2021 : Risposta da Microsoft, in fase di revisione 
8 giugno 2021 : Inviate informazioni aggiuntive sull’impatto
15 giugno 2021 : Report preso in carico 
17 giugno 2021 : Assegnata una taglia da 20.000 $
19 giugno 2021 : Patch pre-rilascio
24 giugno 2021 : Aggiornamento della patch distribuito & CVE assegnato come CVE-2021-34506

Puoi leggere le note di rilascio e i ringraziamenti di Microsoft qui

uXSS Microsoft Edge Translator Bounty

Risorse per imparare –

1- Port-swigger Labs

2- Acuentix

3- Hacker-one Hactivity

Grazie a tutti per la lettura . Non dimenticate di lasciare un applauso se vi è piaciuto .

Seguiteci –

Twitter → @MrRajputHacker @Th3Pr0xyB0y

Instagram → @MrRajputHacker @vanshdevgan

Linkedin → MrRajputHacker @th3pr0xyb0y

Medium → @mrrajputhacker @th3pr0xyb0y

Articoli correlati

Trasforma questi approfondimenti in un progetto

Ottieni un penetration test guidato da esperti senior e su misura per il tuo stack - risultati concreti, non una checklist.

  • Retest gratuito di ogni correzione
  • Scope e preventivo in 24 ore
  • Solo tester senior
  • ISO 27001
  • ISO 9001
  • OSCP
  • CRTP
  • CREST
Richiedi un preventivo