mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
92 lines
6.7 KiB
Markdown
92 lines
6.7 KiB
Markdown
# Inseguridades de UUID
|
|
|
|
{% hint style="success" %}
|
|
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Apoya a HackTricks</summary>
|
|
|
|
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
|
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## Información Básica
|
|
|
|
Los Identificadores Únicos Universales (UUID) son **números de 128 bits utilizados para identificar de manera única información** 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 usa comúnmente).
|
|
* **UUID v3 y v5** generan UUID utilizando valores hash de espacio de nombres y nombre, con v3 usando MD5 y v5 usando SHA-1.
|
|
* **UUID v4** se genera casi completamente de manera aleatoria, 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 UUID v**1**.
|
|
* 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 **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.
|
|
|
|
### 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: \`attacker1@acme.com\` y \`attacker2@acme.com\`.
|
|
* La cuenta de correo electrónico del objetivo es \`victim@acme.com\`.
|
|
|
|
2. **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\`.
|
|
|
|
3. **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.
|
|
|
|
4. **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.
|
|
|
|
5. **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
|
|
|
|
* Puedes realizar el ataque sandwich automáticamente con la herramienta: [**https://github.com/Lupin-Holmes/sandwich**](https://github.com/Lupin-Holmes/sandwich)
|
|
* Puedes detectar este tipo de UUID en Burp Suite con la extensión [**UUID Detector**](https://portswigger.net/bappstore/65f32f209a72480ea5f1a0dac4f38248).
|
|
|
|
## Referencias
|
|
|
|
* [https://versprite.com/blog/universally-unique-identifiers/](https://versprite.com/blog/universally-unique-identifiers/)
|
|
|
|
{% hint style="success" %}
|
|
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Apoya a HackTricks</summary>
|
|
|
|
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
|
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
|
|
|
|
</details>
|
|
{% endhint %}
|