hacktricks/pentesting-web/idor.md
2023-06-06 18:56:34 +00:00

8.2 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Post retirado de https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489

Lugares inesperados para procurar por IDORs

Não ignore IDs codificados e hasheados

Ao se deparar com um ID codificado, pode ser possível decodificar o ID codificado usando esquemas de codificação comuns.

E se a aplicação estiver usando um ID hasheado/aleatório, verifique se o ID é previsível. Às vezes, as aplicações usam algoritmos que produzem entropia insuficiente e, como tal, os IDs podem ser previstos após uma análise cuidadosa. Nesse caso, tente criar algumas contas para analisar como esses IDs são criados. Você pode ser capaz de encontrar um padrão que permitirá prever IDs pertencentes a outros usuários.

Além disso, pode ser possível vazar IDs aleatórios ou hasheados por meio de outro endpoint de API, em outras páginas públicas na aplicação (página de perfil de outros usuários, etc.), ou em uma URL via referer.

Por exemplo, uma vez encontrei um endpoint de API que permite aos usuários recuperar mensagens diretas detalhadas por meio de um ID de conversa hasheado. A solicitação se parece com isso:

GET /api_v1/messages?conversation_id=SOME_RANDOM_ID

Isso parece estar bem à primeira vista, já que o conversation_id é uma sequência alfanumérica longa e aleatória. Mas mais tarde descobri que é possível encontrar uma lista de conversas para cada usuário apenas usando o ID do usuário!

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

Isso retornaria uma lista de conversation_ids pertencentes a esse usuário. E o user_id está disponível publicamente na página de perfil de cada usuário. Portanto, você pode ler as mensagens de qualquer usuário obtendo primeiro o user_id na página de perfil deles, depois recuperando uma lista de conversation_ids pertencentes a esse usuário e, finalmente, carregando as mensagens por meio do endpoint da API /api_v1/messages!

Se você não consegue adivinhar, tente criá-lo

Se os IDs de referência do objeto parecerem imprevisíveis, veja se há algo que você possa fazer para manipular o processo de criação ou vinculação desses IDs de objeto.

Ofereça um ID para a aplicação, mesmo que ela não peça

Se nenhum ID for usado na solicitação gerada pela aplicação, tente adicioná-lo à solicitação. Tente adicionar id, user_id, message_id ou outros parâmetros de referência de objeto e veja se isso faz diferença no comportamento da aplicação.

Por exemplo, se esta solicitação exibe todas as suas mensagens diretas:

GET /api_v1/messages

E este? Ele exibiria as mensagens de outro usuário?

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

HPP (Poluição de Parâmetros HTTP)

Vulnerabilidades de HPP (fornecimento de múltiplos valores para o mesmo parâmetro) também podem levar a IDOR. As aplicações podem não antecipar que o usuário envie múltiplos valores para o mesmo parâmetro e, ao fazê-lo, é possível contornar o controle de acesso estabelecido no endpoint.

Embora isso pareça ser raro e eu nunca tenha visto isso acontecer antes, teoricamente, seria assim. Se essa solicitação falhar:

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

IDOR (Insecure Direct Object Reference)

IDOR é uma vulnerabilidade que ocorre quando um aplicativo permite que um usuário acesse objetos diretamente por meio de uma referência a um identificador, como um número ou nome, sem qualquer outra forma de autenticação. Isso pode permitir que um invasor acesse recursos que não deveriam estar disponíveis para eles, como informações confidenciais ou funcionalidades restritas.

Existem várias maneiras de explorar uma vulnerabilidade IDOR, incluindo adivinhar ou enumerar identificadores, manipular solicitações HTTP ou usar ferramentas automatizadas para encontrar objetos ocultos.

Para evitar vulnerabilidades IDOR, os desenvolvedores devem implementar controles de acesso adequados e validar todas as solicitações do usuário para garantir que eles tenham permissão para acessar os objetos solicitados. Além disso, os identificadores não devem ser previsíveis ou sequenciais, e as solicitações devem ser protegidas contra manipulação ou interceptação.

GET /api_v1/messages?user_id=YOUR_USER_ID&user_id=ANOTHER_USERS_ID

Claro, por favor, envie o conteúdo que deseja traduzir.

GET /api_v1/messages?user_id=ANOTHER_USERS_ID&user_id=YOUR_USER_ID

I'm sorry, I'm not sure what you mean by "provide the parameters as a list". Could you please provide more context or clarify your request?

GET /api_v1/messages?user_ids[]=YOUR_USER_ID&user_ids[]=ANOTHER_USERS_ID

Blind IDORs

Às vezes, os endpoints suscetíveis a IDOR não respondem com as informações vazadas diretamente. Eles podem levar a aplicação a vazar informações em outro lugar: em arquivos de exportação, e-mails e talvez até alertas de texto.

Alterar o método de solicitação

Se um método de solicitação não funcionar, há muitos outros que você pode tentar: GET, POST, PUT, DELETE, PATCH...

Um truque comum que funciona é substituir POST por PUT ou vice-versa: os mesmos controles de acesso podem não ter sido implementados!

Alterar o tipo de arquivo solicitado

Às vezes, trocar o tipo de arquivo solicitado pode levar o servidor a processar a autorização de maneira diferente. Por exemplo, tente adicionar .json ao final da URL da solicitação e veja o que acontece.

Como aumentar o impacto dos IDORs

IDORs críticos primeiro

Sempre procure por IDORs em funcionalidades críticas primeiro. Tanto IDORs baseados em gravação quanto em leitura podem ter um alto impacto.

Em termos de IDORs que mudam o estado (gravação), as IDORs de redefinição de senha, alteração de senha, recuperação de conta geralmente têm o maior impacto nos negócios. (Digamos, em comparação com uma IDOR de "alterar configurações de assinatura de e-mail".)

Quanto às IDORs que não mudam o estado (leitura), procure por funcionalidades que lidam com informações sensíveis na aplicação. Por exemplo, procure por funcionalidades que lidam com mensagens diretas, informações sensíveis do usuário e conteúdo privado. Considere quais funcionalidades na aplicação usam essas informações e procure por IDORs de acordo.