
Prueba de concepto de exploit que demuestra la reutilización del código de autorización OAuth2 en XenForo anterior a 2.3.13, permitiendo la reproducción de tokens y múltiples familias de tokens.
XenForo anterior a 2.3.13 permite que un código de autorización OAuth2 se canjee más de una vez.
La concesión de código de autorización carga un código, verifica su validez basada en el tiempo y crea un par de tokens. La ruta exitosa no elimina el código, no lo marca como consumido ni utiliza una actualización atómica de un solo uso. Reutilizar el mismo intercambio válido crea, por tanto, una familia independiente de tokens de acceso/actualización para el mismo usuario y ámbitos.
Un atacante aún necesita un código de autorización válido y los parámetros de cliente requeridos por esa concesión. Este problema no explica cómo se obtiene el código; hace que un código sea reutilizable después de que el cliente previsto ya lo haya canjeado.
En XenForo 2.3.12 (build 2031270), dos intercambios idénticos devolvieron tokens de acceso diferentes y ambos se autenticaron correctamente. XenForo 2.3.13 contiene la corrección.
python poc.py https://xenforo.example CLIENT_ID AUTHORIZATION_CODE https://client.example/callback --code-verifier VERIFIER
El script envía la misma concesión dos veces, aplica hash a los tokens devueltos e informa si ambos funcionan. No imprime credenciales ni identidad de la cuenta. Ejecútelo únicamente con una concesión desechable en una instalación de pruebas autorizada.
Descubierto por Marco Paciaroni (BomboBombone).