jueves, 5 de febrero de 2015

An IE Same Origin Policy Bypass story

Hace un par de días estaba leyendo mis feeds cuando de repente un titular llamó mi atención: "Seria vulnerabilidad en Internet Explorer totalmente parcheado expone las credenciales de los usuarios". Una técnica de evasión para el same-origin-policy de Internet Explorer había visto la luz. Este tipo de vulnerabilidades son muy críticas, ya que SOP proporciona la separación entre los diferentes sitios web dentro de nuestros navegadores, y evita que una web maliciosa pueda acceder o modificar contenido de otra web legítima.

Le he estado pegando un vistazo a la vulnerabilidad en las últimas horas y vaya si funciona. La PoC publicada funciona perfectamente pero quizá no es la proximación más práctica (real) que un atacante tomaría. Por lo que sé, no se han publicado más detalles sobre la vulnerabilidad aparte de la propia PoC, así que vamos a pegarle un vistazo al PoC. He preparado mi propia prueba de concepto simplemente para ver si era capaz de explotarla de una forma más "maléfica".


A primera vista la vulnerabilidad parece una condición de carrera o similar. Tenemos dos iframes, el primero de ellos carga una página dinámica, por ejemplo 1.php. No se ha publicado el código de esta página, pero básicamente espera durante unos pocos segundos y luego redirige a la misma URL que carga el segundo iframe.

Ambos iframes cargan una página en el website victima. Es importante encontrar una página que puede ser cargada dentro de un iframe, porque si no la vulnerabilidad no se puede explotar. Proveedores como Google, Facebook, etc, normalmente configuran sus sitios con la cabeceza "X-Frame-Options" para evitar ataques de ClickJacking, lo cual podría ser un problema.


Sin embargo, con encontrar una sola página en todo el dominio que no tenga la cabecera "X-Frame-Options" es suficiente, y eso no es tan dificil como parece. Hay dos recursos bien conocidos que no están protegidos en la mayoría de los sitios web: robots.txt (el que usa el autor original) y favicon.ico (el que uso yo para un ataque un poco más práctico).

Hay una función llamada "go()" que hace la verdadera explotación. Es dificil de leer así que permitidme que lo decodifique para vosotros.


Aquí es donde está la chicha. Hay algunas llamadas a "alert" y "eval" que parecen ser importantes. No he podido averiguar por qué pero si las cambias no funcionan. Esta parte es la más compleja de la vulnerabilidad.

Carga el segundo iframe del que hablabamos antes en la variable "x". Entonces espera unos pocos segundos (1 segundo en el código mostrado) y muestra un mensaje. Como comentaba antes, este "alert" parece ser importante así que no lo podemos borrar, pero podemos elegir un mensaje que no haga advertir al usuario que algo malo está pasando. Después de eso, cuando el primer iframe ha cambiado del atacante al sitio victima (debido a 1.php) el código Javascript y HTML es inyectado en ese segundo iframe. No deberíamos ser capaces, porque es un dominio diferente, pero lo somos. Nos hemos saltado la same-origin-policy.

Vamos a ver como lo vería una víctima:


Algunos paises tienen leyes específicas sobre cookies y los sitios web tienen que mostrar un mensaje como éste. Muchos usuarios se han acosutmbrado a ellos y simplemente pulsan aceptar.


Cuando injecté código en el iframe, utilicé un botón de google, de estos que se usan para autenticarte en sitios externos. Puede que no sea el blog más bonito del mundo, pero... parece un blog de verdad :)


Se abre la pantalla de autenticación de Google. Todo parece correcto pero el javascript debería haber cambiado al "action" del formulario de login, con lo que las credenciales deberían ir a un dominio diferente.


¡Hecho! Una vulnerabilidad realmente interesante. No puedo esperar a que salgan más detalles de la vulnerabilidad y ver porque los "alert", "eval" y "setTimeout" son tan importantes.

lunes, 20 de octubre de 2014

Pentester.Es ahora en Inglés

Durante los últimos 7 años he estado escribiendo este blog de seguridad en Español: Pentester.Es. En su momento decidí empezar a escribirlo en Español porque es mi lengua materna y porque trabajo principalmente para empresas y personas Españolas.

Alrededor de hace un año decidí que debería iniciar un proceso de "internacionalización". Hace unos pocos días di mi primera charla en Inglés en la Black Hat Europe y ahora es el momento de empezar a escribir los artículos del blog en Inglés.

Así que... ahora hay un selector de idioma en la parte superior derecha de la web. No voy a traducir los artículos viejos, pero todos los nuevos los voy a ir escribiendo en Inglés y en Español.

lunes, 1 de septiembre de 2014

Agenda de Septiembre y Octubre

Septiembre y Octubre, como quien no quiere la cosa, está plagado de conferencias y eventos de seguridad por casi todo el país. Durante los pasados meses he mandado algunas propuestas a los CFP de las diferentes charlas y he tenido la suerte de que sean aceptadas, así que tocan un par de meses de pasearse por ahí :)


El primero de los eventos es la RootedCON Satellite Edition, el 19 y 20 de Septiembre, una iniciativa de los organizadores de la RootedCON que pretende acercar charlas de seguridad de primer nivel a todas las ciudades de España. Este año, en su primera edición, la ciudad elegida es Valencia, mi ciudad natal, así que era un evento que no podía perderme. Fin de semana de charlas de seguridad, paseos por la Ciudad de las Artes y las Ciencias y bañito en la playa, que aún tendremos buena temperatura ¿Se puede pedir más?

En este evento hablaremos un poco de exploits, de lo frustrante que es a veces para un Pentester cuando lanzas un exploit y el condenado no funciona, y como podemos, en ocasiones, usar un poco de "brujería" para hacer que finalmente funcione.

Todos los detalles en la PÁGINA OFICIAL DEL EVENTO.


Un par de semanas después, los días 2, 3 y 4 de Octubre, nos desplazaremos a Albacete a dar una charla en las conferencias Navaja Negra, que a pesar de tener menos volumen de asistentes que otras macro-conferencias del panorama nacional, cuenta siempre con una calidad muy alta en sus charlas.

En esta charla os contaré un caso real de como realizamos una simulación de un ataque dirigido (APT) contra un alto directivo de una importante empresa española. Móviles, exploiting, puertas traseras, ingeniería social, ... todo mezclado y revuelto ¿Te apetece ver como acaba la historia? Apúntate en la PÁGINA OFICIAL.


Los días 16 y 17 de Octubre damos un salto un poco más largo y nos vamos hasta Amsterdam, a dar una charla en las conferencias BlackHat Europe, la edición europea de las conocidas conferencias BlackHat, que tienen diferentes ediciones por todo el mundo.

En la charla hablaremos sobre conexiones HTTPS, la cabecera HTTP Strict Transport Security y sobre algunas circunstancias en las cuales esta protección podría perder su efectividad. Más información en la PÁGINA OFICIAL.


Aunque por motivos de agenda este año me ha resultado imposible repetir dando charla en ConectaCON, me parecería injusto no mencionarla, ya que siempre cuenta con un buen cartel de ponentes y con charlas de gran interés, así que si tenéis la oportunidad pasaros los próximos 23 y 24 de Octubre por Jaén a disfrutar del evento. PÁGINA OFICIAL.


Otra de las conferencias por las que este año no me podré pasar pero que es más que recomendable son las conferencias GSickMinds que tendrán lugar en La Coruña los días 29, 30 y 31 de Octubre. Estas conferencias tienen el aliciente de contar habitualmente con ponentes invitados de altísimo nivel, como por ejemplo Angel Prado y Juliano Rizzo, que el año pasado estuvieron hablando de las debilidades en SSL que publicaron y de las que habían andado hablando por las principales conferencias del mundo.


Aunque tampoco estré finalmente este año, los días 31 de Octubre y 1 de Noviembre tenéis en Barcelona la conferencia No cON Name, la más veterana de las conferencias (públicas) Españolas y, junto con RootedCON, el referente en los eventos de seguridad del país. La NcN tiene el aliciente de contar con un magnifico reto de Capture de Flag (CTF). El año pasado fue organizado por el equipo de seguridad de FaceBook y tengo que decir que me lo pasé realmente bien participando.

Apuntaros YA en la PÁGINA OFICIAL.