miércoles, mayo 18, 2011

Solucionario a Reto Hacking Infiltrados (1 de 3)

**********************************************************************************************
- Solucionario a Reto Hacking Infiltrados by pepelux (1 de 3)
- Solucionario a Reto Hacking Infiltrados by pepelux (2 de 3)
- Solucionario a Reto Hacking Infiltrados by pepelux (3 de 3)
Autor: @pepeluxx
**********************************************************************************************

URL del Reto: Reto Hacking Infiltrados

1- Introducción

La verdad es que me encantan los retos que prepara Chema Alonso porque están muy cuidados estéticamente. Es cierto que este reto, como su antecesor, son validados por personas físicas y llega a ser un poco coñazo, tanto para los participantes que tenemos que esperar a veces media hora para ver si una prueba es válida, como para los pobres que están varias horas al día validando nuestros numerosos intentos.

Este tipo de retos tienen como inconveniente el factor humano; y es que hay veces que una respuesta te la toman como mala y la vuelves a mandar y te la toman como buena, pero bueno, es parte del reto.

Cuando me registré y vi los logos de Google Chrome, Firefox e Internet Explorer, empecé a olerme (supongo que como todo el mundo) que se trataba de un reto basado en vulnerabilidades XSS, pues tenía toda la pinta de que el reto iba de saltarse algo en los 3 navegadores. Así que un buen comienzo, antes de empezar el reto, es leerse bien los solucionarios del BrowserSchool, escritos por Beni (buena pieza este Beni, jeje).

2- Análisis del reto

Ya pagué la novatada en el reto de BrowserSchool y me puse a probar a lo loco sin entender la dinámica del reto y, en ese caso, creo que no pasé más que un navegador; así que esta vez, me lo tomé con más calma y me leí y releí la ayuda del concurso y, me tomé mi tiempo en pensar cual era la finalidad de todo esto, antes de empezar a mandar y sufrir la larga espera de cada validación.

Tenemos 3 puertas que dan acceso a 3 salas diferentes. Cada una gestionada por un administrador, el cual usa diferente navegador para gestionar las incidencias de los usuarios.

Nosotros no tenemos acceso ya que desconocemos las claves de las salas pero, según la ayuda, el administrador es capaz de entrar a su sala sin necesidad de introducir clave alguna. Esto es importante ya que sabemos que no hay que robar ninguna clave sino que todo apunta a que hay que hacerse pasar por administrador para entrar.

Lo que nos aparece al entrar en la sala de validación es esto:


Figura 1: Puertas sin abrir


3- Fase I

Voy a escribir la solución de cada navegador por orden, tal y como yo lo pasé.

El primero en caer fue Firefox. Creo que está más que demostrado que ante errores de XSS es de los más permisivos y, por tanto, es al que más fácilmente se la podemos colar.

Analizando la página de acceso (inicioReto.aspx) vemos que al pinchar en una de las puertas se recarga la página y nos carga nuestro ID de usuario en la URL (en mi caso, inicioReto.aspx?idUsuario=950e8c2b-3a74-4f24-a809-40d32a9f73b6) y también vemos que ese ID de usuario se escribe abajo del todo. Si probamos vemos enseguida que existe una vulnerabilidad XSS. Por ejemplo:


Figura 2: XSS en inicioReto.aspx?idUsuario=xxx<script>alert('XSS')</script>;

Por supuesto, todas estas pruebas las realicé desde un Firefox, ya que, como dije, es el más permisivo en cuando a XSS.

Por otro lado, si mandamos alguna incidencia vemos que nos llega una copia del mail que recibe el administrador. En este mail viene nuestro usuario, la descripción de la incidencia y un link hacia inicioReto.aspx. En ese link viene asociado nuestro ID de usuario.

Si mandamos otra incidencia de prueba y la capturamos, por ejemplo, con el TamperData, vemos:


Figura 3: Datos envíados interceptados por TamperData

Ese enlace que le llega es lo que aparece en el campo ctl00%24cph2%24tbUrl. Por tanto, podemos tratar de meter algo para que al pinchar, y acceder a la web, explote la vulnerabilidad XSS que hemos encontrado.

En un principio pensé que había que robar la cookie del administrador para luego acceder nosotros manualmente con esa cookie y estuve probando algunas inyecciones en las que trataba de robar esa cookie. La forma de hacerlo fue intentando enviar un document.cookie hacia mi máquina, pero no tuve éxito.

Pensando un poco en lo que ponía en la ayuda, acerca de que el administrador entraba de forma automática, pensé que igual se podía hacer justamente al contrario, es decir, si el admin entra de forma automática, inyectarle a él mis datos para que entre usando su cookie pero con mi ID de usuario. Y así fue como ocurrió.

Si vemos el código fuente de la página nos encontramos con un campo llamado ctl00$cph2$hfidUsuario que contiene nuestro ID de usuario. El admin al entrar en la página, evidentemente tendrá el suyo. Por tanto, lo que vamos a tratar de hacer es cambiarlo para que acceda a la web con el nuestro y acto seguido, hacer un submit para que acceda, de forma automática, por la puerta correspondiente (recordemos que el admin NO necesita validación, por lo que un simple submit hará que pase por la puerta sin tener que escribir su clave de acceso).

Ahora el tema está en cómo saltar los filtros de cada navegador para poder hacer esto.

**********************************************************************************************
- Solucionario a Reto Hacking Infiltrados by pepelux (1 de 3)
- Solucionario a Reto Hacking Infiltrados by pepelux (2 de 3)
- Solucionario a Reto Hacking Infiltrados by pepelux (3 de 3)
Autor: @pepeluxx - http://www.pepelux.org - http://blog.pepelux.org
**********************************************************************************************

8 comentarios:

grayhat dijo...

Que pena la verdad es que iba encaminado en el reto, pero creo que no le pude dedicar el tiempo suficiente. Lo que me gusta de las soluciones es la de herramientas que uno aprende, si hubiera conocido TamperData antes del reto hubiera facilitado algunas pruebas.

SilverNeoX dijo...

Argh! Pensé que tenía que enviarme a mí mismo el ID del admin y abandoné. xD ¡Felicidades por el reto!

Aitor F. dijo...

Que lástima, yo estuve intentando obtener la idUsuario del administrador, igual que SilverNeox.

Otra vez será

Netgear dijo...

¡Hola! Felicidades por tu blog.
Nosotros también escribimos sobre esto en nuestro blog.
Te paso un post interesante
http://www.netgeartechnosite.com/?p=84
Esperamos tu visita y que nos des tu opinión
¡un saludo!

Ike dijo...

Vale pues me alegro de no ir tan perdido como me pensaba...
Aunque esta claro que me queda todavía mucho xD

PD: Genial reto Chema =)

Pepelux dijo...

Chema, que mi twitter es @pepeluxx (con doble X) :P

saludos

C dijo...

Dices que "El admin al entrar en la página, evidentemente tendrá el suyo.", yo envié el ctl00$cph2$hfidUsuario del admin a mi maquina y me llegó en blanco!, no se me ocurrió inyectarle mi ID :(

Exelente reto Chema, felicitaciones @pepeluxx

Uxío dijo...

Joder Pepelux está en todo, acabo de leer también el solucionario de la RootedCon, impresionante. Felicidades por el buen trabajo, espero que publiquéis pronto las partes que faltan.

Salu2

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares