Tuenti tiene un fallo que permite sacar datos privados

TuentiAdictos ha descubierto un fallo de seguridad en Tuenti que permitía sacar cualquier información de la base de datos de Tuenti. Se podía extraer todos los datos privados (contraseña, email, teléfono, etc.) de cualquier usuario de Tuenti mediante inyección de código SQL.

Recientemente se descubrió un fallo de seguridad que también permitía insertar código SQL desde la versión de Tuenti Móvil (http://m.tuenti.com), pero en este caso se ha encontrado repetido el fallo en www.tuenti.com y podía ser usado por cualquier usuario registrado mediante el parámetro other_user 

Cuando se está viendo un perfil público o de cualquier amigo, en la parte derecha nos muestra los amigos de esa persona y en la parte inferior se puede encontrar la opción “Ver todos”, que muestra todos los amigos de la persona que le estamos visitando el perfil y nos aparece escrita una dirección web como la siguiente;

http://www.tuenti.com/#m=Search&func=index
&scope=friends_of_a_friend&other_user=XXXXXXXX

Las X serían el número del usuario al que le estamos viendo sus amigos (solo se pueden ver los amigos para los que tengas permisos)

Utilizando la explicación que en su día dió Pepelux, si le añades al número de usuario código SQL, la página web se cargará si cumple la condición, y no cargará correctamente si no se cumple la condición.

Por ejemplo;

Si se añade …&other_user=XXXXXXXX+and+1=1 , se está cumpliendo que “uno es igual que uno”, por lo que la página se cargará.

Si se añade …&other_user=XXXXXXXX+and+1=0 , no se está cumpliendo que “uno es igual que cero“, por lo que la página no se cargará correctamente.

Si se tiene conocimientos de SQL se puede crear sentencias para ir averiguando el nombre de las tablas de datos y cada una de sus columnas.

Un ejemplo completo en fáciles palabras que permitía sacar la contraseña de cualquier usuario;

cuenta el número de resultados de la tabla que tiene los usuarios y que el usuario sea el que tiene el código 123456 y su contraseña empieze por H

select count(*) from registrados where usuario=123456 and substring(contraseña,1,1)=’H’

Si le ponemos la condición de que el número contado sea mayor que cero, solo se cumpliría si es verdad que la contraseña del usuario 123456 empieza con H.

http://www.tuenti.com/#m=Search&func=index
&scope=friends_of_a_friend&other_user=XXXXXXXX+and(select count(*) from registrados where usuario=123456 and substring(contraseña,1,1)=’H’)>0

De esta forma se puede ir probando cada una de las letras o números, la web solo carga correctamente si es el correcto. El proceso se podría automatizar mediante algún programa informático que lo haría rápidamente, aunque para sacar realmente una contraseña se podría hacer a mano en poco rato, ya que las contraseñas en Tuenti se almacenan cifradas en MD5 (32 carácteres en hexadecimal), por lo que cada carácter solo puede ser un dígito o una letra de la ‘a’ a la ‘f’

La inyección fallaba algunas veces, ya que si intentabas acceder directamente a la url con el código de inyección escrito, al precargar la página de Tuenti era filtrado y no funcionaba, por lo que había que hacer el camino de visitar un perfil y pulsar en “Ver todos sus amigos”

El fallo fue notificado al equipo de Tuenti y tras unas horas se pusieron en contacto para resolverlo.

Actualización 12-8-2009; Decir que ninguna aplicación informática está libre de fallos, el problema sería que Tuenti no reaccionase para solventar los bugs y la verdad es que se toman los asuntos de seguridad bastante en serio.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*Acepta la Política de Privacidad