En esta ocasión hagamos el reto Cookies de picoCTF. Este reto es el segundo en listado en la sección de explotación web de la plataforma.
Las ‘cookies’ son pedazos de código con nuestras preferencias que los servidores web almacenan para ofrecer una mejor experiencia de uso a todos los usuarios que los visitan. Dentro de ellas a veces se puede encontrar información valiosa, o manipularse en contra del servidor. Comencemos:
- Reto: Cookies
- Descripción: Quién no ama las galletas? Trata de averiguar la mejor.
- Dominio: http://mercury.picoctf.net:21485/
Al dirigirnos al dominio de este reto, encontramos la siguiente página con la leyenda “Bienvenidos a mi página de búsqueda de cookies. Mira cuanto me gustan los diferentes tipos de cookies“, un cuadro de texto y un botón. También notamos que en el cuadro de texto antes mencionado, aparece una palabra como sugerencia, veamos que pasa cuando busquemos dicha palabra:
El servidor nos muestra una respuesta “Amo las galletas snickerdoodle“, las mismas que buscamos. Y un mensaje en color verde “Esa es una cookie! Aunque no es muy especial…” Eso no nos ayuda mucho, pero nos da una idea, debe haber otra cookie que sea la que estamos buscando. Que tal si hacemos uso de Burpsuite para ver la comunicación entre cliente-servidor.
Volvemos a realizar el paso anterior, buscando el mismo nombre y presionando el botón ‘Search ‘. La petición interceptada la podemos enviar al Repeater para ver la respuesta a fondo:
Prácticamente vemos la misma respuesta pero en código puro. Aunque, existe algo que me llama la atención, la variable “Cookie: name=0 ” que podemos apreciar en el número 10 de la petición del lado izquierdo en la imagen -el intentar penetrar un sistema o servicio puede ser algo tedioso, tardado, probablemente basado en intuiciones para hallar una vulnerabilidad, y en muchas ocasiones realizando diversos métodos de ataque a prueba y error-. Y dado que este reto definitivamente tiene algo que ver con las cookies, probemos cambiando ese número 0 por algún otro número para ver que responde el servidor:
Hemos cambiado el 0 por un 1, y el servidor responde con otro nombre de galleta. Lo que significa dos cosas; la primera es que tenemos un avance. Y la segunda es que muy probablemente la cookie que buscamos debe ser solicitada por algún otro número.
Para seguir por este camino especulativo, podemos hacerlo de dos maneras, manualmente cambiando el número como lo acabamos de realizar, o automatizando las peticiones. Por supuesto que Burpsuite nos ofrece ambas. Para hacerlo de forma automática, demos click derecho sobre la petición y seleccionamos “Send to Intruder “.
Esta opción nos permite cambiar una variable en las peticiones de forma automática. Lo que en un entorno profesional puede ser de mucha ayuda al poder ahorrarnos demasiado tiempo. Para ello seleccionamos la parte del código que queramos automatizar, en este caso el número 0 de la variable “Cookie: name= “, y presionamos el botón ‘Add ‘ ubicado del lado derecho de la ventana. Veremos como lo seleccionado cambia de color y un par de símbolos son agregados por ambos lados.
Para configurar nuestro ataque nos vamos a la pestaña Payloads, y en la sección ‘Payload Sets ‘ definimos el ‘Payload set ‘ en 1, y el ‘Payload type ‘ como Numbers. Después continuamos en la sección ‘Payload Options [Numbers] ‘ seleccionado el tipo como Sequential, que vaya del número 1 hasta el número que desees, en este caso yo elegí el 35, y que su incremento sea sólo de uno como se alcanza a apreciar en la imagen anterior. Una vez configurado el payload, podemos presionar el botón “Start attack ” de color naranja para que Burpsuite haga su trabajo.
Automáticamente la herramienta nos abrirá una nueva ventana con datos de cada petición hecha al servidor, y el resultado por cada vez que modificó la petición de acuerdo a los parámetros configurados por nosotros en el paso anterior. Ahora sólo queda esperar a ver que resultados arrojará el ataque. Yo te recomiendo seleccionar que la información sea en listada por tamaño, ya que de esa manera podemos ver reales diferencias entre todas las peticiones hechas. Para ello sólo basta con dar un click sobre la columna ‘Length ‘.
Una vez avanzado el ataque, veremos que la petición número 18 nos arroja un tamaño tanto distinto (1265) de las demás (1930’s), algo que puede ser de utilidad para nuestro propósito. Veamos que contiene la respuesta:
¡Y hemos encontrado la cookie con mejor sabor! El número de la suerte que estábamos buscando es el 18, y por lo siguiente el servidor nos otorga nuestra segunda bandera en picoCTF.