UUID Insecurities
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
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 v1.
A posição do N indica a variante do UUID.
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.
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:
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`.
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`.
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.
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.
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.
Você pode realizar o ataque sandwich automaticamente com a ferramenta: https://github.com/Lupin-Holmes/sandwich
Você pode detectar esses tipos de UUIDs no Burp Suite com a extensão UUID Detector.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)