mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-21 02:23:30 +00:00
92 lines
6.4 KiB
Markdown
92 lines
6.4 KiB
Markdown
# UUID Insecurities
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<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">\
|
|
Learn & practice GCP Hacking: <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>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## Basic Information
|
|
|
|
Identificadores Universais Exclusivos (UUIDs) são **números de 128 bits usados para identificar informações de forma única** em sistemas computacionais. UUIDs são essenciais em aplicações onde identificadores únicos são necessários sem coordenação central. Eles são comumente usados como chaves de banco de dados e podem se referir a vários elementos, como documentos e sessões.
|
|
|
|
UUIDs são projetados para serem únicos e **difíceis de adivinhar**. Eles são estruturados em um formato específico, divididos em cinco grupos representados como 32 dígitos hexadecimais. Existem diferentes versões de UUIDs, cada uma servindo a diferentes propósitos:
|
|
|
|
* **UUID v1** é baseado em tempo, incorporando o timestamp, sequência de relógio e ID do nó (endereço MAC), mas pode potencialmente expor informações do sistema.
|
|
* **UUID v2** é semelhante ao v1, mas inclui modificações para domínios locais (não amplamente utilizado).
|
|
* **UUID v3 e v5** geram UUIDs usando valores de hash de namespace e nome, com v3 usando MD5 e v5 usando SHA-1.
|
|
* **UUID v4** é gerado quase que totalmente de forma aleatória, proporcionando um alto nível de anonimato, mas com um leve risco de duplicatas.
|
|
|
|
{% hint style="success" %}
|
|
Note que a versão e subversão do UUID geralmente aparecem na mesma posição dentro do UUID. Por exemplo em:\
|
|
12345678 - abcd - 1a56 - a539 - 103755193864\
|
|
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
|
|
|
|
* A **posição do M** indica a **versão** do UUID. No exemplo acima, é UUID v**1**.
|
|
* A **posição do N** indica a variante do UUID.
|
|
{% endhint %}
|
|
|
|
## Sandwich attack
|
|
|
|
O "Sandwich Attack" é um tipo específico de ataque que **explora a previsibilidade da geração de UUID v1 em aplicações web**, particularmente em recursos como redefinições de senha. UUID v1 é gerado com base no tempo, sequência de relógio e no endereço MAC do nó, o que pode torná-lo um tanto previsível se um atacante conseguir obter alguns desses UUIDs gerados próximos no tempo.
|
|
|
|
### Example
|
|
|
|
Imagine uma aplicação web que usa UUID v1 para gerar links de redefinição de senha. Aqui está como um atacante pode explorar isso para obter acesso não autorizado:
|
|
|
|
1. **Initial Setup**:
|
|
|
|
* O atacante controla duas contas de email: \`attacker1@acme.com\` e \`attacker2@acme.com\`.
|
|
* A conta de email da vítima é \`victim@acme.com\`.
|
|
|
|
2. **Execution**:
|
|
|
|
* O atacante aciona uma redefinição de senha para sua primeira conta (\`attacker1@acme.com\`) e recebe um link de redefinição de senha com um UUID, digamos \`99874128-7592-11e9-8201-bb2f15014a14\`.
|
|
* Imediatamente depois, o atacante aciona uma redefinição de senha para a conta da vítima (\`victim@acme.com\`) e então rapidamente para a segunda conta controlada pelo atacante (\`attacker2@acme.com\`).
|
|
* O atacante recebe um link de redefinição para a segunda conta com um UUID, digamos \`998796b4-7592-11e9-8201-bb2f15014a14\`.
|
|
|
|
3. **Analysis**:
|
|
|
|
* O atacante agora tem dois UUIDs gerados próximos no tempo (\`99874128\` e \`998796b4\`). Dada a natureza sequencial dos UUIDs baseados em tempo, o UUID para a conta da vítima provavelmente estará entre esses dois valores.
|
|
|
|
4. **Brute Force Attack:**
|
|
|
|
* O atacante usa uma ferramenta para gerar UUIDs entre esses dois valores e testa cada UUID gerado tentando acessar o link de redefinição de senha (por exemplo, \`https://www.acme.com/reset/\<generated-UUID>\`).
|
|
* Se a aplicação web não limitar adequadamente a taxa ou bloquear tais tentativas, o atacante pode rapidamente testar todos os UUIDs possíveis na faixa.
|
|
|
|
5. **Access Gained:**
|
|
|
|
* Uma vez que o UUID correto para o link de redefinição de senha da vítima é descoberto, o atacante pode redefinir a senha da vítima e obter acesso não autorizado à sua conta.
|
|
|
|
### Tools
|
|
|
|
* Você pode realizar o ataque sandwich automaticamente com a ferramenta: [**https://github.com/Lupin-Holmes/sandwich**](https://github.com/Lupin-Holmes/sandwich)
|
|
* Você pode detectar esses tipos de UUIDs no Burp Suite com a extensão [**UUID Detector**](https://portswigger.net/bappstore/65f32f209a72480ea5f1a0dac4f38248).
|
|
|
|
## References
|
|
|
|
* [https://versprite.com/blog/universally-unique-identifiers/](https://versprite.com/blog/universally-unique-identifiers/)
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<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">\
|
|
Learn & practice GCP Hacking: <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>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|