Peligros de XSS en el lado del servidor frente al lado del cliente

5

Estaba buscando aquí , y entiendo que se refleja DOM XSS (XSS del lado del cliente) no pasa por un script del lado del servidor, pero el XSS reflejado ( XSS del lado del servidor ) lo hace, pero Ninguno de los hits / se almacena en la base de datos. Pero estoy confundido sobre lo que una inyección puede hacer que la otra no puede. ¿Cuáles son los peligros de que XSS pase a través de un script del lado del servidor y que se inyecte directamente en la página del cliente (el script aún se ejecuta en el lado del cliente)? Además, ¿existe tal cosa como una inyección persistente de DOM XSS (lado del cliente XSS), si es que?

    
pregunta dylan7 20.08.2015 - 07:08
fuente

2 respuestas

4

El impacto de XSS es el mismo independientemente de si está almacenado / reflexivo o basado en DOM / servidor: el atacante obtiene el control total de la sesión web. El XSS almacenado es más fácil de explotar (no es necesario que un usuario haga clic en un enlace), por lo que es más serio. Si una vulnerabilidad está basada en DOM o en el lado del servidor no afecta mucho la gravedad.

Puedes tener almacenado XSS basado en DOM. Como ejemplo, considere un sitio de comercio electrónico que permite a los usuarios publicar reseñas de productos. Es una aplicación de una sola página, de modo que cuando ve un producto, el JavaScript envía una solicitud Ajax para obtener información del producto. El back-end de Ajax devuelve JSON correctamente, por lo que no es vulnerable. Sin embargo, el JavaScript presenta los datos devueltos como HTML. Esto crea una vulnerabilidad XSS: un usuario malintencionado puede enviar una revisión que contenga un ataque XSS, y cuando un usuario víctima ve ese producto, la carga de XSS se ejecuta en su navegador.

    
respondido por el paj28 20.08.2015 - 11:41
fuente
3

XSS almacenado o persistente es un tipo de vulnerabilidad XSS donde el servidor procesa y almacena la información no confiable del usuario en un archivo o base de datos sin ninguna validación y estos datos no confiables se recuperan del almacenamiento y se reflejan en respuesta sin codificación. o el escape que resulta en la ejecución de código permanente en el navegador siempre que los datos almacenados se reflejen en la respuesta.

XSS reflejado o no persistente es un tipo de vulnerabilidad XSS en la que el servidor procesa de inmediato la información no confiable sin ninguna validación y se refleja en la respuesta sin codificación o escape, lo que resulta en la ejecución del código en el navegador.

XSS basado en DOM es una forma de XSS del lado del cliente que se produce en un entorno donde la fuente de los datos está en el DOM, el sumidero también está en el DOM y el flujo de datos nunca abandona el navegador. Ocurre cuando se dan datos no confiables en la fuente como resultado de modificar el "entorno" DOM en el navegador. DOM XSS se produce cuando los datos que no son de confianza no están en forma de escape o codificación con respecto al contexto.

También existe mXSS o Mutation XSS es un tipo de vulnerabilidad XSS que se produce cuando los datos no confiables se procesan en el contexto de la propiedad innerHTML de DOM y el navegador los muta, lo que resulta como un vector XSS válido. En mXSS, los datos especificados por el usuario que parecen inofensivos pueden pasar a través de los filtros XSS del lado del cliente o del servidor, si están presentes o no, y el motor de ejecución del navegador los muta y se refleja como un vector XSS válido.

En pocas palabras, XSS almacenado es la mayor amenaza porque permite robar cookies y comprometer el sitio web (si HTTPOnly no está admitido) sin la interacción de los usuarios. Reflected o DOM XSS también puede ser muy útil para los atacantes, por ejemplo, realizar ataques de phishing.

    
respondido por el Michal Koczwara 20.08.2015 - 07:49
fuente

Lea otras preguntas en las etiquetas