hacktricks/pentesting-web/uuid-insecurities.md

77 lines
5.4 KiB
Markdown
Raw Normal View History

# Inseguranças de UUID
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras maneiras de apoiar o HackTricks:
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
## Informações Básicas
Identificadores Únicos Universalmente (UUIDs) são **números de 128 bits usados para identificar informações de forma única** em sistemas de computador. 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 por 32 dígitos hexadecimais. Existem diferentes versões de UUIDs, cada uma servindo a propósitos diferentes:
* **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 usados).
* **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 inteiramente aleatoriamente, fornecendo 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 aparece 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, é o UUID v**1**.
* A **posição do N** indica a variante do UUID.
{% endhint %}
## Ataque de Sanduíche
O "Ataque de Sanduíche" é 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. O UUID v1 é gerado com base no tempo, sequência de relógio e o endereço MAC do nó, o que pode torná-lo um pouco previsível se um atacante puder obter alguns desses UUIDs gerados próximos no tempo.
### Exemplo
Imagine uma aplicação web que usa UUID v1 para gerar links de redefinição de senha. Veja como um atacante pode explorar isso para obter acesso não autorizado:
1. **Configuração Inicial**:
* O atacante tem controle sobre duas contas de e-mail: \`atacante1@acme.com\` e \`atacante2@acme.com\`.
* A conta de e-mail do alvo é \`vítima@acme.com\`.
2. **Execução**:
* O atacante aciona uma redefinição de senha para sua primeira conta (\`atacante1@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 (\`vítima@acme.com\`) e então rapidamente para a segunda conta controlada pelo atacante (\`atacante2@acme.com\`).
* O atacante recebe um link de redefinição para a segunda conta com um UUID, digamos \`998796b4-7592-11e9-8201-bb2f15014a14\`.
3. **Análise**:
* 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. **Ataque de Força Bruta:**
* 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/\<UUID-gerado>\`).
* Se a aplicação web não limitar adequadamente a taxa ou bloquear tais tentativas, o atacante pode testar rapidamente todos os UUIDs possíveis no intervalo.
5. **Acesso Obtido:**
* 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 à conta.
### Ferramentas
* Você pode realizar o ataque de sanduíche automaticamente com a ferramenta: [**https://github.com/Lupin-Holmes/sandwich**](https://github.com/Lupin-Holmes/sandwich)
* Você pode detectar esse tipo de UUIDs no Burp Suite com a extensão [**UUID Detector**](https://portswigger.net/bappstore/65f32f209a72480ea5f1a0dac4f38248).
## Referências
* [https://versprite.com/blog/universally-unique-identifiers/](https://versprite.com/blog/universally-unique-identifiers/)