Espiar y suplantar a usuarios en Viber (autenticación bug) [solucionado]

Viber PIN Activación PCEditado: Informé a Viber el 26/06/2013 y en menos de 12 horas lo solucionaron.

Hace unos días me dio por analizar unas cuantas aplicaciones de mensajería instantánea para móviles, a ver si encontraba algún fallo de seguridad. Inicialmente mi intención era fijarme en las versiones para PC del Line y del Viber, y empecé por esta última.

Analizando el proceso de autenticación de la aplicación para PC del Viber encontré varios fallos de seguridad que permiten averiguar el PIN que utliza, lo que permite acceder a dicha cuenta del Viber desde el ordenador, con lo que ello implica: espiar conversaciones en tiempo real (imágenes que se envían incluidas), espiar el histórico de llamadas, suplantar la identidad, y acceso a la agenda de contactos. Todo esto sin que la «victima» se percate prácticamente de nada: sólo recibe un mensaje en el Viber (móvil) una única vez indicándole un PIN.

Más o menos el proceso de autenticación es el siguiente…

Se instala la aplicación del Viber para PC y al ejecutarla te pregunta si tienes algún móvil (da igual la plataforma) con Viber ya funcionando. Le dices que sí y te pregunta el número de móvil, lo introduces y llegará al Viber en el móvil un mensaje con un PIN de 4 dígitos, el cual tienes que escribir en la aplicación del PC y ya tienes el Viber autenticado en tu ordenador. El primer error es claro: ¿un PIN de 4 dígitos?, es totalmente insuficiente desde el punto de vista de la seguridad.

Internamente lo que hace la aplicación cuando introduces tu número de móvil en el PC (primer paso), es generar una cadena (pseudo)aleatoria de 40 caracteres de longitud que se usará más adelante como clave para identificar tu cuenta de Viber. Esto lo hace el propio programa sin consultar antes al servidor, con la siguiente petición HTTPS:

<RegisterUserRequest>
    <PhoneNumber>660100200</PhoneNumber>
    <PushToken></PushToken>
    <CountryIDDCode>34</CountryIDDCode>
    <UDID>27b828c2768a7d7b65cg7dced6icb2aa90420c29</UDID>
    <DeviceType>Desktop</DeviceType>
    <SystemVersion>NT6.1</SystemVersion>
    <System>Windows</System>
    <ViberVersion>3.0.1</ViberVersion>
    <SecondaryDevice>1</SecondaryDevice>
</RegisterUserRequest>

Si interceptas ese UDID (en tu ordenador), luego puedes calcular el PIN que ha llegado a la aplicación del Viber en el móvil. Cada vez que la aplicación para PC intenta validar un PIN lo que hace es una petición HTTPS como la siguiente:

<ActivateUserRequest>
    <UDID>27b828c2768a7d7b65cg7dced6icb2aa90420c29</UDID>
    <ActivationCode>1234</ActivationCode>
    <ProtocolVersion>14</ProtocolVersion>
    <System>Windows</System>
</ActivateUserRequest>

Como vemos vuelve a utilizar el UDID, e intenta validar el PIN 1234.  Viber (del lado del servidor) tiene una protección por la que si metes mal el PIN 3 veces el sistema se bloquea, el problema es que se puede saltar. Seguramente porque el sistema utiliza una base de datos MySQL y el UDID se guarda en un campo de tipo VARCHAR (u otro no binario), la comparación que realiza no distingue si añades espacios en blanco al final del UDID o si cambias una minúscula por una mayúscula y viceversa. Con lo cual, con este pequeño truco puedes enviar muchísimos más intentos y no sólo 3.

El UDProbando PINs ViberID que acepta el servidor tiene una longitud máxima, con lo cual no puedes añadir espacios hasta el infinito. Pero teniendo en cuenta que te deja 3 intentos por cada UDID, que puedes añadir bastantes espacios (más de 300) y que puedes ir jugando con las minúsculas/mayúsculas: el resultado es que con tal de que el UDID tenga 8 letras ya es suficiente para llegar a las 9000 combinaciones diferentes de UDID para poder probar todos los PIN posibles (en las pruebas que he realizado siempre genera un UDID con más de 8 letras).

He hecho un pequeño programilla que prueba todos los PIN, desde el 1000 hasta el 9999, tarda algo menos de 2 horas en probarlos todos. Una vez con el PIN + una key que devuelve el servidor, hay que interceptar la petición que hace el Viber para PC y modificar la respuesta al vuelo con un proxy como Burp Suite (el PIN será invalido puesto que ya lo has validado anteriormente al hacer la petición para comprobar si era correcto). Una vez hecho esto se consigue acceso completo a la cuenta de Viber desde el ordenador.

Hay que resaltar que no se recupera el historial de mensajes y llamadas anteriores a ese momento, sino que se empezarán a sincronizar desde entonces en adelante.

BaseKit bug XSS Advisory

Hace casi un mes y medio me puse en contacto con la empresa BaseKit.com para avisarles de un bug XSS (Cross Site Scripting) en sus sistemas. Según me dijeron en 15 días (o menos) estaría solucionado, pero ya ha pasado casi el triple de tiempo y no lo han arreglado, así que he decidido publicarlo.

BaseKit es una compañía que vende un servicio online para diseñar páginas web a través de un editor online, aparte de otros servicios integrados como el propio hosting de las páginas web. Según su publicidad se han creado unas 228.000 webs utilizando sus servicios.

Su sistema utiliza el módulo de HTTP rewrite, diseñado de una forma por la que nunca se alcanza un error HTTP 404. Todas las URL’s generan el siguiente código HTML:

<link rel=»stylesheet» type=»text/css» href=»http://DOMAIN.COM/PATH?startcss=true» />

PATH no es filtrado de ninguna manera, por lo tanto se puede poner código HTML en la URL y será copiado al código HTML de la página.

Por ejemplo, la URL:

http://DOMAIN.COM/»><script>alert(document.cookie);</script>

será copiada como:

<link rel=»stylesheet» type=»text/css» href=»http://DOMAIN.COM/»><script>alert(document.cookie);</script>?startcss=true» />

De esta forma es posible inyectar código javascript en el código fuente de todas las páginas web creadas en BaseKit.com.

Viendo su página web aparecen varios ejemplos de webs creadas con sus sistemas, en las que se puede comprobar la inyección javascript, como por ejemplo en:

http://www.instalcesped.com/»><script>alert(document.cookie);</script>

MyBlog <= 0.9.8

MyBlog es un proyecto Blog/CMS de código abierto. Permite a los principiantes tener un sencillo blog/cms con posibilidad de añadir plugins, temas y módulos. Un fallo en la gestión de cookies permite que se pueda acceder con nivel de administrador.
–> DESCARGAR ADVISORY <–

Addalink <= 4 beta

Un fallo en la herramienta de gestión de enlaces Linklist Addalink permite insertar enlaces sin necesidad de aprobación, y manipular datos de la BBDD como el contador.
–> DESCARGAR ADVISORY <–

eNYe Sec  |  Seguridad Informática · Green Hope Theme por Sivan & schiy · Ejecutando WordPress