Explotación de CORS y POC [cerrado]

1

¿Cómo puedo explotar una aplicación que devuelve encabezados como sigue?

Access-Control-Allow-Origin: *

¿Qué información exacta obtenemos si se establece lo siguiente en *

Para que sea conciso, si una aplicación tiene una página autenticada con Access-Control-Allow-Origin establecida en *, se puede acceder a la información sin autenticación.

    
pregunta Mohammed Farhan 06.05.2018 - 20:04
fuente

2 respuestas

2
  

El encabezado de respuesta Access-Control-Allow-Origin indica si la respuesta se puede compartir con recursos con el origen dado.

(De MDN)

Cuando el servidor envía Access-Control-Allow-Origin: * , permite que cualquier origen acceda al recurso en una solicitud de origen cruzado. Pero la medida en que esto es explotable varía.

Supongamos que ha iniciado sesión para banca en línea en https://yourbank.example/ y el sitio establece el encabezado ACAO. Al mismo tiempo, estás visitando un sitio controlado por un atacante en otra pestaña. Ahora, el sitio del atacante podría cargar una secuencia de comandos que emita una solicitud de origen cruzado a su panel de banca en línea en segundo plano, en la línea de:

fetch('https://yourbank.example/').then(r => r.text()).then(console.log)

En ese caso, su navegador revelaría su vista de https://yourbank.example/ al atacante. Sin embargo , esto no es útil, porque su navegador no incluye los detalles de autenticación (es decir, las cookies de sesión) en la solicitud de forma predeterminada. Entonces, todo lo que el atacante obtiene es su vista no autenticada del sitio web de su banco.

Incluso si el sitio también envía Access-Control-Allow-Credentials: true (donde el atacante generalmente puede llamar a fetch() con {credentials: 'include'} para leer la respuesta de una solicitud autenticada de origen cruzado) está fuera de suerte porque permitir credenciales no tiene ningún efecto cuando ACAO está configurado como comodín ( * ).

Por lo tanto, con ACAO: * solo, te quedan con menos posibilidades de ataque. Por ejemplo, funcionaría en un sitio de intranet o una interfaz de enrutador que muestra información confidencial incluso sin autenticación, pero el atacante no puede acceder directamente a ella. (En ese caso, también puede ser vulnerable a DNS encuadernado .)

    
respondido por el Arminius 06.05.2018 - 21:15
fuente
0

El envío de Access-Control-Allow-Origin: * no significa que el punto final sea generalmente explotable. Esto podría estar perfectamente bien, por ejemplo. para un punto final de API público que está diseñado para que cualquiera pueda acceder a él.

Sin embargo, sería explotable si el punto final devuelve datos sensibles al contexto basados en un contexto de usuario generado por las cookies de sesión. En este caso, un sitio web malintencionado podría solicitar datos del punto final en el contexto de un usuario y filtrar datos personales o enviar datos al punto extremo y hacerse pasar por el usuario.

    
respondido por el xsrf 06.05.2018 - 22:56
fuente

Lea otras preguntas en las etiquetas