OAuth 2.0
Open Authorisation Framework
I started with PortSwigger Labs and i thinks it's the best resource for someone wanting to learn about OAuth and common vulnerabilities here. You can access it through here: https://portswigger.net/web-security/oauth
OAuth 2.0 is completely different from OAuth 1, it's not a sequel of it.
There are mainly 2 grant types used in OAuth i.e. "Authorization code" , "Implicit" grant.
Components:
There are mainly 3 components in OAuth framework.
CLIENT APPLICATION: Application that needs access of user's data to let user sign-up on their application.
RESOURCE OWNER: Owner of data whose data is being requested.
OAUTH SERVICE PROVIDER: Service where user's data is stored and client application is already registered with this service in order to use it e.g. Google, Facebook, Github etc.
Recon:
Identifying that OAuth is being used by client application. It's easy to do so when you see:
Signup with social media services, google, github etc.
A request like
/auth?client_id=a45tbk&redirect_uri=https://example.com/oauth&response_type=code&scope=openid%20profile%20email
client_id
,redirect_uri
,scope
are good indicators of OAuth.
Look up for these files on OAuth server:
/.well-known/oauth-authorization-server
/.well-known/openid-configuration
Vulnerabilities:
Testing for if
state
parameter is tied to session of user otherwise CSRF like attack is possible.Check how OAuth service provider checks
redirect_uri
parameter. If you can put your server's url inredirect_uri
parameter then you can successfully steal victim's authorization code or Access token, depending on the grant type, by sending the malicious url to victim.If redirect url is making a pattern matching check if you can try to bypass that checks e.g
legitwebsite.com@attacker.com
,lgitwebsite.attacker.com
Check if you can find an open redirect on this website that can be used to proxy data to your server.
Check if you can leak code to arbitrary page on client's website
https://client-app.com/oauth/callback/../../example/path
and if you find some vulnerability onhttps://client-app.com/example/path
then you can leak OAuth code.Scope abuse, check if you can send scope parameter to ask more details then required.
Check if anyone can register with OAuth service provider without any authorization.
Last updated