encabezado de origen personalizado para omitir la protección CORS contra CSRF

3

CORS (intercambio de recursos de origen cruzado) puede usarse para proteger las aplicaciones web de CSRF. Antes de aceptar una solicitud, el servidor verifica que el host especificado en el encabezado Origin esté entre los hosts permitidos en CORS. encabezado de Access-Control-Allow-Origin .

si es así, ¿podemos pasar por alto la protección de CORS estableciendo un encabezado de origen personalizado en el exploit CSRF? ejemplo:

<?php
header('Origin: www.already-allowed-website.net');
/* the rest of a simple POST CSRF exploit... */
?>
    
pregunta Reda LM 13.09.2017 - 16:42
fuente

2 respuestas

2

No, porque está agregando un encabezado a una respuesta, no a una solicitud: al cargar su página CSRF, su navegador verá una respuesta que es algo así como:

HTTP/1.1 200 OK
Date: Mon, 11 Sep 2017 09:42:49 GMT
Connection: close
Origin: www.already-allowed-website.net

... web page content ...

El encabezado "Origen" no tiene ningún sentido en este contexto, pero puede agregarlo a través de PHP u otros idiomas del servidor si lo desea.

Luego, el navegador construirá la carga útil de CSRF real (recordando que "CS" significa "Lado del Cliente") y enviará una solicitud con el encabezado de Origen que el navegador desea configurar, con suerte ignorando cualquier intento de anularlo.

Hay una lista de los encabezados que puede configurar en las solicitudes de XHR en enlace

    
respondido por el Matthew 13.09.2017 - 17:01
fuente
3

No importa qué encabezado de Origen haya configurado en la respuesta del servidor al navegador como lo hace en su ejemplo con el código PHP del lado del servidor. Al navegador no le importa este encabezado.

Relevante para CORS es solo el encabezado de Origen enviado por el navegador al servidor. Si pudiera falsificar esto desde el interior del navegador, podría pasar por alto la protección. Pero, Origin es uno de los encabezados que no se puede cambiar dentro de XHR o solicitudes similares, por lo que no debería ser posible un bypass de este tipo.

    
respondido por el Steffen Ullrich 13.09.2017 - 16:57
fuente

Lea otras preguntas en las etiquetas