Durante los días 8,9 y 10 de mayo se está llevando a cabo la DragonjarCon , un evento de seguridad informática que reúne a grandes profesionales de este sector y a entusiastas para compartir conocimiento.
Durante el evento se llevó a cabo 3 retos web en los cuáles solo podían participar los asistentes al evento, los cuales están publicados en la siguiente URl: http://hubpi.co/retoxss/
el primer reto consiste en pasar un filtro XSS para ejecutar un alert: cuando se envía los parámetros algunos caracteres son convertidos a otros, como ejemplo ( «<» es convertido a «/») por lo que al ingresar: <script>alert(1);</script>
este devolvía: /script
Para pasar el filtro se requería comprobar todas los caracteres especiales para ver por cuáles se reemplazaban y así lograr pasar el filtro. una de las personas que resolvió de primero el reto creo un script en python que automatiza la tarea.
para saltar el filtro se debía enviar lo siguiente en el formulario: >script%alert+1(:>/script%
Luego se lograba el alert.
El segundo reto era más fácil la URL es http://hubpi.co/reto2/
Básicamente nos pide una clave. al revisar el código fuente vemos que hay un enlace hacia la ruta none.
al revisar se ve que la ruta es none, la cual tiene el contenido: p454573 que corresponde a la clave a ingresar en dicho formulario.
Tercer y último reto, este último daba un enlace hacia http://hubpi.co/reto2/h####$$.php sin embargo en el código fuente está comentado el siguiente mensaje: < ! -- 0 - 2000 || a - z -->
la pista era muy clara, se debía encontrar la url que se compone de un número entre 0001 y 2000 y dos letras que pueden estar entre la A y la Z. lo primero es revisar cuántas combinaciones posibles existen: 2000*26*26 = 1`352.000.
hay varias formas de identificar cuál era, Julian (alias Junix) y yo decidimos crear un script en bash que generara todas las combinaciones posibles.
luego sobre el archivo creado se partió en 10 partes iguales :
$> split -l 135200 listado.txt
y creamos un script que hiciera uso de wget para evaluar las combinaciones en cada archivo:
#!/bin/bash
for x in $(cat archivopequeno.txt); do
wget http://hubpi.co/reto2/h$x.php
done
para optimizar el rendimiento en el ataque usamos el script varias veces y en varios equipos,luego de unas horas encontramos que fue descargado el archivo h1337df.php.
al abrirlo via web ya llegabamos al final del reto. sin embargo es curioso por que el reto es vulnerable a full path disclosure.
El reto fue ganado por uno de los asistentes y este tipo de retos sirven mucho para motivar a las personas a demostrar sus habilidades técnicas.