Skip to content
CyberXplore - Xplore the Unseen

Cómo podíamos hackear cualquier empresa con un simple mensaje – recompensa de 20.000 $ [CVE-2021-34506]

cyberxplorePor cyberxplore8 min de lectura

La historia de un XSS universal (uXSS) en el traductor de Microsoft Edge, que obtuvo una recompensa de 20.000 $ (CVE-2021-34506), y cómo permitía comprometer a los usuarios en Facebook, Google y YouTube.

Cómo podíamos hackear cualquier empresa con un simple mensaje – recompensa de 20.000 $ [CVE-2021-34506]

La historia de un XSS universal (uXSS) en Microsoft Edge

Hola a todos , espero que estéis bien en esta pandemia & que la estéis aprovechando para aprender cosas nuevas en el día a día . Esta es la historia de cómo se puede hackear cualquier empresa, incluso las más grandes, como Facebook , Google , Microsoft, etc. ¿Cómo empezó todo esto? Para saberlo, tenemos que empezar desde cero .

El 3 de junio, yo, @Th3Pr0xyB0y (Vansh Devgan) & mi amigo @MrRajputHacker (Shivam Kumar Singh) estábamos cazando juntos en un subdominio de mail.ru (programa a través de Hackerone). Por desgracia, ese programa está en ruso y, como sabemos, Chrome traduce las páginas de otros idiomas de forma automática. Pero todos nosotros usamos Firefox con Burpsuite para trastear con las aplicaciones web, así que, cuando intentábamos encontrar vulnerabilidades en redacted.com (un subdominio de mail.ru), nos topamos con un montón de problemas al traducir en Firefox .

Así que buscamos extensiones de Firefox para traducir la página a un inglés legible. Mientras buscábamos en Google, descubrimos que habían retirado muchísimas extensiones porque contenían código vulnerable, y nos pusimos a pensar en el impacto que una extensión vulnerable puede tener en los usuarios del navegador. Al cabo de un rato pensé que estas extensiones tienen acceso universal a cualquier sitio del navegador: si estás en facebook.com, por ejemplo, pueden leer todo el DOM de la página, las cookies & cualquier cosa que sea posible con JavaScript. Por eso decidimos descartar la idea de buscar un fallo en el subdominio de mail.ru .

Ahora viene la parte interesante: como MrRajputHacker ya había encontrado varias vulnerabilidades en Microsoft, empezó a hablar de buscar más fallos en Microsoft, pero yo le propuse que probáramos a explotar un navegador o extensiones preinstaladas. Y como a MrRajputHacker le gusta buscar fallos en Microsoft , nosotros (Th3Pr0xyB0y & MrRajputHacker) decidimos que nuestro objetivo sería Microsoft Edge, ya que tiene un programa de recompensas .

Antes de lanzarnos definitivamente al navegador Microsoft Edge Th3Pr0xyB0y & MrRajputHacker pensamos: probemos a traducir la web en Microsoft Edge y a probarla una última vez (Edge acababa de recibir una actualización con un nuevo traductor de Microsoft). Así que volvimos al mismo sitio y, como nuestra mail.ru estaba llena de payloads XSS, descubrimos que, en cuanto traducíamos la página, aparecían un montón de popups en Microsoft Edge. Nos pareció raro. Volvimos a Chrome e hicimos lo mismo, pero esta vez ¡ningún popup !

Así que los dos nos pusimos a investigar a fondo y descubrimos que el traductor interno de Microsoft Edge (el que viene preinstalado) tiene código vulnerable: al traducir, toma cualquier etiqueta HTML que contenga una etiqueta “>img sin sanear la entrada ni convertir el payload en texto. De modo que ese traductor interno cogía el payload “>img src=x y lo ejecutaba como JavaScript, porque no había ninguna comprobación de validación adecuada que sanease o convirtiera primero todo el DOM en texto para luego procesarlo en la traducción .

A continuación tenéis el fragmento de código afectado; parece que la funcion startPageTranslation es la función que se veía afectada .

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;

Para demostrar que la vulnerabilidad existía, yo (Th3Pr0xyB0y) & MrRajputHacker creamos un archivo POC.html que contiene texto en distintos idiomas junto con el famoso payload XSS “><img src=x>

Abajo encontrarás el fragmento de código del archivo 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.

Ahora viene la parte especial de este blog: la explotación, o los pasos para reproducirla & la descripción de la vulnerabilidad

Nombre de la vulnerabilidad – uXSS (Universal Cross Site Scripting)

Descripción de la vulnerabilidad 

A diferencia de los ataques XSS habituales, el UXSS es un tipo de ataque que explota vulnerabilidades del lado del cliente en el navegador o en sus extensiones para generar una condición de XSS y ejecutar código malicioso. Cuando se descubren y explotan esas vulnerabilidades, se altera el comportamiento del navegador y sus funciones de seguridad pueden eludirse o desactivarse.

Pasos para reproducirlo –

1- Descarga el archivo POC.html desde el fragmento de código de arriba, o copia y pega el código en un archivo > renómbralo como POC.html y guárdalo

2- En la misma carpeta en la que está tu archivo POC, arranca un servidor python en localhost con el comando que aparece a continuación

python3 -m http.server 80

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

Lo mas probable es que, cuando leas este artículo, Edge ya se haya actualizado a una versión segura, y por eso quizá no puedas reproducirlo

4-El traductor te mostrará un mensaje diciendo que esta página está en otro idioma y preguntando: ¿quieres traducirla ? Haz clic en el botón de traducir

5-Boom, obtienes alert(1)

Ten en cuenta- La razón por la que levantamos un servidor python incluso para un archivo HTML es sencilla: a veces el traductor no aparece cuando solo abres la página HTML, seguramente porque document.location vale about:html cuando abrimos el archivo HTML sin más.

Dos condiciones para un exploit remoto →

1-La persona debe estar usando Microsoft Edge

2-La persona debe tener activada la traducción automática (AutoTranslate)

VÍDEO DEL POC →

Impacto –

Podemos resumir el impacto en los cuatro puntos siguientes

1- Cualquier página que refleje “><img src=x (o cualquier payload XSS) es vulnerable: solo necesitamos que se refleje

2- Cualquier persona de otro país (que no sepa inglés) que lea sobre XSS en un sitio en inglés está expuesta → porque lo traducirá (el XSS saltará como popup)

3- Todos los usuarios de Edge están expuestos a un XSS que puede dispararse en cualquier sitio web

4- Cualquier persona que reciba un correo o un mensaje cuyo contenido esté en otro idioma + un payload XSS (está expuesta)

Hay muchísimas posibilidades que pueden darse con este vector de ataque

Esta vulnerabilidad se conoce como XSS universal

Ahora, así es como podríamos haber hackeado Google & Facebook

Facebook → creamos un perfil con un nombre en otro idioma y un payload XSS y le enviamos una solicitud de amistad a la victima (que usa Edge). En cuanto vio nuestro perfil, quedó hackeada (popup XSS por la traducción automática)

Google → escribimos en Google una reseña de una empresa llamada HackENews en otro idioma + payload XSS; cualquier persona que abriera el enlace de esa reseña quedaba hackeada (popup XSS por la traducción automática)

Youtube → creamos un vídeo de YouTube y dejamos un comentario con un payload XSS+otro idioma; cualquiera que viera ese vídeo en Edge quedaba hackeado (popup XSS por la traducción automática)

YOUTUBE Y GOOGLE TIENEN EL MISMO VÍDEO DE POC

Aplicación de la Windows Store → descubrimos que una aplicación basada en web (por ejemplo, Instagram) de la Windows Store también es vulnerable a este ataque, ya que la Windows Store distribuye las aplicaciones con el mismo Microsoft Edge Translator que fue el responsable de desencadenar el ataque uXSS (Universal XSS) .

Cronología

3 de junio de 2021 : Informe enviado a Microsoft
7 de junio de 2021 : Respuesta de Microsoft, en revisión 
8 de junio de 2021 : Enviada información adicional sobre el impacto
15 de junio de 2021 : Informe clasificado 
17 de junio de 2021 : Concedida una recompensa de 20.000 $
19 de junio de 2021 : Parche previo a la publicación
24 de junio de 2021 : Actualización del parche desplegada & CVE asignado como CVE-2021-34506

Puedes consultar las notas de la versión y el agradecimiento de Microsoft aqui

uXSS Microsoft Edge Translator Bounty

Recursos para aprender –

1- Port-swigger Labs

2- Acuentix

3- Hacker-one Hactivity

Gracias a todos por leer . No olvidéis dejar un aplauso si os ha gustado .

Síguenos –

Twitter → @MrRajputHacker @Th3Pr0xyB0y

Instagram → @MrRajputHacker @vanshdevgan

Linkedin → MrRajputHacker @th3pr0xyb0y

Medium → @mrrajputhacker @th3pr0xyb0y

Artículos relacionados

Convierte estos análisis en un proyecto

Obtén una prueba de penetración dirigida por expertos senior y adaptada a tu stack - resultados accionables, no una checklist.

  • Retest gratuito de cada corrección
  • Alcance y presupuesto en 24 horas
  • Solo evaluadores sénior
  • ISO 27001
  • ISO 9001
  • OSCP
  • CRTP
  • CREST
Solicitar presupuesto