¿Cómo funciona XSS (remoto) (en CSRF)?

0

Acabo de leer un artículo sobre CSRF y menciona 3 vectores de ataque; XSS, enlaces manipulados y un exploid local.

Mientras que los dos últimos métodos parecen posibles (para mí), no estoy seguro de cómo XSS jugará un papel aquí.

Según mi entendimiento de que me gustaría explotar un sitio web a través de una víctima, no veo ninguna opción sobre cómo puedo usar XSS aquí. Solo podría entender cómo hacerlo si soy el que hace el XSS, pero en este caso no necesitaría una víctima, ¿verdad?

La única opción en la que puedo pensar es en una URL falsa con la Carga útil como parámetro, pero eso ya sería el vector 2.

Edit: Ahora creo que tengo una pista; el atacante creará un XSS persistente que se activa cuando una (cualquier) víctima visita el sitio legítimo.

¿Es correcta esta idea?

    
pregunta pguetschow 03.11.2016 - 08:42
fuente

3 respuestas

4

En realidad, si hay XSS, los tokens CSRF no ofrecen ninguna protección. En el momento en que puede inyectar JavaScript, también podría obtener fácilmente el token que protege el formulario.

    
respondido por el Lucas Kauffman 03.11.2016 - 08:46
fuente
0

La forma en que CSRF suele funcionar es que de alguna manera engaña a la víctima para que haga clic en un enlace (o solicite una página) que realice alguna acción en el sitio de destino. Esto podría por ejemplo. Se puede hacer al tener un sitio llamado evil.com que envía automáticamente una forma oculta a bank.com/transfer.php con JS cada vez que un surfista inocente se tropieza con él. Eso es CSRF sin XSS.

Entonces, ¿dónde entra el XSS en la imagen? Si existe una vulnerabilidad XSS en bank.com , el atacante podría hacer lo mismo desde bank.com , que es enviar una solicitud para transferir dinero cada vez que la víctima visita la página de inicio de los bancos. Eso es mucho más poderoso, ya que los clientes del Banco tienen más probabilidades de visitar bank.com mientras están conectados allí que de evil.com .

Se vuelve aún mejor si se tiene en cuenta que la vulnerabilidad XSS se puede usar para leer el token CSRF, si existe, y, por lo tanto, evitar esa defensa.

Ahora no estoy seguro de volver a llamar a este segundo examen CSRF, ya que la solicitud ya no es un sitio cruzado. Pero supongo que a esto se refiere el CSRF asistido por XSS.

    
respondido por el Anders 03.11.2016 - 09:46
fuente
0

Solo necesita que una solicitud (GET, POST) viaje a través de la sesión de la víctima para realizar un ataque CSRF exitoso, de esta manera, podría usar etiquetas HTML que solicitan recursos del servidor, por ejemplo, etiqueta img , y luego hay una vulnerabilidad XSS en la aplicación web, podría inyectar algo como esto:

<img src="http://mywebbank/transfer?account=12345678&quantity=1000000"/>

EstaesunamuestrasimplesobreCSRFconXSS.Ahora,silaaplicaciónwebusaeltokenparavalidarunasolicitudlegítima,necesitaunaformadeobteneresetoken;lamayoríadelasaplicacioneswebagreganuntokenenunformularioHTML,algocomoesto:

<inputtype="hidden" id="token" name="token" value="3343583489" />

Podría inyectar un XSS en la misma página donde se ubica el campo token , este XSS obtendrá ese token y creará un elemento HTML que generará una solicitud HTTP con cada parámetro requerido (incluido el token), para instancia:

<script>
var ifr = document.createElement("IFRAME");
ifr.src="http://mywebbank/transfer?account=12345678&quantity=1000000&token="+document.getElementById("token").value;
document.appendChild(ifr);
</script>

De esta manera, puede realizar un ataque CSRF a través de un XSS y omitir la protección basada en el token; esta es solo una forma de hacerlo, pero puede hacerlo de otra manera, solo necesita ser creativo.

Espero que esta información te ayude.

    
respondido por el hmrojas.p 03.11.2016 - 23:33
fuente

Lea otras preguntas en las etiquetas