UUID Insecurities
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Los Identificadores Únicos Universales (UUIDs) son números de 128 bits utilizados para identificar información de manera única en sistemas informáticos. Los UUIDs 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 UUIDs 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 UUIDs, 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 UUIDs 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.
Note 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 "Sandwich Attack" 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. 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 UUIDs 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 activa 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 activa 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 UUIDs generados cerca en el tiempo (`99874128` y `998796b4`). Dada la naturaleza secuencial de los UUIDs basados en el tiempo, el UUID para la cuenta de la víctima probablemente caerá entre estos dos valores.
Ataque de Fuerza Bruta:
El atacante utiliza una herramienta para generar UUIDs 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 UUIDs 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 UUIDs en Burp Suite con la extensión UUID Detector.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)