Uma das maiores preocupações em aplicações Web é o vazamento de informações confidenciais. E uma das práticas mais usadas é o SQL Injection.
A Injeção de SQL, mais conhecida através do termo americano SQL Injection, é um tipo de ameaça de segurança que se aproveita de falhas em sistemas que interagem com bases de dados via SQL. A injeção de SQL ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma consulta (query) através da manipulação das entradas de dados de uma aplicação.
Para estarmos seguros, é extremamente importante em nosso ciclo de testes, abordarmos o PEN TEST (Teste de Penetração).
O teste de penetração é um método que avalia a segurança de um sistema de computador ou de uma rede, simulando um ataque de uma fonte maliciosa. O processo envolve uma análise nas atividades do sistema, que envolvem a busca de alguma vulnerabilidade em potencial que possa ser resultado de uma má configuração do sistema, falhas em hardwares/softwares desconhecidas, deficiência no sistema operacional ou técnicas contramedidas. Todas as análises submetidas pelos testes escolhidos são apresentadas no sistema, junto com uma avaliação do seu impacto e muitas vezes com uma proposta de resolução ou de uma solução técnica.
E uma ferramenta que pode apoiar no PEN TEST e no item SQL Injection é a ZAP (Zed Attack Proxy Project) da OWASP.
Ela é uma ferramenta gratuita que pode ser baixada aqui: https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
Instalação:
Instale a ultima versão do JAVA: https://www.java.com/pt_BR/download/
Depois configure a Maquina Virtual JAVA colocando o seguinte parametro nas variaveis de ambiente no seu Windows em Configurações –> Sistema –> Avançado – Variáveis de Ambiente.
Váriavel: _JAVA_OPTIONS
Valor: -Xmx512M
Depois instale normalmente o ZAP e execute ele.
Teste Simples:
Para conhecer mais a ferramenta, você pode iniciar um teste simples, colocando o endereço da aplicação Web e clicar em Attack!, porém esse teste será superficial, pois ele não entrará dentro de diretórios, relatórios e itens adicionais, que necessitem de logon. Mas esse ataque, se for em um site simples ou sua aplicação tiver problemas de segurança logo no inicio, já será possível colher dados nesse simples teste.
Veja em Alertas o que foi identificado em um teste simples.
Teste Completo:
Para um teste mais profundo de segurança, o ideal é ativar o ZAP e você executar seus testes funcionais enquanto o ZAP captura informações de seu aplicativo Web.
Para isso, inicie o ZAP:
Valide o endereço proxy que ele forneceu, no nosso caso foi localhost na porta 8080.
Vá nas configurações do seu navegar e configure o proxy, para que todas as requisições feitas por você ao navegar em sua aplicação, sejam capturadas pelo ZAP para análise.
Comece a navegar e perceba que automaticamente ele já começa a capturar o tráfego. Concentre sua navegação no site de teste, para que a captura seja produtiva.
Análises e Execuções de Testes Adicionais:
Bom, agora que sabemos como configurar o ZAP, executar testes e acompanhar análises, vamos avaliar o que ele oferece de itens de testes.
Fuzzer (SQL Injection)
Um fuzzer de segurança é uma ferramenta usada por pentesters (profissionais de teste de invasão), analista de segurança e hackers, para testar parâmetros de várias aplicações. Fuzzers testam softwares em busca de buffer overflows, format string vulnerabilities e error handling.
Alguns fuzzers avançados incorporam funcionalidades para testar vulnerabilidades do tipo “directory traversal attacks” ou seja, “ataques de travessia de pastas”, onde o atacante acessa pastas em vários níveis sem privilégios, “command execution vulnerabilities”, “SQL Injection” e “Cross Site Scripting vulnerabilities”. Web Vulnerability scanners tem tipicamente toda a performance e funcionalidade de fuzzer + um proxie para análise de requisições web, podendo ser considerado um fuzzer avançado.
Para realizar o teste, ative o proxy em seu navegador, navegue em seu site de testes, realizado os acessos devidos. Depois vá no ZAP, selecione a URL de Requisição, clique com o botão direito em cima da requisição e selecione FUZZ.
Na categoria, selecione o tipo de Injection, conforme o banco de dados e execute o teste.
Acompanhe os resultados.
Caso seja detectado uma falha, irá ser informado em Alerts.
Espero ter ajudado e até a próxima!
Alan Carlos
Pingback: Terças de ALM e Operações – Análise de Segurança em Aplicações Web | Blog de Qualidade e TI