Referências inseguras de objetos diretos
É provável que ocorra uma referência direta ao objeto quando um desenvolvedor expõe uma referência a um objeto de implementação interno, como um arquivo, diretório ou chave de banco de dados, sem qualquer mecanismo de validação que permita aos invasores manipular essas referências para acessar dados não autorizados.
Vamos entender os Agentes de Ameaça, Vetores de Ataque, Fraqueza de Segurança, Impacto Técnico e Impactos de Negócios dessa falha com a ajuda de um diagrama simples.
Exemplo
O aplicativo usa dados não verificados em uma chamada SQL que está acessando informações da conta.
String sqlquery = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(sqlquery, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );
O invasor modifica o parâmetro de consulta em seu navegador para apontar para Admin.
http://webapp.com/app/accountInfo?acct=admin
Mãos em
Step 1- Faça login no Webgoat e navegue até a seção de falhas de controle de acesso. O objetivo é recuperar o tomcat-users.xml navegando até o caminho onde ele está localizado. Abaixo está o instantâneo do cenário.
Step 2 - O caminho do arquivo é exibido no campo 'o diretório atual é' - C: \ Users \ userName $ \. Extract \ webapps \ WebGoat \ lição_plans \ en e também sabemos que o arquivo tomcat-users.xml é mantido sob C: \ xampp \ tomcat \ conf
Step 3- Precisamos percorrer todo o caminho para fora do diretório atual e navegar em C: \ Drive. Podemos realizar o mesmo interceptando o tráfego usando o Burp Suite.
Step 4 - Se a tentativa for bem-sucedida, ele exibe o tomcat-users.xml com a mensagem "Parabéns. Você concluiu esta lição com sucesso."
Mecanismos Preventivos
Os desenvolvedores podem usar os seguintes recursos / pontos como um guia para evitar referência direta insegura a objetos durante a própria fase de desenvolvimento.
Os desenvolvedores devem usar apenas um usuário ou sessão para referências indiretas de objetos.
Também é recomendável verificar o acesso antes de usar uma referência direta ao objeto de uma fonte não confiável.