Vulnerabilidad XSS (Cross-Site-Scripting)

La vulnerabilidad Cross-Site-Scripting (XSS)

Consiste en inyectar código HTML o Javascript en una aplicación web con el fin de que el navegador de un usuario ejecute el código inyectado en el momento de ver la página alterada.

Principalmente el XSS se utiliza para causar una acción indebida en el navegador de un usuario, pero dependiendo de la vulnerabilidad, se puede explotar el fallo para causar esa acción indebida en un servidor o en una aplicación.
Esta limitación se debe a que el código HTML se interpreta en el navegador de un usuario y no en el servidor. Así que si alguien inyecta código HTML en alguna aplicación web no podría hacer daño alguno al servidor, ya que éste nunca interpreta el código HTML, sólo los navegadores. Por eso este ataque se denomina: ataque del lado del cliente.

El XSS es una forma especial de ataque contra la validación de los parámetros de entrada. La diferencia principal entre un ataque XSS y un ataque de inyección SQL, por ejemplo, es que el objetivo, en este caso, suelen ser los usuarios de la aplicación, más que la propia aplicación. Por ejemplo, en un ataque por inyección SQL se intentará acceder o modificar el contenido de la base de datos de la aplicación, mientras que en un ataque XSS se introducirá un troyano en el navegador web de la víctima (troyano: una aplicación que se ejecutará en el navegador sin que el usuario sea consciente de ello).

Este troyano puede estar elaborado en lenguajes que se ejecutan de la parte del cliente, como por ejemplo JavaScript. Los ataques XSS tampoco se limitan al robo de cookies, el ataque puede variar dependiendo de cada situación. Se puede aprovechar alguna vulnerabilidad conocida del navegador (acceso arbitrario de ficheros, manipulación de cookies, etc.) para tener un mayor control sobre la máquina y/o el navegador de la víctima.

Solución para evitar la vulnerabilidad XSS:

Instala y usa como navegador predeterminado Mozilla Firefox y agrégale el complemento (extensión) NoScript.
# Descargar Firefox.
# Instalar NoScript en español (página cifrada).

Logo NoScript

Abre el navegador Mozilla Firefox con el add-on NoScript ya instalado e incorporado.

En la parte inferior derecha de la pantalla del navegador aparecerá el icono de NoScript indicando que se han bloqueado los Scripts de la página web correspondiente.

Haciendo clic sobre el icono NoScript, podrás realizar las siguientes acciones:
1. Permitir JavaScript globalmente (peligroso) – Te avisa de que el navegador aceptará JavaScripts de cualquier web que visites, con el peligro que conlleva.
2. No fiable – Te da la opción de marcar el sitio como no fiable.
3. Permitir la url – Se agregará a la lista blanca y, siempre que visites esa web, se ejecutarán los scripts.
4. Permitir temporalmente la url – Permitirá los scripts de esa web para la sesión.
5. Opciones – Están en español y son fáciles de configurar:

Pestaña General: Se pueden conmutar los permisos para el sitio web actual y recargar la página automáticamente después de cambiarlos.

Configurar NoScript pestaña General
Pestaña Lista blanca: Lista de páginas web a las que permitimos ejecutar código Java Script (webs que conocemos y son de confianza).

Configurar NoScript pestaña Lista Blanca
Pestaña Plugins: Podremos configurar restricciones adicionales para sitios no fiables, que tendrán efecto en páginas nuevas o tras recargar manualmente.

Configurar NoScript pestaña Plugins
Pestaña Presentación: Menú contextual para escoger qué opciones nos mostrará NoScript cuando hagamos clic sobre el icono del programa.

Configurar NoScript pestaña Presentacion
Pestaña Notificaciones: Por si deseamos que se muestren las alertas de los scripts bloqueados con o sin aviso acústico.

Configurar NoScript pestaña Notificaciones
Pestaña Avanzado – Aparecen cinco nuevas pestañas:

No fiable: Puedes agregar restricciones adicionales para sitios no fiables.

Configurar NoScript pestaña Avanzado
Fiable: Puedes agregar permisos adicionales para sitios fiables.

Configurar NoScript pestaña Avanzado
XSS: Depura la peticiones Cross-Site sospechosas y convierte las peticiones POST Cross-Site en peticiones GET sin datos.

Configurar NoScript pestaña Avanzado
JAR: Impide que los elementos remotos JAR (Java Archive – tipo de archivo que permite ejecutar aplicaciones escritas en lenguaje Java) se carguen como documentos.

Configurar NoScript pestaña Avanzado
HTTPS:

Comportamiento: Podemos prohibir contenidos web activos salvo que provengan de una web cifrada (HTTPS).

Configurar NoScript pestaña Avanzado
– Cookies: Nos permite activar la gestión automática segura de las cookies para los sitios cifrados.

Configurar NoScript pestaña Avanzado
Fuentes consultadas para el manual:
wikipedia.org y josecandido.galeon.com