sábado, 16 de mayo de 2009

[Seguridad] Cross-site Scripting (XSS)

Cuando el creador de una página web no tiene el debido cuidado, puede hacer su web susceptible a ciertos ataques de usuarios malintencionados.

Un ejemplo de este tipo de vulnerabilidades, derivada normalmente por la mala validación de los campos de texto disponibles en nuestra web, es el Cross-site Scripting o XSS. Este ataque consiste en introducir código malicioso en nuestra web cuando un usuario la visita y robar así, por ejemplo, la cookie del usuario (su nombre de usuario y contraseña, generalmente).

Existen muchas formas de hacer este tipo de ataque, pero pondré un ejemplo sencillo que servirá de ilustración.

Si accedemos a esta web: Web Débil, vemos su contenido sin problemas, una web absolutamente normal. Pues es una web susceptible a este tipo de ataques (aunque para esta web no tenga mucho sentido).

Para demostrarlo, vamos a construir un link personalizado que ponga un texto nuevo cuando se accede a la web.



Utilizamos uno de sus campos rellenables para introducir código HTML.

<H1> -> Sirve para poner el texto mas grande.
<MARQUEE> -> Sirve para que el texto se mueva.

[El link es inofensivo, tanto para el que entre, como para la web]

http://www.venezuelaesfutbol.com/categoria.php?categoria_id=<h1><marquee>Esto podria ser codigo malicioso. TecnoFreak</marquee></h1> -> Pincha aqui para probarlo o cópialo tu mismo en tu navegador.

Pero si un atacante quisiera sacar partido de esta vulnerabilidad, colocaría código JavaScript en este link para que recogiera información del usuario y la mandara a otro sitio remoto. Un ejemplo de código JavaScript sería el siguiente:

<SCRIPT> -> Sirve para escribir código JavaScript, lo que contenga este campo será interpretado como tal

alert('Mensaje') -> Sirve para mostrar un mensaje por pantalla.

[El link es inofensivo, tanto para el visitante como para la web. Sólo es un saludo]

http://www.venezuelaesfutbol.com/categoria.php?categoria_id=<h1><script>alert('Esto podria ser codigo AUN MAS malicioso.')</script></h1> -> Pincha aqui para probarlo o cópialo tu mismo en tu navegador.

Con códigos JavaScript más avanzados se puede incluso suplantar la web original para introducir otra completamente nueva.

Si todo ha ido bien (cuando creé este post todo funcionaba de perlas), se ha demostrado que una web con este tipo de vulnerabilidad no garantiza en absoluto la privacidad de los usuarios.

Este tipo de vulnerabilidades son fáciles de evitar, basta con hacer una buena validación de los campos y tener siempre controlados los valores de las sesiones de nuestros usuarios.

Así que todos los desarrolladores web que vean esto quedan avisados. Tened cuidado con esta vulnerabilidad, no cuesta nada evitarla.

EDIT: Si para algo me ha servido el comentario del Troll anónimo que comentó el primero a este post, ha sido para encontrar la fuente de donde saqué este ejemplo hace más de un año, además de para darme cuenta de que el que menos sabe es el que mas habla. Gracias troll anónimo.

Vía: Foros CanTV.

5 comentarios:

Anónimo dijo...

Juajajajaja.... si eres payaso men. para poder utilizar este metodo tendrias que hacer que el usuario pinchara el link trucado, y si dices que disfrasas esto con una etiqueta entonces podrias llebarte al usuario a donde quiera, es inutil este metodo, visto de esta forma, hay millones de cosas que yo se hacer que si son efectivas, colar html y jscrip en un html formado es de idiotas y disculpa la palabra pero creo que va contigo. y si lees cosas de los foros viejos de CANTV por favor al menos se gentil y coloca los creditos.

Hell Keeper dijo...

Bueno, este comentario es totalmente opuesto a los que me han hecho en persona algunos colegas de la facultad, que sí que han SABIDO usarlo. Y yo me incluyo en los que lo han usado con éxito.

Evidentemente hay muchos métodos para hacer daño, pero si has leido bien el post, verás que no quiero enseñar a hacer daño, sino a que los que hagan webs sepan a lo que se enfrentan. Con mis consejos, bien aplicados, seguramente puedan librarse de esos millones de cosas que sabes hacer.

Rosa dijo...

A ver si dejamos de meternos con los profesionales de la informática, tan solo porque seamos unos piltrafillas a los que nos gusta toquetear el ordenador. Y sobre todo no insultes en blogs ajenos, porque algo a tí no te salga... "al nene no le sale ese método, jooo tontooo" xDD

Rosa dijo...

por cierto, lo de "piltrafillas" iba por ti "anónimo" (ni da la cara, tsss), para profesionales ya estamos nosotros.

Añado esto porque seguro que hay que dejarselo todo mascaito al bebe. xDDD

Hector Martinez dijo...

ya se ve a que nos atendemos con estos atakes, pero como veo hoy en dia hay varios, ahora estoy probando explotar algunos las de indirectas y tambien dando solucion a ciertos problemas.

Todo es aceptable pero no todo es bueno jejeje, de esos se aprenden tambien.

esta buena tu post. Yo hace mucho que no posteo nada jejeje,
Saludos