lunes, 28 de enero de 2013

XSRF Series.ly

Hola a todos!
Despues de un tiempo sin escribir, liado preparando examenes, he hecho un hueco para enseñarles una vulnerabilidad XSRF o CSRF en Series.ly.

Un XSRF consiste en que una web no comprueba si la petición se realiza desde ella misma, es decir, confía en que el usuario hace la petición desde alguna parte de la web propia web. La web simplemente hace uso de la cookies para aplicar los cambios al usuario que lo solicita. De este modo, podemos hacer una web maliciosa que realice una petición para cambiar datos o publicar algo en nombre del usuario. Si el usuario tiene abierta una sesión la web aceptará la petición y realizará los cambios.

Espero haberme explicado.. sino os recomiendo preguntar a Wikipedia o Google ;)

Bueno pues como digo, la web Series.ly tiene una vulnerabilidad XSRF, asique he hecho un PoC para que vean como funciona.
Si entran a su cuenta de Series.ly y con la sesión abierta entran a este link que he preparado:
http://segura2010.16mb.com/poc/seriesly.html

Entonces al entrar, sus datos (concretamente el nombre, el apellido, y el Código Postal) cambiarán.
Imaginen que les pasan un link y no saben que cambia los datos, de manera oculta los esta cambiando pero no se dan cuenta.. Estos ataques son peligrosos e interesantes.

El enlace de arriba con el PoC, lo que hace es cargar un iframe oculto que es el que envía la petición.

Espero que se haya entendido :)
Les dejo el código de los dos archivos html del PoC para que vean como funciona:
https://github.com/segura2010/XSRF-PoC/blob/master/Series.ly%20XSRF%20PoC

Cualquier duda o sugerencia dejenlo en los comentarios.

Gracias por leer! :)

martes, 15 de enero de 2013

Vulnerabilidad XSS en el Nuevo Myspace

Buenas Tardes!
Hace poco me he enterado que habian activado el nuevo diseño de MySpace, asique para descansar un poco de estudiar he entrado a verlo.. y me he encontrado un bonito XSS persistente.

El XSS proviene de que no se filtra correctamente la direccion de la pagina web que puedes añadir a tu perfil de mySpace. Solo se filtran las etiquetas HTML.. De modo que si jugamos con las comillas y los eventos Javascript.. tenemos el siguiente vector:
""onmouseover="alert('XSS')"

No se muy bien por que pero se deben poner dos comillas al principio, ya que una se pierde (probablemente en algún filtro).
Os dejo una imagen:

Como veis el código se ejecuta en la pagina de nuestro perfil al pasar el ratón por encima del enlace a nuestra web. Al principio puede parecer poco "útil" pero si ademas de un evento javascript le añadimos un poco de CSS (usando la propiedad style="position:fixed;top:0px;....") podemos tener un enlace que ocupe toda la web, invisible, y tenemos muy fácil que se pase por encima el ratón y se ejecute el javascript. Y así tenemos un XSS permanente que puede ir muy bien para por ejemplo hacer un bonito Worm.. ya que el XSS se ejecuta al ver nuestro perfil.

ACTUALIZACIÓN: También es vulnerable a este vector de XSS en los titulos de los "Mixes". Al usar el título del "Mix" para crear un boton.
Imagen:


ATENCIÓN: No me hago responsable del uso que se le de a la información publicada en este blog. Esta información tiene como objetivo APRENDER y NO PERJUDICAR de NINGÚN modo a nadie.

Esta vulnerabilidad no ha sido arreglada por mySpace. Y tampoco he encontrado por ningún sitio una forma de ponerme en contacto con mySpace para reportar la vulnerabilidad. Si quieren que reporten vulberabilidades que pongan a la vista un lugar al que reportar.

Actualización: Myspace ha arreglado las vulnerabilidades XSS.

Actualización:
@vlycser ha encontrado otra vulnerabilidad XSS en el buscador de Myspace.
(Comentarios)

Gracias por leer! :)

domingo, 13 de enero de 2013

XSS en WhatsApp

Buenos días!
Hoy os traigo un XSS no persistente en la web de Whatsapp. Se encuentra en el buscador de preguntas frecuentes (FAQ).

Os dejo la imagen:
Clic para ver mas grande

Como podéis ver nos mete la consulta dentro de un script, asique si cerramos las comillas y paréntesis necesarios conseguiremos ejecutar cualquier codigo javascript en cualquier navegador, ya que usando este vector no funcionan los filtros anti XSS de los navegadores.

El vector de ataque es el siguiente:
");alert("XSS");</script>

Como podeis ver primero se cierran las comillas , luego los parentesis y finalmente añadimos un ";" para cerrar la instrucción. Y a partir de ahí insertamos nuestro código.

¿Para que generar un script si ya nos dejan dentro de uno? Que aprovechándolo tenemos un XSS valido para cualquier navegador.

El fallo no esta arreglado asique os dejo la url para que lo veáis: http://www.whatsapp.com/faq/search/?q=%22);alert(%22Whatsapp%20XSS%20by%20@segura201093%22);%3C/script%3E

Esta vulnerabilidad junto con algún exploit, como por ejemplo el 0day que ha salido recientemente de Java se puede usar para por ejemplo crear un iframe oculto y enviar el enlace a una victima. Al ser un enlace a la web de Whatsapp la victima no sospechará.

Una prueba mas de que Whatsapp se toma en serio la seguridad. ;)

Gracias por leer.

miércoles, 9 de enero de 2013

Vulnerabilidad XSS en Twitter

Buenas Tardes a todos!!
Despues de algún tiempo sin escribir, hoy os traigo una pequeña vulnerabilidad XSS en Twitter. Hace algún tiempo que la encontré y a través de mi cuenta en twitter avisé que en cuanto el fallo estuviese corregido lo publicaría aquí.

El fallo se encuentra en la ventanita que se nos abre para agregar a un usuario a una lista de Twitter, concretamente es el nombre de la lista lo que no se filtra y hace que si este contiene código se ejecute.
Aquí una imagen, que vale mas que mil palabras ;)
Clic para ver más grande


La vulnerabilidad es complicada de explotar, ya que, como podeis comprobar, los nombres de listas no pueden superar los 25 caracteres y es necesario que la "victima" intente agregar a la lista a algún usuario. Aún así es un XSS.

Como  agradecimiento Twitter me añadió a su Hall of Fame de Seguridad, o como ellos lo llaman "WhiteHat List". Podéis verlo aquí: https://twitter.com/about/security (Al final del año 2012).

Y esto es todo por hoy! Gracias por leer! :)

jueves, 20 de diciembre de 2012

Enfadando a usuarios de Mozilla Firefox }xD

Bueno, hoy os dejo una entrada cortita y simple, pero es mejor que nada }:)

Hace algún tiempo quise hacer una pequeña web de broma que no te dejase salir de ella haciendo que saliesen infinitos "alerts" de javascript.. El problema es que los nuevos navegadores al aparecer el primer alert te dan la posibilidad de bloquear los siguientes.. }:(

Asique me de di cuenta de que si el alert se carga a través de un iframe y de una pagina diferente a la de los demás alert el navegador no los bloquea.. Así que con un poco de creación dinámica de webs y javascript podemos hacer lo siguiente:

Con Javascript nos hacemos un bucle infinito o finito, como cada uno quiera, y en este bucle vamos creando nuevos "iframes", y usando la creación dinámica de webs hacemos que ese iframe contenga un alert. Os dejo el código para que lo entendáis mejor:

<script>

function poc(){
    for(i=1;i<21;i++){
        var iframe = document.createElement("iframe");
        iframe.id = i;
        iframe.style.display="none";
        iframe.src = 'data:text/html;base64,PHNjcmlwdD5hbGVydCgiT2xhIGsgYXNlPyIpPC9zY3JpcHQ+';
        document.body.appendChild(iframe);
    }
}

</script>


Como podéis ver en la propiedad "src" le metemos el código para la creacion dinámica de la web en base64. El código en base64 basicamente el javascript del alert, creo recordar que era algo así:
<script> alert("Hola"); </script>

Ese es el código que contiene codificado en base64.
Bien, pues usando esto en una web, tendremos muchos iframes, hacia webs diferentes que cargan un alert, y el navegador no puede bloquear los alerts.
Y no solo no puede bloquearlos, sino que en Mozilla Firefox es el navegador el que se queda bloqueado y no responde, teniendo que reiniciar el navegador... Como veis esto último ha sido lo que quería enseñaros de verdad.. }xD

Os dejo un link para que veáis esto en funcionamiento: http://segura2010.16mb.com/iphone

Y hasta aquí la entrada de hoy, no tan dedicada a la seguridad, pero creo que es algo interesante y divertido para pasarselo a tus amigos.

lunes, 17 de diciembre de 2012

"Jugando" con Comunio

Buenas a todos, hoy os hablaré de Comunio, un juego de futbol que... no tengo ni p*** idea de como va, pero como lo conozco de ver gente que juega pues dije "Vamos a ver que cosilla chulas se pueden hacer!". Y aquí estoy, contándoos que he encontrado en el. :)

No ha sido mucho, ya que no he conseguido ningun XSS, pero si que he encontrado HTML Injection, que consiste en lo mismo que el XSS pero en este caso no se puede usar JavaScript. Así que aprovechando que se pueden meter etiquetas HTML como DIV, IMG o MARQUEE pues se me ocurrió contaroslo y echar un rato divertido ;)

Aquí os dejo un bonito DIV, que jugando con las propiedades CSS, puede ser divertido y molesto para otros usuarios de nuestra liga.

Esto se consigue en el panel de noticias, agregáis vuestra noticia con el código deseado y voila! A divertirse!
También se puede personalizar así vuestro perfil o el de vuestra liga colocando código en la descripción.
Os pego el código que usé yo:
<div style="width:100%;height:100%;z-index:999999999999px;top:0px;left:0px;position:fixed;background-color:black;font-size:40px;display:block;"><br><br><br><div align="center">i am sorry!<br><br><br><img src="http://4.bp.blogspot.com/-NTJjX7MtWfo/T_iaJCa1fuI/AAAAAAAABfc/fBFDwDzmecA/s1600/xdpin-752278.jpg"></div></div>

También se pueden tomar prestadas la cookies haciendo uso de enlaces con código de creación dinámica de webs, es decir, enlaces del tipo:
<a href="data:text/html;base64,codigo_HTML_codificado_en_base64">Link</a>

Podéis ver más información de estos tipos de enlaces y demás en esta entrada del gran Chema Alonso:  http://www.elladodelmal.com/2012/12/roundcube-ii-nuevos-vectores-para.html

Y por hoy esto es todo, a ver si esta navidad tengo algo de tiempo para dejaros mas entradas. Miraré a ver si encuentro algún XSS chulo en Comunio!
No seáis malos! :P

miércoles, 12 de diciembre de 2012

Guarda los tweets de cualquier usuario

Bueno, hoy os traigo una pequeña utilidad escrita en Python y hecha por mi para que podais descargar  los tweets del usuario que querais.

Os dejo el enlace al repositorio en GitHub: https://github.com/segura2010/Saving-Tweets

Soy novato programando en Python, si tenéis recomendaciones para mejorar la utilidad comentadlo! :)