XUT_ / COURSES / PENETRATION TESTER

Identifying the OAuth Services

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-oauth o passport en Node.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 Toolkit normalmente 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.