lunes, 13 de julio de 2015

Google Vulnerabilities Cocktail

En este post vamos a aprender cómo preparar un delicioso cóctel de vulnerabilidades no parcheadas por Google. Este cóctel es ideal para aquellas ocasiones en las que quieras sorprender a alguna desprevenida víctima y "hackear" su correo o robarle algún otro tipo de información personal.



Ingredientes

Para nuestro cóctel necesitaremos los siguientes ingredientes:
  • Dos fallos de redirección no validada como base para mezclar los demás ingredientes.
  • 1/2 vulnerabilidad XSRF Logout.
  • Una página de phishing alojada en Google Groups para burlar los controles anti-fraude.
  • PHP, JavaScript, HTML, CSS y creatividad al gusto.

Preparación

Empezaremos preparando la base de redirecciones. Para ello debemos conocer un fallo de Open Redirect en Google descubierto recientemente por @NaxoneZ. En resumen, él descubrió que el dominio "goo.gl" no está filtrado en los mecanismos de redirección que emplea Google en ciertas URLs. Recordemos que "goo.gl" es el dominio de los enlaces generados por el servicio URL Shortener de Google. En consecuencia podemos aprovechar esto para hacer redirecciones hacia cualquier web desde URLs vulnerables de Google.

La PoC presentada por @NaxoneZ es la siguiente:

https://security.google.com/settings/security/secureaccount?continue=http://goo.gl/SAQ0Gk

Sin embargo, para nuestro cóctel utilizaremos estas dos:
  • https://myaccount.google.com/signin?continue=[REDIRECT-HERE]
  • https://accounts.google.com/Logout?continue=[REDIRECT-HERE]
La primera (myaccount.google.com/signin), mostrará a la víctima el verdadero formulario de inicio de sesión de Google y, luego de que ésta inicie sesión con sus credenciales reales, le enviará a la URL indicada por el parámetro "continue". La segunda URL (accounts.google.com/Logout) la usaremos para hacer una redirección hacia la primera. La razón de ello, a continuación.

Para que, al acceder a "myaccount.google.com/signin", se muestre el formulario de login, no debería existir una sesión iniciada previamente. Si el usuario ya tuviera una sesión abierta, la redirección se ejecutará inmediatamente y eso no es lo que buscamos. Por ello, primero debemos forzar el cierre de las sesiones activas. Eso es precisamente lo que hace "accounts.google.com/Logout". Abrir esa URL provoca el cierre de todas las sesiones de Google que estén activas en nuestro navegador. Eso se puede considerar una vulnerabilidad XSRF, sin embargo hay opiniones divididas al respecto. Lo cierto es que algunos, incluido Google, han optado por no parchar los XSRF Logout y considerarlos un "comportamiento no deseado" mas no una vulnerabilidad.

Hasta el momento ya tenemos la base del cóctel:

https://accounts.google.com/Logout?continue=https://myaccount.google.com/signin%3Fcontinue%3D[REDIRECT-HERE]

Primero cerramos las sesiones activas, luego mostramos el login real de Google y, cuando el usuario inicie sesión, lo enviamos a nuestra página de phishing... }:)

Para terminar el cóctel debemos preparar una página de phishing donde robar la contraseña. Mi recomendación es guardar el phishing en Google Groups pues así cargará más rápido, será menos sospechoso y no dará problemas con controles anti-phishing/anti-fraude, total el dominio sigue siendo de Google...

La temática del phishing es a gusto de cada uno. Por ejemplo, a mi se me ocurrió mostrar una página con el mensaje de "Contraseña Incorrecta" y así engañar a la victima para que ingrese nuevamente su clave. Luego redirijo al inbox de Gmail y nadie sospecha nada.

Cuando tengas el phishing cargado en Google Groups (o en algún  otro lugar) cojes su URL y la acortas con Google URL Shortner para finalmente añadirla a nuestra preparación.

https://accounts.google.com/Logout?continue=https://myaccount.google.com/signin%3Fcontinue%3Dhttp://goo.gl/XXXXXX

Batir de 20 a 30 segundos y... ¡El cóctel ya está listo!

Recomiendo servirlo frío, por email en bandeja de entrada y acompañarlo de alguna buena excusa que invite a tu víctima a dar clic sobre el enlace.


Prueba de Concepto

La siguiente prueba de concepto es inofensiva, solo le muestra a la víctima un alert con su contraseña.

La URL del phishing es la siguiente:

https://06921491238832754536.googlegroups.com/attach/7c05a130114393b3/google.html?part=0.1&view=1&vt=ANaJVrF2Bi8w6RYBE-O3D9n02o7QdR4UiuOiL4sAxFzvWzYlAQ-m6_B9ZJOQLDMsKA54x-mwjOCG2mhIEXHNmiMiBwm7GajLbGHGBQRb9LxWZmCIaL9kSgs#Test User|test@gmail.com

Puedes cambiar la parte resaltada en rojo con los datos de algún otro usuario al que quieras sorprender xD

Esta es la URL anterior pero acortada con "goo.gl":

https://goo.gl/69AKdu

Y así queda la URL final:

https://accounts.google.com/Logout?continue=https://myaccount.google.com/signin%3Fcontinue%3Dhttps://goo.gl/69AKdu

PoC: Click Here (reportada como phishing)
PoC: Click Here


Vídeo



Descargo de Responsabilidad
  • Lo expuesto en este post fue reportado al equipo de seguridad de Google y ellos concluyeron que: "this is not a security vulnerability. Phishing is a social engineering attack, not a technical bug, and the application behavior described is working as intended". Por lo que es de suponerse que no habrá parche.
  • El formato de receta empleado en la redacción de este artículo es únicamente un artificio empleado por el autor en un intento de hacer más amena la lectura. De ninguna manera debe interpretarse como una incitación a la comisión actos ilícitos.
  • El fin último del presente artículo y de este blog en general es la difusión de conocimiento. El autor no se hace responsable por los daños directos o indirectos producto del mal uso de esta información.

Referencias

Un saludo.


Actualización: La PoC ha sido reportada como phishing xD Pero aún pueden ver la demo en vídeo.

No hay comentarios:

Publicar un comentario