hacktricks/pentesting-web/uuid-insecurities.md

5.4 KiB

Inseguranças de UUID

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

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 v1.
  • 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`.
  1. 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`.
  1. 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.
  1. 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.
  1. 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

Referências