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>

Joomla Scan

Otra vez Pepelux nos vuelve a traer una utilidad, se trata del JoomlaScan. Es un programa que haciendo un análisis de ciertos ficheros consigue sacar con exactitud la versión Joomla de una web. Aparte también muestra las últimas vulnerabilidades Joomla aparecidas en Security Focus.

Disponible en versión Windows y en Perl.

Descargar versión Windows Descargar versión Perl

Shellcodes y Exploits en Win32

De nuevo Pepelux nos trae un documento, esta vez sobre creación de shellcodes y exploits en entornos win32.

En formato TXT.

Descargar

Explotación de servicios web

Nuevo texto de Pepelux sobre implementación y explotación de servicios web.

En formato PDF.

Descargar

eNYe-Spider v1.0

Programa que analiza remotamente una web sacando la estructura de ficheros y directorios … vamos, lo que es un spider o web crawler.

Está diseñado para que compruebes las vulnerabilidades de tu web e incluye algunos extras: posibilidad de usar un servidor proxy, discrimina los ficheros que aceptan parámetros por GET o POST, permite escribir anotaciones sobre los escaneos, navegador web integrado y permite guardar los análisis en disco.

Descargar | Ver captura de pantalla

Explotar vulnerabilidades web

Pepelux nos vuelve a traer un documento, esta vez sobre vulnerabilidades web que permiten acceder al sistema.

Existen muchas vulnerabilidades que nos permiten explotar una web, todas muy antiguas y documentadas. Tenemos ataques LFI, RFI, SQL, XSS, SSI, ICH, etc. Por ese motivo este texto se va a centrar unicamente en aquellos ataques que permiten acceder al sistema y ejecutar comandos remotamente.

Descargar (Castellano) | Download (English)

¿ Te gusta jugar al KMines ?

Breve texto que explica un fallo en el diseño de las comunicaciones entre este juego (buscaminas) y el servidor que controla la puntuación. Mediante el estudio de los paquetes enviados se puede llegar a adivinar la forma de conseguir la máxima puntuación con el mínimo esfuerzo ;-).

–> DESCARGAR <–

2 Advisories y un (mini) Texto

De nuevo Pepelux nos trae varias cosillas. Por fin inauguramos la sección de Advisories (¡ya era hora!): se trata de un bug en la herramienta web de gestión de enlaces Linklist Addalink, y otro en el CMS MyBlog que permite el acceso como administrador.

Aparte nos deja un minitexto sobre fallos en el diseño de la comunicación entre el juego KMines y el servidor que controla las puntuaciones.

Advisory Addalink | Advisory MyBlog | Texto KMines

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 <–

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