Introdução

Insecure Direct Object Reference (IDOR) é uma vulnerabilidade comum em sites quando se diz a respeito de requisições cliente servidor. De acordo com a OWASP, essa vulnerabilidade ocorre quando a aplicação web oferece acesso direto a objetos baseados no input do usuário. Como resultado dessa vulnerabilidades, atacantes podem ultrapassar os limites de suas permissões para acessar arquivos de maneira não autorizada, como arquivos do sistema, banco de dados, gravações de banco de dados, etc… Insecure Direct Object Refences permite que o atacante realize requisições bem sucedidas após modificar o valor de parâmetros utilizados para se referir a um objeto. Esses recursos pode ser entradas de banco de dados, arquivo de outros usuários, e outros… Isso é causado pelo fato de que o servidor oferece a resposta ao cliente sem passar por validações de segurança suficiente.


Como testar

Para testar essa vulnerabilidade, o hacker ético precisa primeiro mapear todas as localizações em que a aplicação web recebe um input do usuário para se referir a um objeto diretamente. Por exemplo, localizações onde o input do usuário é usado para acessar uma linha no banco de dados, um arquivo, uma página, um documento, entre outros. Na próxima etapa, o hacker ético deverá modificar esse parâmetro para retornar objetos pertencendo a outros usuários, burlando o sistema de autorização.

A melhor maneira de testar esse tipo de vulnerabilidade e ter duas ou mais contas de usuários proprietários de diferentes objetos e funcionalidades. Por exemplo, esses dois usuários tem acesso a diferentes objetos (como informações de compra, mensagens privadas, etc.) e (se relevante) usuários com diferentes privilégios (como por exemplo, um usuário administrador e outro membro) para ver se a maneira com que você executa o IDOR varia de acordo com o nível de privilégios que você tem dentro da rede.

É importante ressaltar que o IDOR também pode ser uma passagem para o (CWE-35) Path Transversal, sendo um tipo exclusivo de vulnerabilidade IDOR mais complexa e mais difícil de ser encontrada. Nesse cenário, o IDOR permite ao invasor explorar e ter acesso direto aos recursos do sistema de arquivos em vez de registros do banco de dados. A vulnerabilidade permite que um invasor acesse arquivos de configuração, descubra credenciais de usuários ou até mesmo obtenha um Reverse Shell totalmente funcional do alvo.


O valor do parâmetro é diretamente usado para fazer a operação no sistema

Exemplo de request

http://www.site.com.br/arquivo?id=1111

Nesse caso, o valor passado pelo id é chamado pela aplicação que o usuário pode alterar livremente o valor do id, requisitando os arquivos de outros ids, talvez até de outros usuários, que retornará o arquivo de outro usuário.