Em nome de Deus ❤️, ó Senhor, ensina-nos o que nos beneficia, e beneficia-nos com o que nos ensinaste, e aumenta nosso conhecimento.
Este é o meu primeiro relatório de Bug Bounty, sinta-se à vontade para me enviar feedback ❤️
Quem sou eu
Primeiro, deixe-me me apresentar, eu sou 0xNayel. Eu sou um caçador de bugs há mais de dois anos no Hackerone. Atualmente, estou entre os 30 melhores no Q4 2024 e em 63º em todo 2024. Encontrei vulnerabilidades na Adobe
inDrive
Pepsico
e em alguns outros programas privados.
Introdução
Neste texto, falarei sobre a maior recompensa que já recebi, que é uma recompensa de 4 dígitos em um programa privado no hackerone. O bug era crítico e complicado, mas direto para explorar. No entanto, levou mais de 2 meses para obter uma resposta. Além disso, um cenário muito estranho aconteceu comigo, e eu vou explicar isso.
Vamos Começar
O escopo do programa era pequeno, eles incluem o aplicativo principal do qual o programa depende diretamente em seu negócio online, ele possui múltiplas funcionalidades, o que é ótimo para mim, pois sabemos que o teste manual é diferente do automatizado. Isso desenvolve sua criatividade e reduz a rotina. Também requer mais esforço, mas vale a pena.
Primeiro, começo a explorar o aplicativo: criar contas, brincar com funções, construir um forte conhecimento sobre as tecnologias utilizadas.
Encontrar o bug foi mais rápido do que eu imaginava, estava nas primeiras horas de exploração dos arquivos js.
Passos que me permitiram encontrar o bug:
- Eu abri o burp e comecei a enviar requisições do app e vê-las no histórico do burp para identificar a tecnologia e o fluxo que o programa usa
- Eu encontrei uma coisa estranha que o programa usa métodos diferentes para interagir com o backend, encontrei requisições de API normais (para funções principais) e também requisições GraphQL (para fins de análise)
- Eu imediatamente enviei uma consulta de introspecção para ver todas as consultas possíveis e comecei a explorá-las, mas eram muitas, então eu abri arquivos js e comecei a procurar qualquer coisa relacionada ao GraphQL
- Eu encontrei uma consulta chamada
companyUserinfo
que chamou minha atenção, então voltei para a consulta de introspecção e encontrei um comentário importante na Consulta# Não requer um Token
, Vamos testar.
- Eu noto que a consulta precisa de 3 variáveis, importantes eram
storehash
que é um valor constante que o usuário atribuiu ao criar a conta,customerId
que é um ID de 6 dígitos do usuário cujos dados quero exfiltrar,email
não era importante, pois posso deixá-lo vazio.
- iniciar - testando minha conta (funcionou)
- testar IDOR de outra conta (funcionou) significa que é vulnerável
retornando ao comentário que encontrei# Não requer um Token
- teste para solicitação não autenticada (também funcionou) significa que não há controle de acesso nesta consulta,
Esta é a consulta:
A resposta foi dados de usuário PII:
- Então eu faço um POC, é um comando cURL para força bruta em 30 usuários (não há limite de taxa, posso buscar todos os dados dos usuários aqui)
Após relatar:
Enfrentei um cenário estranho, recebi um e-mail após 5 dias de relatório da empresa sobre a conta que usei para me registrar no aplicativo. O conteúdo era que os dados dos usuários da empresa foram exfiltrados e eles corrigiram a vulnerabilidade.
Eu realmente não sei se sou a razão ou se eles foram hackeados por acaso ao mesmo tempo, então tentei reproduzir o bug, mas como eles disseram, já fizeram uma correção. Eu senti que estava atrasado e o relatório não seria aceito porque o hackerone nem sequer fez a triagem do relatório.
A última parte estranha, pois eu não esperava, eles me responderam pagando a recompensa.