************************************************************************************************
- Tuenti Security Issues (I de V)
- Tuenti Security Issues (II de V)
- Tuenti Security Issues (III de V)
- Tuenti Security Issues (IV de V)
- Tuenti Security Issues (V de V)
************************************************************************************************
Cuando comencé con la serie de Tuenti Security Issues recibí muchos ofrecimiento de colaboración, hoy os dejo 4 issues de @ldelgadoj.
Issue 14: Privacidad en los vídeos de Tuenti
El sistema que utiliza Tuenti para acceder a los metadatos de un video (y su reproducción) es a través de la API MediaPlayer, obteniendo la información a través del método getMetaDataById. El identificador del video es secuencial por lo que es trivial obtener los datos de cualquier video. Por lo tanto, independientemente de que los videos sean públicos en YouTube, tener en cuenta que es más fácil procesar los 4.100.000 que hay indexados en Tuenti. La petición es la siguiente:
[POST] http://www.tuenti.com/api
{"session_id":"SID","version":"mediaPlayer-0.1","requests":[["getMetaDataById",{"internalId":ID}]]}
A pesar de lo anterior, que podría ser considerado como una anécdota pues no podemos identificar al dueño de dicho vídeo, ¿podemos considerar nuestros canales/listas de reproducción como algo privado solo accesible a nuestros amigos?
Cual ha sido mi sorpresa al comprobar cómo podemos acceder a los vídeos de los canales de cualquier usuario de Tuenti sea éste nuestro amigo (lógico), o un desconocido con perfil público o privado.
Las peticiones son las siguientes:
Obtener los datos de los canales del usuario:Podemos acceder a los thumbs de los canales y el número de vídeos contenidos en éstos.
http://www.tuenti.com/?m=Search&func=get_playlists&page_key=7_USERID&ajax=1
Obtener todos los videos contenidos en un canal:
http://www.tuenti.com/?m=Video&func=view_videos&collection_key=15-USERID-0ajax=1
Así, si quieres ver los datos de los vídeos que han subido alguien, averigua su USERID y listo.
Issue 15: El cambio de nombre
Limitan el cambio de nombre a dos por año pero la validación es nula, y lo que hacen es no enviarte el formulario de cambio pero si guardas la petición y la replicas cuando la necesites puedes cambiarlo cuantas veces quieras. La petición es la siguiente:
[POST] http://www.tuenti.com/?m=Settings&func=process_change_name&ajax=1 csfr=CSFR&first_name=FNAME&surname=SNAME
Issue 16: La API y sus XSS de libro
Es curioso que nos encontremos en la API de Tuenti (activas desde por lo menos la versión 0.5 hasta la actual 0.7.1) vulnerabilidades de XSS “de libro”. Si se muestra un error con el código que ha introducido erróneamente el usuario, ¿no debería sanitizarse primero para evitar que pueda ser explotado? Aquí tenéis algunos ejemplos: 
No es difícil encontrar más errores de este tipo en la API, además, hasta hace poco los estados de los usuarios eran considerados como un dato público, con el peligro que conlleva (p.e se podía obtener el código pin del BBM de muchos usuarios, que lo ponían en su estado pensando que solo podrían verlo sus amigos).
Issue 17: También hay XSS de los de toda la vida sin validación
Como hemos podido observar en la Issue 16, los XSS de la API necesitan tener un SessionID válido para ser ejecutados. Puesto que Tuenti es una red social cuyo registro funciona por invitación, no podemos crear una cuenta fantasma y utilizar un SessionID de la misma (sería fácilmente traceable) por lo que habría que obtener uno. Como Tuenti sigue sin dar la opción de utilizar SSL, es trivial acceder a la cuenta de cualquier usuario que estuviera utilizando una red insegura y mandar una invitación a un email fantasma (vamos, ninguna complejidad si se quiere explotar).
Aun así, como era de esperar, no ha sido complicado obtener un XSS sin esta limitación, encontrándose otra vez en la API. Si introducimos una petición errónea, la API muy amablemente nos avisa del error cometido, por supuesto sin sanitzar.
Como podéis comprobar, la política de seguridad en el desarrollo de la API en cuanto a XSS brilla por su ausencia. Hemos decidido no hacer públicas las URLs explotables por XSS, aunque sean por POST y hagan difícil su explotación, porque están aún activas y esperamos reportarlas para que las corrijan.
************************************************************************************************
- Tuenti Security Issues (I de V)
- Tuenti Security Issues (II de V)
- Tuenti Security Issues (III de V)
- Tuenti Security Issues (IV de V)
- Tuenti Security Issues (V de V)
************************************************************************************************
- Tuenti Security Issues (I de V)
- Tuenti Security Issues (II de V)
- Tuenti Security Issues (III de V)
- Tuenti Security Issues (IV de V)
- Tuenti Security Issues (V de V)
************************************************************************************************
Cuando comencé con la serie de Tuenti Security Issues recibí muchos ofrecimiento de colaboración, hoy os dejo 4 issues de @ldelgadoj.
Issue 14: Privacidad en los vídeos de Tuenti
El sistema que utiliza Tuenti para acceder a los metadatos de un video (y su reproducción) es a través de la API MediaPlayer, obteniendo la información a través del método getMetaDataById. El identificador del video es secuencial por lo que es trivial obtener los datos de cualquier video. Por lo tanto, independientemente de que los videos sean públicos en YouTube, tener en cuenta que es más fácil procesar los 4.100.000 que hay indexados en Tuenti. La petición es la siguiente:
[POST] http://www.tuenti.com/api
{"session_id":"SID","version":"mediaPlayer-0.1","requests":[["getMetaDataById",{"internalId":ID}]]}
A pesar de lo anterior, que podría ser considerado como una anécdota pues no podemos identificar al dueño de dicho vídeo, ¿podemos considerar nuestros canales/listas de reproducción como algo privado solo accesible a nuestros amigos?
Cual ha sido mi sorpresa al comprobar cómo podemos acceder a los vídeos de los canales de cualquier usuario de Tuenti sea éste nuestro amigo (lógico), o un desconocido con perfil público o privado.
Las peticiones son las siguientes:
Obtener los datos de los canales del usuario:Podemos acceder a los thumbs de los canales y el número de vídeos contenidos en éstos.
http://www.tuenti.com/?m=Search&func=get_playlists&page_key=7_USERID&ajax=1
Obtener todos los videos contenidos en un canal:
http://www.tuenti.com/?m=Video&func=view_videos&collection_key=15-USERID-0ajax=1
Así, si quieres ver los datos de los vídeos que han subido alguien, averigua su USERID y listo.
Issue 15: El cambio de nombre
Limitan el cambio de nombre a dos por año pero la validación es nula, y lo que hacen es no enviarte el formulario de cambio pero si guardas la petición y la replicas cuando la necesites puedes cambiarlo cuantas veces quieras. La petición es la siguiente:
[POST] http://www.tuenti.com/?m=Settings&func=process_change_name&ajax=1 csfr=CSFR&first_name=FNAME&surname=SNAME
Issue 16: La API y sus XSS de libro
Es curioso que nos encontremos en la API de Tuenti (activas desde por lo menos la versión 0.5 hasta la actual 0.7.1) vulnerabilidades de XSS “de libro”. Si se muestra un error con el código que ha introducido erróneamente el usuario, ¿no debería sanitizarse primero para evitar que pueda ser explotado? Aquí tenéis algunos ejemplos: 
Figura 15: Un XSS en la API |
Figura 16: Otro XSS en la API |
No es difícil encontrar más errores de este tipo en la API, además, hasta hace poco los estados de los usuarios eran considerados como un dato público, con el peligro que conlleva (p.e se podía obtener el código pin del BBM de muchos usuarios, que lo ponían en su estado pensando que solo podrían verlo sus amigos).
Issue 17: También hay XSS de los de toda la vida sin validación
Como hemos podido observar en la Issue 16, los XSS de la API necesitan tener un SessionID válido para ser ejecutados. Puesto que Tuenti es una red social cuyo registro funciona por invitación, no podemos crear una cuenta fantasma y utilizar un SessionID de la misma (sería fácilmente traceable) por lo que habría que obtener uno. Como Tuenti sigue sin dar la opción de utilizar SSL, es trivial acceder a la cuenta de cualquier usuario que estuviera utilizando una red insegura y mandar una invitación a un email fantasma (vamos, ninguna complejidad si se quiere explotar).
Aun así, como era de esperar, no ha sido complicado obtener un XSS sin esta limitación, encontrándose otra vez en la API. Si introducimos una petición errónea, la API muy amablemente nos avisa del error cometido, por supuesto sin sanitzar.
Como podéis comprobar, la política de seguridad en el desarrollo de la API en cuanto a XSS brilla por su ausencia. Hemos decidido no hacer públicas las URLs explotables por XSS, aunque sean por POST y hagan difícil su explotación, porque están aún activas y esperamos reportarlas para que las corrijan.
************************************************************************************************
- Tuenti Security Issues (I de V)
- Tuenti Security Issues (II de V)
- Tuenti Security Issues (III de V)
- Tuenti Security Issues (IV de V)
- Tuenti Security Issues (V de V)
************************************************************************************************
Ya me imaginaba que tuenti, muy seguro no era, pero me ha sorprendido lo del XSS y sobretodo el poder cambiar el nombre.
ResponderEliminarlos xss por post hacen dificil su explotación? hay pajaro!, sabrás tu de lavadoras
ResponderEliminar@guyrulez... desde luego no lo vas a poder enviar en un link por GET sin usar javascript.... friend...
ResponderEliminarSaludos!
¿Y la dificultad?
ResponderEliminar@Guyrulez, te veo muy hax0r, ilústranos anda, que vamos a hacer un nuevo reto de XSS y nos vendrían muy bien tus ideas...
ResponderEliminarSaludos!