Test CORS Behavior
Objetivo
Determinar si la policy CORS es demasiado permisiva, se refleja de forma insegura o se malentiende como control de autorización.
Supuestos
- uno o más endpoints API/browser dependen de acceso cross-origin
- el navegador impone CORS, no el servidor en sentido general de auth
- credenciales y manejo de origin pueden estar mal configurados
Prerrequisitos
- endpoints que devuelven headers CORS
- capacidad de enviar headers
Origincustom - comprensión de si hay cookies o credenciales involucradas
Pasos de recon
- Identificá endpoints cross-origin.
- Registrá headers
Access-Control-*en responses normales y preflights. - Observá si los origins son estáticos, wildcard o reflejados.
Pasos de exploit / testing
- Enviá requests con valores
Origincontrolados por atacante. - Verificá si se permiten credenciales junto con origins reflejados.
- Compará comportamiento preflight y no-preflight.
- Probá variaciones de subdominio y esquema de origins confiables.
- Confirmá si el equipo depende de CORS donde debería existir auth server-side.
Señales de validación
- origin de atacante reflejado
Access-Control-Allow-Credentials: truecon comportamiento inseguro de origin- confianza amplia en subdominios influenciables por atacante
- confusión entre responses legibles y cambios de estado escribibles
Mitigación
- enumerar explícitamente origins confiables
- nunca tratar CORS como autorización
- revisar cuidadosamente flujos cross-origin con credenciales
- mantener access control server-side independiente de la policy del navegador
Logging / detección
- origins inesperados golpeando rutas sensibles
- drift en patrones de origins permitidos
- anomalías de preflight en endpoints sensibles a auth
Notas relacionadas
Referencias
- Testing / Lab: PortSwigger CORS topic — https://portswigger.net/web-security/cors
- Fundamental: MDN CORS guide — https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS