🔒OAuth 2.0 Authentication Vulnerabilities

¿Qué es OAuth?

OAuth es un marco de autorización de uso común que permite que los sitios web y las aplicaciones web soliciten acceso limitado a la cuenta de un usuario en otra aplicación. Fundamentalmente, OAuth permite al usuario otorgar este acceso sin exponer sus credenciales de inicio de sesión a la aplicación solicitante. Esto significa que los usuarios pueden ajustar qué datos quieren compartir en lugar de tener que ceder el control total de su cuenta a un tercero.

¿Cómo funciona OAuth 2.0?

OAuth 2.0 se desarrolló originalmente como una forma de compartir el acceso a datos específicos entre aplicaciones. Funciona definiendo una serie de interacciones entre tres partes distintas, a saber, una aplicación cliente, un propietario de recursos y el proveedor de servicios OAuth.

  • Aplicación cliente - El sitio web o aplicación web que quiere acceder a los datos del usuario.

  • Propietario del recurso : el usuario a cuyos datos desea acceder la aplicación cliente.

  • Proveedor de servicios OAuth - El sitio web o aplicación que controla los datos del usuario y el acceso a los mismos. Admiten OAuth al proporcionar una API para interactuar tanto con un servidor de autorización como con un servidor de recursos.

¿Cómo surge esta vulnerabilidad?

Surge porque la especificacion de OAuth es realmente vaga y uno de varios probles es la falta general de funciones de seguridad integradas. La seguridad depende casi por completo de los desarrolladores por lo que deben de usar una conbinacion correcta de seguridad.

Identificación de la autenticación OAuth

Reconocer cuándo una aplicación utiliza la autenticación OAuth es relativamente sencillo. Si ve una opción para iniciar sesión con su cuenta desde un sitio web diferente, esta es una fuerte indicación de que se está utilizando OAuth.

La forma más confiable de identificar la autenticación OAuth es hacer un proxy de su tráfico a través de Burp y verificar los mensajes HTTP correspondientes cuando usa esta opción de inicio de sesión. Independientemente del tipo de concesión de OAuth que se utilice, la primera solicitud del flujo siempre será una solicitud al /authorizationextremo que contiene una serie de parámetros de consulta que se utilizan específicamente para OAuth. En particular, preste atención a los parámetros client_id, redirect_uriy response_type. Por ejemplo, una solicitud de autorización generalmente se verá así:

GET /authorization?client_id=12345&redirect_uri=https://client-app.com/callback&response_type=token&scope=openid%20profile&state=ae13d489bd00e3c24 HTTP/1.1
Host: oauth-authorization-server.com

RECONOCIMIENTO

Un reconocimiento basico del servicio del servicio OAuth. Si se utiliza un servicio externo, debera poder identificar al proveedor especifico a partir del nombre de HOST al que se envia la solicitudde autorizacion. Estos servicios usan API's publicas, por lo que encontraremos informacion de estas.

Una vez con el host del servidor, sirmpre debe intentar enviar una solicitud GET a los soguientes puntos finales estandar:

/.well-known/oauth-authorization-server
/.well-known/openid-configuration

Estos a menudo devolverán un archivo de configuración JSON que contiene información clave, como detalles de funciones adicionales que pueden ser compatibles. Esto a veces le informará sobre una superficie de ataque más amplia y funciones compatibles que pueden no mencionarse en la documentación.

Última actualización