7 de octubre de 2008

Cross Site Scripting - XSS ¡Otro enemigo peligroso!

XSS o Cross Site Scripting que aunque las siglas no concuerden se coloca la X para evitar confusión con CSS (Cascading Style Sheets), es básicamente una técnica de inyección de código en un sitio mediante el uso de técnicas que permiten insertar específicamente Javascript o VBscript en los URLs o en los campos de un formulario que no ha sido validado para tal efecto para que ejecute en el contexto de otro sitio.

Así por ejemplo si insertamos XSS en un campo de un formulario cuyo contenido posteriormente será mostrado, podemos insertar código javascript para que se cree un pop-up, o se abra un iframe que contenga información de otro sitio.

Esta técnica puede permitir que un URL que normalmente lleve información por método GET se convierta en una vulnerabilidad de nuestro sistema, ya que enviando a dicho URL una inyección XSS, podemos hacer que el sitio receptor nos muestre contenido "tóxico" como por ejemplo una página de malware u otros.

También podemos hacer que dicho código insertado reemplace las "cookies" creadas para validación e ingreso en un área no permitida por ejemplo.

En fin las técnicas XSS son muchas y no podemos mencionarlas todas aquí, sin embargo si podemos explicarle al programador como prevenirlas (en parte por lo menos)

Es necesario primeramente evitar la inclusión de las cadenas "javascript:", "vbscript" y "<script" debido a que un código javascript sin ellas no se puede reconocer como tal, pero cuidado los hackers saben algo de esto y colocan las cadenas de formas diferentes, como ejemplo: "JaVaScRIpT" o las esconden con los códigos hexadecimales correspondientes ejemplo: %22%3e%3c%73%63%72%69%70% enviado por el URL significa "<script>"

En cuanto a los campos de los formularios es importante prevenir el uso de TAGS de HTML y preferiblemente evitar que el usuario pueda usar estilos directamente ya que en el URL de una imagen de fondo se puede colocar perfectamente código XSS también por ejemplo:

<DIV fu="alert('Hola mundo');" STYLE="background-image: url(javascript:eval(this.fu))">

Este código inserta una función "fu" y la llama desde una URL asignada a una imagen para el fondo del elemento DIV. Interesante ¿no?

Ahora imaginen que dicho código no es tan sencillo como para mostrar simplemente una ventanita con el texto "Hola mundo" y que en dicho URL llamamos una rutina javascript con capacidad de cargar un AJAX que envíe lo que vamos escribiendo en un formulario a otro lugar.
Escalofriante ¿no?




No hay comentarios.:

Entradas populares