Anteriormente hemos hablado sobre las cookies en las aplicaciones web, su diseño y vulnerabilidades. Sin embargo, otro punto para tener en cuenta es la fortaleza que poseen los tokens utilizados por las aplicaciones web.

En el momento de realizar una auditoría de seguridad sobre una aplicación web, uno de los factores a tener en cuenta es la fortaleza de las sesiones. De esa manera, existen maneras de realizar un análisis sobre cuál es la robustez de los tokens generados por la aplicación web. Es importante recordar que los tokens son los que a través del uso de cookies permiten validar la identidad del usuario.

Existen herramientas que permiten verificar cual es la fortaleza de los tokens generados por una aplicación web. En este caso, utilizaremos Burp Suite que brinda la posibilidad de realizar conexiones con un proxy local permitiendo interceptar todas las peticiones que se realizan a un servidor remoto y modificarlas para poder llevar a cabo las pruebas necesarias.

Burp Suite

Activando el módulo para interceptar, se realiza una petición a la aplicación web que se desea analizar. De esta manera, pueden observarse todos los parámetros y de qué forma se establece la cookie de sesión:

Seteo de cookie de sesión de PHP

En este caso, corresponde a una cookie de sesión de un servidor Apache con PHP instalado. La gran mayoría de los servidores suelen distinguir cómo se establecen las cookies, modificando el parámetro (a la izquierda del símbolo “=”) durante la asignación de la misma.

Continuando con el análisis, Burp Suite indica como es el token generado. Sin embargo, en esta instancia, aún no se cuenta con suficiente información sobre cuál es la fortaleza del token así como tampoco que tan robusto es su índice de aleatoriedad. Para poder llevar a cabo el estudio, apelamos a la utilización del módulo “sequencer” que provee la misma herramienta. Éste módulo permite simular de forma automática las peticiones que se acaban de realizar con la finalidad de obtener tokens distintos para luego trabajar sobre la colección obtenida. Para utilizar el sequencer solo hace falta enviar la petición original a dicho módulo tal como se visualiza en la siguiente captura:

Módulo Sequencer

Cuando se cuenta con la petición que contiene la cookie de sesión ya establecida, es posible iniciar el sequencer para comenzar a obtener todos los tokens generados por la aplicación web bajo estudio:

Capturando Tokens

Vale destacar la importancia de obtener la mayor cantidad de tokens posibles, debido a que mientras mayor sea la colección, más preciso será el estudio. La colección de datos (en este caso tokens) es el dominio que se utilizará para llevar a cabo el análisis, por lo que si es muy acotado los resultados pueden distar de la realidad.

En primera instancia, los resultados muestran que el conjunto de caracteres en cada posición dentro del token es alto, es decir, cada posición contiene todos los posibles caracteres dentro del dominio. Esto posee un impacto directo en la dificultad para romper la cadena del token a través de un ataque de fuerza bruta.

Conjunto de caracteres

También es posible obtener un estimativo de la entropía en cada uno de los caracteres. A continuación se adjunta una captura con el gráfico correspondiente indicando 128 bits de fortaleza:

Entropía de los bits

Finalmente, para quienes deseen realizar un estudio más detallado sobre la colección de datos obtenidos, es posible importar el conjunto de tokens obtenidos, que en este caso fueron más de 20000:

Listado de tokens

La auditoría de aplicaciones web es fundamental a la hora de evaluar la seguridad de dicho sistema. Debido a esta preocupación, en ESET Latinoamérica contamos con la nueva unidad de negocio ESET Security Services, donde ofrecemos este tipo de servicios para aquellos interesados en descubrir posibles vulnerabilidades antes que los atacantes lo hagan.

Fernando Catoira
Analista de Seguridad