hacktricks/pentesting-web/uuid-insecurities.md

5.7 KiB

Inseguridades de UUID

Aprende a hackear AWS desde cero hasta convertirte en un héroe con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Información Básica

Los Identificadores Únicos Universalmente (UUIDs) son números de 128 bits utilizados para identificar información de forma única en sistemas informáticos. Los UUIDs son esenciales en aplicaciones donde se necesitan identificadores únicos sin coordinación central. Comúnmente se utilizan como claves de bases de datos y pueden hacer referencia 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 por 32 dígitos hexadecimales. Existen diferentes versiones de UUIDs, cada una sirviendo para diferentes propósitos:

  • UUID v1 está basado en el tiempo, incorporando la marca de tiempo, la secuencia de reloj y el ID del nodo (dirección MAC), pero potencialmente puede exponer información del sistema.
  • UUID v2 es similar al v1 pero incluye modificaciones para dominios locales (poco utilizado).
  • UUID v3 y v5 generan UUIDs utilizando valores hash de espacio de nombres y nombre, con v3 utilizando MD5 y v5 utilizando SHA-1.
  • UUID v4 se genera casi completamente al azar, proporcionando un alto nivel de anonimato pero con un ligero riesgo de duplicados.

{% hint style="success" %} 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 un UUID v1.
  • La posición de la N indica la variante del UUID. {% endhint %}

Ataque Sandwich

El "Ataque Sandwich" es un tipo específico de ataque que explota la previsibilidad de la generación de UUID v1 en aplicaciones web, particularmente en funciones como restablecimiento de contraseñas. 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 UUIDs generados cerca en el tiempo.

Ejemplo

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:

  1. Configuración Inicial:
  • El atacante tiene control sobre dos cuentas de correo electrónico: `atacante1@acme.com` y `atacante2@acme.com`.
  • La cuenta de correo electrónico del objetivo es `victima@acme.com`.
  1. Ejecución:
  • El atacante inicia un restablecimiento de contraseña para su primera cuenta (`atacante1@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 (`victima@acme.com`) y luego rápidamente para la segunda cuenta controlada por el atacante (`atacante2@acme.com`).
  • El atacante recibe un enlace de restablecimiento para la segunda cuenta con un UUID, digamos `998796b4-7592-11e9-8201-bb2f15014a14`.
  1. 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, es probable que el UUID para la cuenta de la víctima caiga entre estos dos valores.
  1. 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/<UUID-generado>`).
  • Si la aplicación web no limita adecuadamente la velocidad o bloquea tales intentos, el atacante puede probar rápidamente todos los UUIDs posibles en el rango.
  1. 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.

Herramientas

Referencias