El rincón de Zerial

Informática, GNU/Linux, Seguridad, Hacking, Programación, Ocio

El futuro de los ataques Cross-Site Scripting (XSS)

enero 30th, 2010 · 2 Comentarios

Los ataques XSS son cada día más frecuentes, pareciera ser que al desarrollador no le interesa o por desconocimiento no sabe a lo que se está exponiendo, pero por otro lado, los desarrolladores de los navegadores si están concientes y desarrollan técnicas anti XSS. La forma más común de realizar un ataque XSS es insertando tags cómo parámetor de URL o bien dentro de un campo del formulario, como por ejemplo el conocido:

<script>alert(‘this.cookie’)</script>

Cuando los ataques XSS mediante tags no son posibles, existe la posibilidad de realizar el ataque usando las propiedades de cada tag. Puede ser usando el atributo style, src o algúnos gatilladores de eventos como onMouseOver, etc. Para poder realizar el ataque es necesario usar comillas (simples o dobles), aunque tambien en algunos casos existe la posibilidad de no usarlas, para poder agregar una nueva propiedad al tag en el cual hemos conseguido insertar el código.

En los ataques realizados mediante la propiedad style, podemos usar las siguientes funciones o métodos (en este caso, el código se ejecuta automáticamente al cargar la página):

  1. Usando expression(), sólo funciona en Internet Explorer anterior a la versión 8.
  2. Usando background:url() o background-img:url(), sólo funciona en Internet Explorer.
  3. Usando -moz-binding:url(), sólo funciona en Mozila y en otros motores basados en Gecko (antes de Firefox 3).

Pueden ver un ejemplo de un ataque usando -moz-binding:url() y expression() en éste link (está en un idioma que seguramente no entenderemos pero los ejemplos se entienden sin problemas).

Los ataques vía eventos (handlers) son aplicables de la siguiente forma:

  1. Eventos como onMouseOver, onFocus, onBlur, onSelect, onChange, onClick, etc.
  2. Usando onError, onLoad y onUnload, para ejecutar código automáticamente al cargar o cerrar la página.

La posibilidad de usar onLoad, onUnload y onError no es muy amenudo y los otros eventos no se ejecutan automáticamente, siempre hay que esperar a que algo los gatille. Por ésto mismo, este tipo de ataque XSS no es muy popular, generalmente se ataca incrustando código en las propiedades tales como style, ya que se ejecuta automáticamente.
Cerca del 2008, la posibilidad de realizar un ataque XSS mediante -moz-binding fue removida (o bueno, fue parcialmente removida ya que aún es posible realizar ataques de éste tipo mediante ficheros xml en el mismo sitio). En el lanzamiento de Internet Explorer 8, a comienzos del 2009, se removió el soporte a la función o método expression(). Tambien fue removido el soporte de javascript o vbscript en background-image.
Con los arreglos que se hicieron en los distintos navegadores,  se dificuló el llevar a cabo  ataques Cross-Site Scripting mediante tags. Por otro lado, los navegadores como Opera y Chrome resisten ataques  de éste tipo mediante la propiedad style.
Podemos usar la técnica del MouseOverJacking. Con ésta técnica, se puede automatizar el ataque XSS. Es una solución que funciona en todos los navegadores, incluyendo IE8, eludiendo la protección anti-clickjacking que trae incorporada.
MouseOverJacking se puede usar en lugar de expression() y -moz-binding(). El ataque está automatizado, por lo que el ataque cumpliría el mismo objetivo que expression y -moz-binding y gracias al soporte multi navegador, es posible atacar a más usuarios.
Se puede realizar con MouseOverJacking lo mismo que con ClickJacking, con la diferencia que el MouseOverJacking es más efectivo, ya que no espera ninguna acción del usuario, no es necesario que el usuario haga click para gatillar el ataque. El ClickJacking espera un click por parte del usuario en cambio el MouseOverJacking simplemente espera el movimiento del ratón.

Ejemplos:

Reflected XSS

http://site/script?param=%22%20style=%22width:100%;height:100%;display:block;position:absolute;top:0px;left:0px%22%20onMouseOver=%22alert(document.cookie)%22

Persistent XSS

<a href=”#” style=”width:100%;height:100%;display:block;position:absolute;top:0px;left:0px” onMouseOver=”alert(document.cookie)”>&nbsp;</a>

Este artículo corresponde a una traducción al Español de la traducción al Inglés del original, extraído de WebSecurity.

Etiquetas: Hacking · Seguridad

2 respuestas hasta ahora ↓

Deja un Comentario