Teste de segurança - injeção
A técnica de injeção consiste em injetar uma consulta SQL ou um comando usando os campos de entrada do aplicativo.
Aplicativo da Web - Injeção
Uma injeção SQL bem-sucedida pode ler, modificar dados confidenciais do banco de dados e também excluir dados de um banco de dados. Ele também permite que o hacker execute operações administrativas no banco de dados, como desligar o DBMS / descartar bancos de dados.
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.
Exemplos
O aplicativo usa dados não confiáveis na construção da seguinte chamada SQL vulnerável -
String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";
Mãos em
Step 1 - Navegue até a área SQL Injection do aplicativo conforme mostrado abaixo.
Step 2- Conforme apresentado no exercício, usamos String SQL Injection para ignorar a autenticação. Use a injeção de SQL para fazer login como o chefe ('Neville') sem usar a senha correta. Verifique se o perfil de Neville pode ser visualizado e se todas as funções estão disponíveis (incluindo Pesquisar, Criar e Excluir).
Step 3 - Vamos injetar um SQL de forma que possamos contornar a senha, enviando o parâmetro como 'a' = 'a' ou 1 = 1
Step 4 - Pós-exploração, podemos fazer o login como Neville, que é o administrador, conforme mostrado abaixo.
Prevenção de injeção de SQL
Existem várias maneiras de prevenir a injeção de SQL. Quando os desenvolvedores escrevem o código, eles devem garantir que manipulam os caracteres especiais de acordo. Existem folhas de dicas / técnicas de prevenção disponíveis no OWASP, que são definitivamente um guia para desenvolvedores.
- Usando consultas parametrizadas
- Escapando todas as entradas fornecidas pelo usuário
- Habilitar privilégio mínimo para o banco de dados para os usuários finais