¿Cuáles son algunas formas de ejecutar un adjunto XSS reflejado?

3

Me preguntaba cuántos métodos diferentes existen para ejecutar ataques XSS.

En casi todas las demostraciones que veo, el ataque se desencadena de una de las siguientes 3 formas:

  1. Al ingresar el script en un campo de entrada. El front-end luego usa esa entrada para rellenar una solicitud, que ya está diseñada para realizar. La entrada del script se devuelve en la respuesta de la solicitud y luego se ejecuta si el front-end luego la agrega al DOM.
  2. Al ingresar la solicitud en la barra de URL. Esto funciona solo con peticiones GET. Si uno de los parámetros tiene un script para la entrada y si el parámetro es visible (como html) en la respuesta, la página de respuesta lo ejecutará.
  3. Al proporcionar a un usuario involuntario un enlace. Si el usuario hace clic en el enlace por error, ejecutará inadvertidamente el proceso descrito en # 2.

¿Hay alguna otra forma de hacerlo? ¿Hay recursos que describan otras formas de que esto suceda?

Además, si el sitio web utiliza tokens de sesión para cada inicio de sesión, ¿hay alguna forma de incluir ese token utilizando los métodos 2 y 3? ¿O nos protegen los tokens de sesión de estos enfoques?

    
pregunta harrys 23.08.2018 - 23:10
fuente

1 respuesta

1

El punto 1. es más un problema de self-XSS (basado en DOM). Y como dijiste, los puntos 2 y 3 son realmente iguales (el ataque ocurre al visitar una URL).

Una solicitud GET a través de un enlace es la forma más común de ejecutar un ataque XSS. El enlace podría, por ejemplo, enviarse a una víctima por correo electrónico o publicarse en un foro.

Pero hay otras formas. La característica definitoria del XSS reflejado es que la entrada es reflejada , lo que significa que el servidor toma algún tipo de valor de una solicitud HTTP, la inserta en un contexto HTML en la respuesta y el navegador luego la presenta. , ejecutando así el código inyectado.

XSS reflejados basados en POST

El XSS reflejado también se puede realizar a través de solicitudes POST (que no están protegidas contra CSRF). Por ejemplo:

<form action="https://example.com/vulnerable" method="POST">
    <input type="hidden" name="number" value="[XSS payload]" />
</form>
<script>document.forms[0].submit();</script>

De la misma manera, una solicitud GET podría enviarse a través de un formulario (cambiando el method a GET ). Un atacante podría elegir este método si se requiere una solicitud POST, o si cree que es más probable que un usuario visite una página donde pueda publicar guiones, y menos probable que haga clic en un enlace al sitio de la víctima.

Explotación de Self-XSS

Su punto 1. podría explotarse si el sitio se puede enmarcar. Algunos navegadores (p. Ej., La última vez que verifiqué Firefox) permiten arrastrar texto a iframes (aunque no fuera de ellos).

Al realizar un ataque de clickjacking, un atacante podría hacer que una víctima "ingrese" la carga útil XSS y la ejecute.

Otra forma de ejecutar un auto-XSS sería simplemente pedirle al usuario que publique la carga útil ("¿puede publicar este post largo, en formato HTML [que contiene una carga XSS] en su sitio web?", "¿Puede cargar este ¿imagen inofensiva [cuyo nombre de archivo contiene una carga XSS] en tu blog? ", etc.).

Tokens de sesión como (no) protección

  

¿Los tokens de sesión nos protegen de estos enfoques?

Si sus tokens de sesión siempre se incluyen en la URL, y la página no refleja ninguna entrada cuando falta el token de sesión (y el token de sesión se genera de forma segura), entonces eso sí proteger contra XSS reflejados (no propios) que envían a la víctima un enlace malicioso. De la misma manera, los tokens CSRF protegen las solicitudes contra XSS reflejadas (no propias).

Sin embargo, ahora tienes un nuevo problema. Los datos confidenciales en las direcciones URL se desaconseja. Puede filtrarse fácilmente a través de los remitentes, cuando los usuarios comparten enlaces, etc. Y una vez que eso suceda, cualquiera podría tener acceso a esa cuenta de usuario.

    
respondido por el tim 24.08.2018 - 08:12
fuente

Lea otras preguntas en las etiquetas