UUID Insecurities
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Los Identificadores Únicos Universales (UUID) son números de 128 bits utilizados para identificar información de manera única en sistemas informáticos. Los UUID son esenciales en aplicaciones donde se necesitan identificadores únicos sin coordinación central. Se utilizan comúnmente como claves de base de datos y pueden referirse a varios elementos como documentos y sesiones.
Los UUID están diseñados para ser únicos y difíciles de adivinar. Están estructurados en un formato específico, divididos en cinco grupos representados como 32 dígitos hexadecimales. Hay diferentes versiones de UUID, cada una con diferentes propósitos:
UUID v1 es basado en el tiempo, incorporando la marca de tiempo, la secuencia de reloj y el ID del nodo (dirección MAC), pero puede potencialmente exponer información del sistema.
UUID v2 es similar a v1 pero incluye modificaciones para dominios locales (no se utiliza ampliamente).
UUID v3 y v5 generan UUID utilizando valores hash de espacio de nombres y nombre, siendo v3 el que utiliza MD5 y v5 el que utiliza SHA-1.
UUID v4 se genera casi completamente de manera aleatoria, proporcionando un alto nivel de anonimato pero con un ligero riesgo de duplicados.
Ten en cuenta que la versión y subversión del UUID generalmente aparece en la misma posición dentro del UUID. Por ejemplo en: 12345678 - abcd - 1a56 - a539 - 103755193864 xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
La posición de la M indica la versión del UUID. En el ejemplo anterior, es UUID v1.
La posición de la N indica la variante del UUID.
El "Ataque Sandwich" es un tipo específico de ataque que exploita la predictibilidad de la generación de UUID v1 en aplicaciones web, particularmente en características como restablecimientos de contraseña. El UUID v1 se genera en función del tiempo, la secuencia de reloj y la dirección MAC del nodo, lo que puede hacerlo algo predecible si un atacante puede obtener algunos de estos UUID generados cerca en el tiempo.
Imagina una aplicación web que utiliza UUID v1 para generar enlaces de restablecimiento de contraseña. Así es como un atacante podría explotar esto para obtener acceso no autorizado:
Configuración Inicial:
El atacante tiene control sobre dos cuentas de correo electrónico: `attacker1@acme.com` y `attacker2@acme.com`.
La cuenta de correo electrónico del objetivo es `victim@acme.com`.
Ejecución:
El atacante inicia un restablecimiento de contraseña para su primera cuenta (`attacker1@acme.com`) y recibe un enlace de restablecimiento de contraseña con un UUID, digamos `99874128-7592-11e9-8201-bb2f15014a14`.
Inmediatamente después, el atacante inicia un restablecimiento de contraseña para la cuenta de la víctima (`victim@acme.com`) y luego rápidamente para la segunda cuenta controlada por el atacante (`attacker2@acme.com`).
El atacante recibe un enlace de restablecimiento para la segunda cuenta con un UUID, digamos `998796b4-7592-11e9-8201-bb2f15014a14`.
Análisis:
El atacante ahora tiene dos UUID generados cerca en el tiempo (`99874128` y `998796b4`). Dada la naturaleza secuencial de los UUID basados en el tiempo, es probable que el UUID para la cuenta de la víctima caiga entre estos dos valores.
Ataque de Fuerza Bruta:
El atacante utiliza una herramienta para generar UUID entre estos dos valores y prueba cada UUID generado intentando acceder al enlace de restablecimiento de contraseña (por ejemplo, `https://www.acme.com/reset/<generated-UUID>`).
Si la aplicación web no limita adecuadamente la tasa o bloquea tales intentos, el atacante puede probar rápidamente todos los UUID posibles en el rango.
Acceso Obtenido:
Una vez que se descubre el UUID correcto para el enlace de restablecimiento de contraseña de la víctima, el atacante puede restablecer la contraseña de la víctima y obtener acceso no autorizado a su cuenta.
Puedes realizar el ataque sandwich automáticamente con la herramienta: https://github.com/Lupin-Holmes/sandwich
Puedes detectar este tipo de UUID en Burp Suite con la extensión UUID Detector.
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)