Identificando Uso de OAuth en una Aplicación
La primera indicación de que una aplicación usa OAuth es comúnmente encontrada en el proceso de login. Busca opciones que permitan a los usuarios iniciar sesión usando proveedores de servicios externos como Google, Facebook o GitHub. Estas opciones redirigen a los usuarios a la página de autorización del proveedor de servicios.
Detectando la Implementación de OAuth
Al analizar el tráfico de red durante el proceso de login, presta atención a las redirecciones HTTP. Las implementaciones OAuth redirigirán al navegador (generalmente) a la URL del servidor de autorización. Esta URL contiene parámetros específicos como response_type, client_id, redirect_uri, scope y state. Estos parámetros son indicativos de un flujo OAuth en progreso. Por ejemplo, una URL puede verse así:
https://dev.coffee.thm/authorize?response_type=code&client_id=AppClientID&redirect_uri=https://dev.coffee.thm/callback&scope=profile&state=xyzSecure123
Identificando el Framework de OAuth
Una vez confirmado que OAuth está siendo usado, el siguiente paso es identificar el framework o librería específicos que la aplicación emplea. Esto puede ofrecer una vista detallada de las vulnerabilidades potenciales. Aquí hay algunas estrategias para identificar el framework OAuth:
- HTTP Headers and Responses: Inspecciona los headers HTTP y los bodies de la respuesta en busca de identificadores o comentarios referenciando librerías o frameworks OAuth.
- Source Code Analysis: Si puedes acceder al código fuente de la aplicación, busca palabras clave específicas y afirmaciones importantes que puedan revelar el framework en uso. Por ejemplo, librerías como
django-oauth-toolkit,oauthlib,spring-security-oauthopassportenNode.js, cada uno tiene características y convenciones de nombres únicas. - Authorization and Token Endpoints: Analiza los endpoints usados para obtener códigos de autorización y tokens de acceso. Diferentes implementaciones OAuth pueden tener patrones o estructuras únicos de endpoints. Por ejemplo, el
Django OAuth Toolkitnormalmente sigue el patrón/oauth/authorize/y/oauth/token/, mientras que otros frameworks usan rutas diferentes. - Error Messages: Los mensajes de error y debug personalizados pueden revelar la tecnología subyacente. Los mensajes de error detallados pueden incluir referencias a una librería o framework específicos.
