Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE GRADUAÇÃO EM ENGENHARIA DE COMPUTAÇÃO Daniel Galvão de Azevedo UM ESTUDO SOBRE FERRAMENTAS DE BUSCA DE VULNERABILIDADES EM APLICAÇÕES WEB Natal/RN Dezembro 2018 Daniel Galvão de Azevedo UM ESTUDO SOBRE FERRAMENTAS DE BUSCA DE VULNERABILIDADES EM APLICAÇÕES WEB Trabalho de conclusão de curso apre- sentado ao curso de Engenharia de Computação da Universidade Federal do Rio Grande do Norte, como parte dos requisitos para obtenção do grau de Bacharel em Engenharia de Com- putação. Orientador: Prof. Dr. Carlos Ma- nuel Dias Viegas Co-Orientador: Prof. Dr. Marco Vieira Natal/RN Dezembro 2018 Azevedo, Daniel Galvão de. Um estudo sobre ferramentas de busca de vulnerabilidades em aplicações web / Daniel Galvão de Azevedo. - 2018. 61 f.: il. Monografia (Graduação) - Universidade Federal do Rio Grande do Norte, Centro de Tecnologia, Curso de Engenharia de Computação. Natal, RN, 2018. Orientador: Prof. Dr. Carlos Manuel Dias Viegas. Coorientador: Prof. Dr. Marco Vieira. 1. Segurança da informação - Monografia. 2. Ferramentas de varredura de vulnerabilidades - Monografia. 3. Aplicações web - Monografia. I. Viegas, Carlos Manuel Dias. II. Vieira, Marco. III. Título. RN/UF/BCZM CDU 004.056 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas - SISBI Catalogação de Publicação na Fonte. UFRN - Biblioteca Central Zila Mamede Elaborado por FERNANDA DE MEDEIROS FERREIRA AQUINO - CRB-15/301 UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DANIEL GALVAO DE AZEVEDO Trabalho de conclusão de curso apresentado ao Curso de Engenharia de Computação da Universidade Federal do Rio Grande do Norte, como parte dos requisitos para obtenção do grau de Bacharel em Engenharia de Computação. Prof. Dr. Carlos Manuel Dias Viegas DCA/UFRN Prof. Dr. Marco Vieira DEI/FCT/UC Prof. Me. Francisco Sales de Lima Filho DIATINF/CNAT/IFRN 10 de Dezembro de 2018 Agradecimentos Agradeço ao Departamento de Engenharia de Computação e Automação (DCA), ao Instituto Metrópole Digital (IMD) e a Universidade Federal do Rio Grande do Norte (UFRN) pela infraestrutura oferecida e a ótima formação que me foi proporcionada. Agradeço aos meus pais por todo o amor, educação, apoio e ensinamentos passados até hoje. Sou muito grato por tudo. Agradeço ao Prof. Carlos Manuel Dias Viegas, por toda a paciência, ajuda e conhecimentos passados durante todo o curso e durante o processo de desenvolvimento deste documento. Agradeço Prof. Marco Vieira também pela ajuda e paciência durante o processo de desenvolvimento deste trabalho. Agradeço aos professores do DCA que me proporcionaram uma excelente formação no curso de engenharia de computação. E, finalmente, a todos que direta ou indiretamente me ajudaram nessa etapa da minha vida, muito obrigado. Resumo Com o advento da Internet, as pessoas e empresas têm se tornado dependentes das apli- cações web. Diante disso, se faz necessário o desenvolvimento seguro dessas aplicações, uma vez que o impacto causado por uma falha de segurança se torna cada vez maior, em consequência desta dependência. Atrelado a isso, o número de hackers também vem au- mentando rapidamente. Assim sendo, para garantir esta segurança, são utilizados métodos como boas práticas de desenvolvimento e testes de invasão (pentest). Nestes dois casos, as ferramentas de busca de vulnerabilidade web são bastante empregadas, principalmente para a realização de testes do tipo black-box. No entanto, até mesmo estas ferramentas precisam ser bem selecionadas, para se atingir o objetivo esperado. Este trabalho tem como objetivo avaliar algumas das principais ferramentas de busca de vulnerabilidade web de código aberto, tais como OWASP ZAP, Paros, SkipFish e Vega. Estas ferramentas foram executadas sobre duas aplicações web intencionalmente vulneráveis e os relatórios produzidos foram comparados com a lista de vulnerabilidades de cada aplicação. Além disso, é apresentada uma pequena explicação das ferramentas e das principais vulnerabi- lidades abordadas nas práticas, e em seguida são mostrados os cenários utilizados e os dados obtidos. Ao final, são mostrados pontos positivos e negativos de cada ferramenta, as dificuldades encontradas e ideias para se obter melhores resultados com trabalhos futuros. Palavras-chave: segurança da informação, ferramentas de varredura de vulnerabilidades, aplicações web. Abstract With the advent of the Internet, people and businesses have become dependent on web applications. In view of this, it is necessary to safely develop these applications, since the impact caused by a security flaw continues increasing, as a consequence of this dependence. Linked to this, the number of hackers is also increasing rapidly. Thus, to ensure this security, methods such as good development practices and penetration testing (pestest) are used. In these two cases, web vulnerability scanner tools are widely used, mainly for black-box type tests. However, even these tools need to be well-selected in order to achieve the expected goal. This work aims to evaluate some of the main open-source Web Vulnerability Scanners, such as ZAP, Paros, SkipFish and Vega. These scanners were run on two intentionally vulnerable web applications and the produced Reports were compared with the list of vulnerabilities of each application. Besides, a brief explanation of the tools and main vulnerabilities addressed in the practices are given, and the scenarios used and the data obtained are shown below. Finally, positive and negative points of each tool are shown, difficulties encountered and ideas for better results with future works. Keywords: information security, vulnerability scanning tool, web applications. Lista de ilustrações Figura 1 – Número de Incidentes nos anos de 1999 a 2017 . . . . . . . . . . . . . . 22 Figura 2 – Porcentagem dos tipos de incidentes ocorridos no ano de 2017 . . . . . 23 Figura 3 – Arquitetura de uma aplicação web. . . . . . . . . . . . . . . . . . . . . 28 Figura 4 – Exemplo de exploração da vulnerabilidade de Injeção de SQL. . . . . . 31 Figura 5 – Exemplo de exploração da vulnerabilidade Reflected Cross-Site Scripting. 33 Figura 6 – Código da página web após a exploração da vulnerabilidade de Reflected Cross-Site Scripting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Figura 7 – Exemplo de exploração da vulnerabilidade Stored Cross-Site Scripting. 34 Figura 8 – Código da página web após a exploração da vulnerabilidade de Stored Cross-Site Scripting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Figura 9 – Exemplo de aplicação web que utiliza commandos do sistema operacional. 36 Figura 10 – Exemplo de exploração da vulnerabilidade de Injeção de Comandos no Sistema Operacional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Figura 11 – Exemplo de exploração da vulnerabilidade Remote File Inclusion. . . . 37 Figura 12 – Exemplo de exploração da vulnerabilidade Local File Inclusion. . . . . 38 Figura 13 – Exemplo de exploração da vulnerabilidade Directory Browsing. . . . . . 39 Figura 14 – Exemplo de exploração da vulnerabilidade Click-Jacking. . . . . . . . . 40 Figura 15 – Cenário utilizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Figura 16 – Configuração do proxy no navegador FireFox. . . . . . . . . . . . . . . 45 Figura 17 – Configuração da ferramenta Paros. . . . . . . . . . . . . . . . . . . . . 45 Figura 18 – Configuração da ferramenta ZAP. . . . . . . . . . . . . . . . . . . . . . 46 Figura 19 – Configuração da ferramenta Vega. . . . . . . . . . . . . . . . . . . . . . 47 Figura 20 – Exemplo que vulnerabilidade reportada pela ferramenta ZAP . . . . . 52 Figura 21 – Exemplo que vulnerabilidade reportada pela ferramenta Paros . . . . . 52 Figura 22 – Diagrama de Venn dos verdadeiros positivos de cada ferramenta. . . . . 53 Lista de tabelas Tabela 1 – Configurações de cabeçãlho de Content-Security-Policy(CSP) e X- Frame-Options (XFO). . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Tabela 2 – Número de pontos vulneráveis na aplicação Mutillidae. . . . . . . . . . 47 Tabela 3 – Número de Tipos de Vulnerabilidades detectadas na aplicação Mutillidae. 48 Tabela 4 – Número de pontos vulneráveis na aplicação WackoPicko. . . . . . . . . 48 Tabela 5 – Número de Tipos de Vulnerabilidades detectadas na aplicação WackoPicko. 48 Tabela 6 – Tipos de vulnerabilidades nas aplicações Mutillidae e WackoPicko. . . 50 Tabela 7 – Número de Verdadeiros Positivos (VP), Falso Positivos (FP) e Falso Negativos (FN) de cada Vulnerabilidade na aplicação Mutillidae. . . . 51 Tabela 8 – Número de Verdadeiros Positivos (VP), Falso Positivos (FP) e Falso Negativos (FN) de cada vulnerabilidade na aplicação WackoPicko. . . . 51 Tabela 9 – O valor de Recall e de Precisão de cada WVS para cada Vulnerabilidade 53 Lista de quadros 2.1 Exemplo de consulta SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.2 Exemplo de consulta SQL modificada . . . . . . . . . . . . . . . . . . . . . 32 2.3 Exemplo de requisição forjada . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.4 Exemplo de código HTML com Token . . . . . . . . . . . . . . . . . . . . 39 2.5 Exemplo de configuração do Apache . . . . . . . . . . . . . . . . . . . . . . 39 2.6 Exemplo de prova de conceito sobre a vulnerabilidade de Click-Jacking . . 40 3.1 Comandos para execução da ferramenta SkipFish . . . . . . . . . . . . . . 44 Lista de abreviaturas e siglas ARPA Advanced Research and Projects Agency CERT Computer Emergency Response Team CSIRT Computer Security Incident Response Team CSRF Cross-Site Request Forgery CSP Content-Security-Policy CSS Cascading Style Sheets CJ Clickjacking DARPA Defense Advanced Research Projects Agency DirB Directory Browsing FI File Inclusion FN Falso Negativo FP Falso Positivo HTML HyperText Markup Language HTTP HyperText Transfer Protocol LFI Local File Inclusion OSCi Operacional System Command Injection OWASP Open Web Application Security Project PHP Personal Home Page RFI Remote File Inclusion RXSS Reflected Cross-Site Scripting SO Sistema Operacional SQL Structured Query Language SQLi SQL Injection SXSS Stored Cross-site Scripting URI Uniform Resource Identifier URL Uniform Resource Locator VM Virtual Machine VP Verdadeiro Positivo WVS Web Vulnerability Scanners XFO X-Frame-Options XSS Cross-Site Scripting Sumário 1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.1 Problemática e Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.2 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.3 Estrutura do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2 REFERÊNCIAL TEÓRICO . . . . . . . . . . . . . . . . . . . . . . . . 27 2.1 Aplicação Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2 Ferramentas de Varredura de Vulnerabilidades Web . . . . . . . . . . . 28 2.2.1 OWASP ZAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2.2 SkipFish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2.3 Paros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2.4 Vega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3 Aplicaçoes Web Vulneráveis . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.3.1 OWASP Broken Web Application Project . . . . . . . . . . . . . . . . . 30 2.4 Outras Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.4.1 Burp Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.5 Vulnerabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.5.1 Injeção de SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.5.2 Cross-Site Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.5.2.1 Reflected Cross-Site Scripting . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.5.2.2 Stored Cross-Site Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5.3 Injeção de Comandos no Sistema Operacional . . . . . . . . . . . . . . . 35 2.5.4 File Inclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.5.4.1 Remote File Inclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.5.4.2 Local File Inclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.5.5 Cross Site Request Forgery . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.5.6 Directory Browsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.5.7 Click-Jacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3 ANÁLISE DAS FERRAMENTAS E RESULTADOS ENCONTRADOS 43 3.1 Cenários Avaliados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2 Utilização das Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2.1 Skipfish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2.2 Paros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.2.3 OWASP ZAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.2.4 Vega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.3.1 Métricas Avaliadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.3.2 Análises Principais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.3.3 Discuções Adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 21 1 Introdução A Internet como a conhecemos hoje teve início entre os anos de 1967 e 1969 com a criação da ARPAnet, um trabalho criado pela ARPA (Advanced Research Projects) e liderado por J. C. R. Licklider e Lawrence Roberts. A ARPAnet iniciou como uma pequena rede de computadores conectados, cujo objetivo era conectar pesquisadores para que eles pudessem compartilhar descobertas de uma forma menos custosa. Sendo assim, esta rede consistia, inicialmente, de 4 computadores localizados em diferentes universidades nos Estados Unidos da América. Em 1972, outras redes como a ARPAnet haviam sido criadas e a própria ARPAnet já estava com 15 computadores conectados(ou nós, como também podem ser chamados). No ano de 1974, outro trabalho foi criado com o objetivo de criar uma rede de redes. Desta vez liderado por Vinton Cerf e Robert Kahn e patrocinado pela DARPA (Defense Advanced Research Projects Agency). Para descrever este trabalho, foi então criado o termo "internetting" [Ross 2010,Forouzan 2008]. Em seguida, como é dito por Kurose e Ross [Ross 2010, p. 47]: “Ao final da década de 1970, aproximadamente 200 máquinas estavam conectadas à ARPAnet. Ao final da década de 1980, o número de máquinas ligadas à Internet pública, uma confederação de redes muito parecida com a Internet de hoje, alcançaria cem mil. A década de 1980 seria uma época de formidável crescimento [Ross 2010, p. 47].” Junto a isso, cresceu também o número de hackers na Internet. Os hachers já eram conhecidos por atuarem nas redes de telefone e por adulterarem telégrafos, antes de irem para a Internet. Em 1988, Robert T. Morris criou um vírus que infectou cerca de 6.000 computadores, alguns localizados também em bases militares, tornando-os inutilizáveis. Este fato levou a DARPA a financiar a criação do CERT (Computer Emergency Response Team), um time de resposta a incidentes computacionais, localizado em Pittsburgh, EUA [Davis 2015]. Após a criação do CERT nos Estados Unidos da América, muitas outras equipes de resposta a incidentes computacionais foram criados ao redor do mundo, e o termo CSIRT (Computer Security Incident Response Team) também passoua ser usado para denominar essas equipes. Entre estes times criados está o CERT.br que é o grupo de resposta a incidentes de segurança para a Internet no Brasil e que tem, entre outros papéis, o de servir como ponto central para notificações de incidentes de segurança no Brasil [CERT.br 2018]. Incidente de segurança, segundo o próprio CERT.br, é classificado como [CERT.br 2018] “[...] qualquer evento adverso, confirmado ou sob suspeita, relacionado à segurança 22 Capítulo 1. Introdução de sistemas de computação ou de redes de computadores.”. Além desta, outra definição, mais completa, de incidente de segurança é a da norma brasileira ABNT NBR ISO/IEC 27.002 [ABNT 2005, p. 2], que diz que: “um incidente de segurança da informação é indicado por um simples ou por uma série de eventos de segurança da informação indesejados ou inesperados, que tenham uma grande probabilidade de comprometer as operações do negócio e ameaçar a segurança da informação [ABNT 2005, p. 2]” Sabendo-se disso, pode-se analisar a Figura 1 que mostra que, de acordo com o CERT.br, o número de incidentes de segurança vem crescendo cada vez mais, tendo seu pico no ano 2014. Figura 1 – Número de Incidentes nos anos de 1999 a 2017 Fonte: https://www.cert.br/stats/incidentes Dentre estes incidentes reportados nos anos de 2015 a 2017, uma porcentagem entre 7 a 8 porcento foram classificados como incidentes de web, os quais são descritos pelo próprio CERT.br como [CERT.br 2018] "um caso particular de ataque visando especificamente o comprometimento de servidores Web ou desfigurações de páginas na Internet.". Um exemplo deste percentual é mostrado na Figura 2, que exibe a porcentagem dos tipos de incidentes ocorridos no ano de 2017. 1.1. Problemática e Objetivos 23 Figura 2 – Porcentagem dos tipos de incidentes ocorridos no ano de 2017 Fonte: https://www.cert.br/stats/incidentes/2017-jan-dec/tipos-ataque.html Apesar de ser uma pequena porcentagem, ainda é considerado um dado preocupante tendo em vista a seriedade deste tipo de incidente. Muitas pesquisas realizadas nesta área, como [Fonseca, Vieira e Madeira 2014,Makino e Klyuev 2015,Kagorora et al. 2015,Fonseca, Vieira e Madeira 2007] discutem a crescente dependência de pessoas e organizações sobre aplicações web. Quase tudo hoje em dia é comprado, negociado ou armazenado na Internet. No entanto, este aumento no uso de aplicações web as torna mais expostas, além de aumentarem a gravidade dos danos causados por uma falha de segurança, uma vez que dados sensíveis estão sendo utilizados. Dessa forma, para garantir a segurança de aplicações web, é necessário o uso de boas práticas em seu desenvolvimento. Entre estas boas práticas estão a validação de entrada e saída do sistema, controle do processamento interno e a aplicação de testes para a visualização de vulnerabilidades [ABNT 2005]. Na aplicação de tais testes, principalmente testes do tipo black-box (quando não se tem conhecimento do código fonte da aplicação), são utilizadas as ferramentas de busca de vulnerabilidades web (Web Vulnerability Scanners - WVSs), que são ferramentas automatizadas que expõem as vulnerabilidades de uma determinada aplicação web para que possam ser tratadas. Estas ferramentas são utilizadas tanto por desenvolvedores web, como por profissionais da área de segurança da informação para a realização de testes de invasão (pentest), que é uma bateria de testes metodológicos, executados em um sistema ou programa, a fim de mapear e expor suas vulnerabilidades [Moreno 2015]. 1.1 Problemática e Objetivos Além do que foi apresentado, outros problemas quanto ao uso não seguro de aplicações web podem ser citados, bem como os desafios para torná-las seguras. Como foi discutido em [Fonseca, Vieira e Madeira 2014] e [Stalling 2015], entre as dificuldades de se 24 Capítulo 1. Introdução manter a segurança das aplicações web, estão: • A alta complexidade dos softwares por trás das aplicações web, causado também pela vasta variedade de tecnologias utilizadas; • O servidor web muitas vezes é a porta de entrada para dados sensíveis de uma empresa, que muitas vezes, não tem nem mesmo relação a aplicação web; • A presença de usuários comuns, desenvolvedores e administradores sem o conheci- mento necessário de segurança da informação. Aliado a isso, também existe o fato de que os WVSs, por serem ferramentas automa- tizadas, estão propensos a reportar incidentes como falso-positivos ou falso-negativos, o que faz com que seja necessário uma análise da eficiência deste tipo de ferramenta [Mohammed 2016]. Segundo estes pontos, este trabalho tem o objetivo de: • Apresentar uma análise de ferramentas de WVS, trazendo seus pontos fracos e fortes; • Simplificar a escolha destas ferramentas por parte de profissionais da área; • Prover melhorias para as ferramentas de análise de vulnerabilidades avaliadas. 1.2 Metodologia Este trabalho teve como base a seleção de ferramentas de WVS a serem analisadas, e em seguida foi feito a escolha das aplicações web vulneráveis que seriam utilizadas nos testes. Com isso, foi criado um ambiente virtual para a realização destes experimentos, simulando-se uma aplicação web vulnerável e um usuário externo. Neste cenário, as ferramentas de WVS foram executadas sobre as aplicações web vulneráveis para a coleta dos relatórios de execução. Com estes relatórios, as análises foram feitas, comparando-os entre si e com as listas de vulnerabilidades das aplicações. Assim, foram obtidas as taxas de falso-positivos, falso-negativos e verdadeiro-positivos de cada ferramenta e para cada tipo de vulnerabilidade. Além disso, também foram obtidas e analisadas as taxas de Recall e Precisão de cada ferramenta como foi feito no trabalho [Mohammed 2016], uma vez que mostram mais claramente o desempenho das ferramentas. 1.3. Estrutura do Trabalho 25 1.3 Estrutura do Trabalho Este trabalho está dividido em 3 capítulos, além desta introdução. O Capítulo 2 apresenta as ferramentas utilizadas e as vulnerabilidades abordadas no trabalho, assim como outros conceitos importantes para uma melhor compreensão do texto. No Capítulo 3 os experimentos são detalhados e resultados são discutidos. Por fim, o Capítulo 4 é dedicado às conclusões e considerações finais. 27 2 Referêncial Teórico Neste capítulo serão apresentados alguns conceitos considerados importantes para a realização dos experimentos. Serão apresentadas também as ferramentas utilizadas para realização das buscas de vulnerabilidades, assim como as utilizadas para simular uma aplicação web. 2.1 Aplicação Web Para definir uma aplicação web será utilizada a definição de Josh Pauli em seu livro "Introdução ao Web Hacking" [Pauli 2015, p. 26]: "[...] O termo aplicação web será utilizado ao longo deste livro para referir- se a qualquer software baseado em web que realize ações (funcionalidades) de acordo com uma entrada de usuário e que normalmente interaja com sistemas de backend. Quando um usuário interage com um web site para realizar alguma ação, por exemplo, fazer login, fazer compras ou acessar o banco, temos uma aplicação web. [Pauli 2015, p. 26]" A Figura 3 mostra como seria a arquitetura de uma aplicação web. Nesta arquitetura, as tecnologias utilizadas são as seguintes: • Na exibição das páginas nos navegadores são utilizados o HTML5 (Hypertext Markup Language revision 5), JavaScript e PHP (Hypertext Preprocessor); • Para o processamento dos dados no Servidor de Aplicação Web é utilizado também o PHP; • Para a comunicação com o banco de dados, será utilizado o SQL (Structured Query Language), uma vez que é usado apenas por bancos de dados relacionais. 28 Capítulo 2. Referêncial Teórico Figura 3 – Arquitetura de uma aplicação web. Fonte: Próprio autor, baseado em imagem do livro "Sistemas de Bancos de Dados" [Silberschartz Henry F. Korth 2012] 2.2 Ferramentas de Varredura de Vulnerabilidades Web Como é dito em [Fonseca, Vieira e Madeira 2007], existem dois principais métodos de teste de aplicações web para varredurade vulnerabilidades. O primeiro é chamado de white-box onde o software de varredura tem conhecimento do código fonte da aplicação web, e assim, faz a análise deste código em busca de vulnerabilidades. O segundo método, que é o usado pelas ferramentas testadas neste trabalho, é chamado de black-box. Neste método, o software de varredura não tem conhecimento do código fonte da aplicação, e assim utiliza a técnica de fuzzing sobre as requisições HTTP (HiperText Transfer Protocol). Desta forma, são realizados vários testes na aplicação web, simulando-se a atividade de um usuário. Como é mostrado também em [Fonseca, Vieira e Madeira 2007], o funcionamento deste tipo de software de varredura (que utiliza o método black-box ) tem, normalmente, três estágios, sendo o primeiro deles o de configuração. Neste estágio, o usuário informa à ferramenta a URL da aplicação web que será testada, assim como outros parâmetros. O segundo estágio é o de crawling. Esta fase é responsável por montar um mapa da estrutura interna da aplicação web, a partir da URL e dos parâmetros disponibilizados na fase de configuração. Para fazer este mapa, a ferramenta examina o código da página da URL disponibilizada, para encontrar novas URLs. Ao encontrar, a ferramenta examina o código da página desta outra URL, novamente em busca de novas URLs. Então assim é feito até que não sejam encontradas mais URLs. Após este processo, é prosseguido para o próximo estágio, que é o de scanning. No estágio de scanning a ferramenta realiza vários testes automáticos (fuzzing) sobre 2.2. Ferramentas de Varredura de Vulnerabilidades Web 29 as páginas que foram coletadas na fase de crawling. As requisições feitas ao servidor de aplicação web, assim como suas respostas, são também analisadas levando-se em conta os parâmetros passados na fase de configuração, como as políticas de vulnerabilidade. 2.2.1 OWASP ZAP ZAP é um proxy web feito para identificar vulnerabilidades em aplicações. O ZAP é uma aplicação de código aberto, desenvolvido pela OWASP (Open Web Application Security Project, ou Projeto Aberto de Segurança em Aplicações Web), uma organização sem fins lucrativos e imparcial, focada na melhoria da segurança de aplicações web [OWASP 2018]. Para a configuração do scanner desta ferramenta, é possível selecionar o modo de ação. As opções disponibilizadas são as seguintes [Bhamare 2016]: • Modo Safe: Neste modo, o scanner não realizará nenhum tipo de ação que seja potencialmente perigosa. • Modo Protected : Neste modo, o scanner é capaz de realizar ações potencialmente perigosas apenas em URLs especificadas no escopo da varredura. • Modo Standard : Nesta modo, o usuário permite ao scanner que seja feita qualquer ação que seja relevante. • Modo ATTACK : Neste modo, todas as URLs descobertas na fase de crawling são testadas de forma ativa. 2.2.2 SkipFish O SkipFish é um scanner de vulnerabilidades web operado apenas por meio de linhas de comando. É um programa escrito em linguagem C, de código aberto, criado e mantido por Michal Zalewski, Niels Heinen, Sebastian Roschke [Github 2018]. 2.2.3 Paros Paros, assim como o OWASP ZAP, é um proxy desenvolvido para acessar vul- nerabilidades em aplicações web. É um software baseado na linguagem Java [Security 2014]. 2.2.4 Vega Vega é um scanner e uma plataforma de testes de segurança de aplicações web. É um programa gratuito e de código aberto que, diferentemente das outras ferramentas 30 Capítulo 2. Referêncial Teórico de detecção de vulnerabilidades citadas, não esta pré-instalada no sistema do Kali Linux. É uma ferramenta escrita em linguagem Java e desenvolvida pela Subgraph [Subgraph 2013, Subgraph 2014]. Para a instalação deste programa no Kali Linux, foi utilizado o seguinte comando no terminal: $ apt−get i n s t a l l vega 2.3 Aplicaçoes Web Vulneráveis 2.3.1 OWASP Broken Web Application Project É uma coleção de aplicações web vulneravéis que é distribuído em uma máquina virtual feita para pessoas com o interesse em aprender sobre segurança em aplicações web, testar técnicas de avaliação manual, testar ferramentas automáticas, testar ferramentas de análise de código fonte, observar ataques em plataforma web e testar firewalls de aplicação web. O líder de projeto é Chuck Willis e é patrocinado em parte pela Mandiant. A versão 1.2, utilizada neste trabalho, foi lançada no dia 3 de Agosto de 2015 [OWASP 2015]. Esta máquina virtual possui cerca de 20 aplicações web vulneráveis, nas quais nós utilizamos 2 delas: Mutillidae 2 e WackoPicko. Estas aplicações foram escolhidas pelo fato de suas vulnerabilidades estarem mais facilmente explicitadas, tanto na Internet quanto na própria aplicação. 2.4 Outras Ferramentas 2.4.1 Burp Suite O Burp Suite é uma ferramenta feita para realização de testes em aplicações web, de código proprietário, desenvolvido pela PostWigger. Também é uma ferramenta pré-instalada no Kali Linux, porém, em sua versão comunity o que nos da direito a usar apenas as ferramentas básidas do software. 2.5 Vulnerabilidades Vulnerabilidade se define como uma condição, ou fragilidade, que pode ser explorada por um atacante, ou ameaça, que quando explorado, pode resultar em uma violação de segurança [ABNT 2005,CERT 2017]. Como são mostrados nos tópicos seguintes, existem vários motivos para o surgimento de vulnerabilidades, como a falha de configuração de um programa, ou de implementação de um software. 2.5. Vulnerabilidades 31 2.5.1 Injeção de SQL A exploração deste tipo de vulnerabilidade se caracteriza como a alteração de uma consulta SQL, através de uma entrada de um dado malicioso. Esta vulnerabilidade está presente muitas vezes em páginas de autenticação e de busca de algum produto em lojas virtuais. Como exemplo, pode ser usado o caso mostrado na Figura 4a. Nesta figura, como pode ser visto, em vez de o usuário digitar apenas o nome do usuário em que deseja procurar informações, digita “daniel’ or ‘1’=‘1’ -- ” o que faz com que a aplicação retorne os dados de todos os usuários do banco de dados, como mostrado na Figura 4b. Figura 4 – Exemplo de exploração da vulnerabilidade de Injeção de SQL. (a) (b) Isso acontece, pois no momento em que o usuário clica no botão “View Account Details”, o código da página web, presente nos “Navegadores Web” como mostrado na Figura 3, envia o nome de usuário e a senha digitados para o servidor de aplicação web, e lá o código PHP (no caso deste trabalho) cria uma consulta SQL no seguinte formato, para se comunicar com o banco de dados: Quadro 2.1 – Exemplo de consulta SQL SELECT ∗ FROM accounts WHERE username=’Nome ’ AND password=’ Senha ’ Neste caso, o “Nome” e a “Senha” são o nome e a senha digitados pelo usuário. Se estes dois dados não forem tratados antes de serem inseridos na consulta SQL, a consulta será enviada ao banco de dados com o nome e a senha exatamente da mesma forma que foram digitados, mesmo que o usuário tenha digitado caracteres inválidos. Isso possibilita 32 Capítulo 2. Referêncial Teórico que algum usuário malicioso digite informações que alterem a consulta SQL que irá ao banco de dados. Estas modificações podem ir desde pequenas alterações, como mostrado na Figura 4, até a criação de novas consultas SQL que podem ler, modificar ou até apagar dados do banco de dados. No caso do nome de usuário “daniel’ or ‘1’=‘1’ -- ” mostrado como exemplo, a consulta SQL executada seria a seguinte: Quadro 2.2 – Exemplo de consulta SQL modificada SELECT ∗ FROM accounts WHERE username=’ dan i e l ’ or ’ 1 ’= ’ 1 ’ −− ’AND password=’Senha ’ Os termos “ or ‘1’=‘1’ ” adicionam uma nova condição para a seleção do usuário no banco de dados e o termo “ -- ” faz com que todo o resta da consulta seja ignorada. Uma vez que “ ‘1’=‘1’ ” sempre será verdade, todos os usuários serão selecionados. 2.5.2 Cross-Site Scripting Assim como a vulnerabilidade de injeção de SQL, esta vulnerabilidade também é consequência da falta de validação da entrada de usuário antes de algum processamento por parte da aplicação web. Estetipo de vulnerabilidade, se explorado, pode ser utilizado como forma de roubar dados pessoais da vítima ou executar alguma ação em websites. No caso do tipo de vulnerabilidade de Cross-Site Scripting (Scripting entre sites), a aplicação web permite que o usuário execute scripts na página exibida no navegador web, como se esse script pertencesse à própria página. 2.5.2.1 Reflected Cross-Site Scripting Neste tipo de cross-site scripting, o script malicioso é executado apenas uma vez. Ele está, muitas vezes, presente em páginas de pesquisa onde o termo pesquisado é exibido no resultado da pesquisa. A Figura 5 mostra um exemplo deste comportamento. Na página web das imagens mostradas, a aplicação web pede por algum texto na qual será impresso na página e quantas vezes isso deve ser feito. 2.5. Vulnerabilidades 33 Figura 5 – Exemplo de exploração da vulnerabilidade Reflected Cross-Site Scripting. (a) (b) (c) A informação que é digitada para ser impressa na página, como mostra a Figura 5a, é “XSS : <script>alert (“XSS”);</script>”. A primeira parte “XSS : ” é um texto comum. No entanto, a segunda parte “<script>alert(“XSS”);</script>” é um texto que, ao ser lido pelo navegador web, será interpretado como um script, e por isso, irá executar a ação que esta indicado entre os termos “<script>” e “</script>”. Neste caso, o script emitirá apenas um alerta na tela do usuário, com o texto “XSS”, como é mostrado na Figura 5b. Na Figura 5c é mostrado o texto “XSS : ” impresso na tela. O código da página após a impressão do texto na tela é mostrado na Figura 6. Figura 6 – Código da página web após a exploração da vulnerabilidade de Reflected Cross-Site Scripting. 2.5.2.2 Stored Cross-Site Scripting No caso do Stored Cross-Site Scripting, o código malicioso é armazenado na aplicação web. Este tipo de vulnerabilidade está muitas vezes presente em páginas de discussões ou de comentários sobre algum produto. Isso acontece pois, no momento em que 34 Capítulo 2. Referêncial Teórico um comentário é submetido a esse tipo de página, ele será armazenado no banco de dados e toda vez que aquela página for visitada, o mesmo comentário será exibido novamente. Caso este comentário esteja com um código malicioso, o navegador web da vítima, ou das vítimas que abrirem este site, irão executar o código malicioso. Um exemplo de exploração desta vulnerabilidade é mostrado na Figura 7. Na Figura 7a, é mostrado a página onde é adicionada o comentário com o código malicioso, no mesmo formato do texto usado na Figura 5a discutida na subseção anterior, sobre Reflected Cross-Site Scripting. Na Figura 7b é mostrada a página onde são visualizados os comentários colocados por todos os usuários da aplicação web. Como pode ser percebido, o alerta também foi executado. A Figura 8 mostra o código fonte da página web após a adição do comentário. Figura 7 – Exemplo de exploração da vulnerabilidade Stored Cross-Site Scripting. (a) (b) 2.5. Vulnerabilidades 35 Figura 8 – Código da página web após a exploração da vulnerabilidade de Stored Cross-Site Scripting. 2.5.3 Injeção de Comandos no Sistema Operacional Esta vulnerabilidade é bastante semelhante à vulnerabilidade de injeção de SQL, pois também é causada por falta de validação da entrada de dados do usuário e tem sua atividade maliciosa manifestada no servidor de aplicação web, no entanto, sem precisar interagir com o banco de dados. Ela acontece em casos em que esta entrada do usuário é utilizada diretamente na execução de comandos do sistema operacional no lado do servidor. Na Figura 9 é mostrada uma página da aplicação Mutillidae que faz o uso de comandos do sistema operacional no processamento do lado do servidor. Nesta página, é pedido apenas que seja digitado algum site para que seja dito qual o endereço IP do mesmo. Neste caso, como é mostrado na Figura 9a, é digitado o site “google.com”, e a resposta da aplicação web a esta entrada é mostrado na Figura 9b. 36 Capítulo 2. Referêncial Teórico Figura 9 – Exemplo de aplicação web que utiliza commandos do sistema operacional. (a) (b) Sem a sanitização desta entrada do usuário, é possível que seja digitado um texto como é mostrado na Figura 10a. A entrada digitada neste caso foi a seguinte: “google.com & ls”. Neste texto, o caractere “&” fará com que o servidor interprete o próximo pedaço de texto como outro comando. O termo “ls” é um comando de sistemas operacionais baseados em Unix que lista os arquivos presentes em um diretório. Sendo assim, o resultado que será retornado do servidor de aplicação web será a lista de arquivos do diretório em que está o código fonte da aplicação web, como é mostrado na Figura 10b. Figura 10 – Exemplo de exploração da vulnerabilidade de Injeção de Comandos no Sistema Operacional. (a) (b) 2.5.4 File Inclusion Esta vulnerabilidade permite que o usuário execute scripts ou que carregue o conteúdo de arquivos que estejam fora do conjunto de arquivos usados pela aplicação web. Assim como as vulnerabilidades citadas acima, esta também é causada pela falta de sanitização da entrada de dados do usuário. Desta vez, a entrada de usuário que pode ser 2.5. Vulnerabilidades 37 utilizada de forma maliciosa é a que indica qual a página será carregada pelo navegador web. 2.5.4.1 Remote File Inclusion Remote File Inclusion (Inclusão Remota de Arquivo) é o tipo de vulnerabilidade de File inclusion que permite a execução remota de arquivos. Uma prova de conceito desta vulnerabilidade pode ser vista na Figura 11 onde a página de pesquisa do Google pôde ser carregada como se fosse mais uma página da aplicação. Para isso, foi necessário apenas a alteração do parâmetro “page” na URL da página, como o seguinte exemplo: http://10.0.2.9/mutillidae/index.php?page=https://www.google.com/ No exemplo acima, a variável “page” deveria receber o nome das páginas da aplicação web como, por exemplo, “home.php” e “login.php”. No entanto, uma vez que o valor desta variável não é sanitizado, foi possível especificar a URL de uma página na Internet, o que fez com que o servidor da aplicação buscasse esta página na Internet. Figura 11 – Exemplo de exploração da vulnerabilidade Remote File Inclusion. 2.5.4.2 Local File Inclusion Local File Inclusion (Inclusão de Arquivo Local) é o tipo de File inclusion que permite apenas a execução de arquivos que estejam dentro do servidor de aplicação web. A prova de conceito desta vulnerabilidade pode ser vista na Figura 12. Neste caso, assim como no exemplo da Figura 11 sobre Remote File Inclusion, o parâmetro usado para fazer esta inclusão foi o “page”, presente na URL da página. No caso da Figura 12, a URL utilizada foi a seguinte: http://10.0.2.9/mutillidae/index.php?page=/../../../../../../../../../../ ../../etc/passwd Nesta URL os caracteres “../” são uma indicação para o diretório pai, na árvore de diretórios, do diretório atual. Sendo assim, o texto especificado na variável “page” mostra 38 Capítulo 2. Referêncial Teórico o caminho para o arquivo local “passwd” no servidor de aplicação web. Este arquivo lista todos os usuários do sistema, além de algumas de suas informações. A Figura 12 mostra esta listagem. Figura 12 – Exemplo de exploração da vulnerabilidade Local File Inclusion. 2.5.5 Cross Site Request Forgery Esta vulnerabilidade possibilita que um usuário forge uma requisição, que será acessada através de um link malicioso. No entanto, a ação gerada por este link é uma ação permitida pela aplicação web, ou que faz parte do seu fluxo normal de funcionamento. Cross-Site Request Forgery é, muitas vezes, confundida com a vulnerabilidade de Reflected Cross-Site Scripting, pelo fato de que, para se explorar estas vulnerabilidades é necessário a criação de uma URL adequada [Pauli 2015]. Esse tipo de vulnerabilidade foi demostrado por Georgia Weidman [Weidman 2014], onde um usuário está navegando na Internet em duas abas diferentes do navegador, e uma delas, ele está autenticado em sua conta do banco. Na outra aba, o mesmo usuário visita uma páginaque possui a seguinte tag html: Quadro 2.3 – Exemplo de requisição forjada <img src="http :// bancoX . com/ Tran s f e r i r ? va l o r=100&conta=000"> No momento em que o navegador processar esta tag, a solicitação da URL será executada. Naturalmente, o site do banco irá verificar se o usuário esta autenticado. Porém, uma vez que o usuário já esteja autenticado no mesmo banco na outra aba do navegador, o navegador possui os dados de autenticação do mesmo. Dessa forma, a ação maliciosa será realizada sem que o usuário perceba. Existem algumas técnicas para se proteger desta vulnerabilidade, e uma das mais conhecidas é a utilização de Tokens. Estes Tokens são valores únicos para cada seção de usuário e aleatoriamente criados, colocados escondidos dentro da página web. Estes mesmos valores são utilizados para a validação das requisições feitas ao servidor. Uma vez que somente o servidor de aplicação web sabe qual foi o valor de Token gerado, não há 2.5. Vulnerabilidades 39 como forjar uma requisição com o mesmo valor. Um exemplo de código HTML com este Token, feito pela OWASP [OWASP 2018], é mostrado a seguir: Quadro 2.4 – Exemplo de código HTML com Token <form action="/ t r a n s f e r . do" method="post "> <input type="hidden" name="CSRFToken" value="OWY4NmQwODE4ODRjN2Q2NTlhMmZlYWEwYzU1YW( . . . )MGYwMGEwOA=="> . . . </form> 2.5.6 Directory Browsing Directory Browsing ou Directory Listing como também pode ser chamado, ocorre quando o usuário acessa algum diretório da aplicação web e o servidor de aplicação web retorna a listagem de todos os arquivos presentes no diretório acessado. Um exemplo desta vulnerabilidade pode ser vista na Figura 13. Esta vulnerabilidade pode ser evitada apenas com a configuração correta do software que oferece o serviço web, como o Apache. Um exemplo desta configuração é mostrado a seguir [Apache 2012]: Quadro 2.5 – Exemplo de configuração do Apache <Direc tory / usr / l o c a l /apache2/ htdocs / dont l i s tme> Options −Indexes </Direc tory> Figura 13 – Exemplo de exploração da vulnerabilidade Directory Browsing. 2.5.7 Click-Jacking Esta vulnerabilidade está ligada ao fato de que a página com esta falha pode ser utilizada em outra página, através de uma tag “iframe” por exemplo. Normalmente, quando se deseja explorar esta vulnerabilidade, este “iframe” é escondido nesta nova página, com a ajuda do CSS (Cascading Style Sheets), e alguma parte crucial da página que está no “iframe” é colocada sob outro elemento também crucial desta nova página, como 40 Capítulo 2. Referêncial Teórico por exemplo, um botão. Assim no momento em que o usuário clica no botão, desejando realizar uma ação, ele realiza a ação da página que esta por baixo do botão visível. A Figura 14 ilustra a exploração dessa vulnerabilidade através de uma prova de conceito realizada pela OWASP [OWASP 2016], e que o código é mostrado a seguir: Quadro 2.6 – Exemplo de prova de conceito sobre a vulnerabilidade de Click-Jacking <html> <head> <t i t l e>Cl i ck j a ck t e s t page</ t i t l e> </head> <body> <p>Website i s vu lne rab l e to c l i c k j a c k i n g !</p> <iframe src="http ://www. t a r g e t . s i t e " width="500" height="500"></ iframe> </body> </html> Figura 14 – Exemplo de exploração da vulnerabilidade Click-Jacking. (a) (b) Fonte: https://www.owasp.org/index.php/Testing_for_Clickjacking_(OTG-CLIENT-009) Na exploração desta vulnerabilidade, como é mostrado na Figura 14a, o usuário irá visualizar a página destacada com “MALICIOUS WEB PAGE ” que possui um botão. Entretanto, junto a isso, há outra página web escondida, destacada com “TARGET WEB PAGE ”, que também possui um botão no mesmo local que a página anterior. Desta forma, se o usuário clicar no botão da página web visível, ele irá executar a ação da página web escondida. Uma outra forma de ver este mesmo cenário esta ilustrado na Figura 14b, onde a página escondida esta sendo mostrada em uma cor mais clara. Uma forma de evitar este tipo de vulnerabilidade é fazendo-se a configuração do servidor de aplicação web para que, na resposta HTTP da solicitação de uma página da aplicação, seja utilizado o cabeçalho Content-Security-Policy ou X-Frame-Options, sendo o 2.5. Vulnerabilidades 41 primeiro uma versão mais atualizada do segundo. Em ambos os casos, o cabeçalho servirá para indicar ao navegador web se ele poderá ou não utilizar tal página dentro de uma tag “<frame>” ou “<iframe>”. Os valores que tais cabeçalhos podem assumir são mostrados na Tabela 1 [OWASP 2017]. Tabela 1 – Configurações de cabeçãlho de Content-Security-Policy (CSP) e X-Frame- Options (XFO). Ação desejada CSP XFO Permite que qualquer site utilize esta página; frame-ancestors ’none’ DENY Permite que apenas a própria página utiliza-a em uma tag “frame”; frame-ancestors ’self ’ SAMEORIGIN Permite que apenas a própria página e as páginas especificadas em “uri” utilizem-a em uma tag “frame”. frame-ancestors ’self ’ ’uri’ ALLOW-FROM uri 43 3 Análise das Ferramentas e Resultados En- contrados Neste capítulo são apresentados os cenários utilizados para a análise das ferrametas apresentadas no capítulo anterior, bem como os resultados encontrados. 3.1 Cenários Avaliados Foram utilizadas duas máquinas virtuais, sendo uma rodando o OWASP BWA (Broken Web Applications) e a outra rodando o Kali Linux, como mostrado no esquema da Figura 15. A VM (Virtual Machine ou Máquina Virtual) com o OWASP BWA e com o IP (Internet Protocol) 10.0.2.9 simula as aplicações web vulneráveis. Já a VM com o Kali e com o IP 10.0.2.8 simula o usuário que faria uso destas aplicações web. Na máquina 10.0.2.9 foram utilizadas as aplicações web Mutillidae e WackoPicko, intensionalmente vulneráveis e que já estavam pré-instaladas no sistema OWASP BWA. Assim, foram executadas as ferramentas OWASP ZAP, Vega, Paros e SkipFish, pré- instaladas no sistema Kali Linux, sobre essas aplicações web para realizar a varredura em busca de suas vulnerabilidades. Figura 15 – Cenário utilizado. 3.2 Utilização das Ferramentas 3.2.1 Skipfish Como foi dito no capítulo anterior, o Skipfish é uma ferramenta baseada em linha de comando. Sendo assim, ao iniciar o terminal na máquina Kali Linux, foram usados os seguintes comandos: 44 Capítulo 3. Análise das Ferramentas e Resultados Encontrados Quadro 3.1 – Comandos para execução da ferramenta SkipFish $ s k i p f i s h −o ~/Desktop/SkipFish_report_WackoPicko −I http : / / 1 0 . 0 . 2 . 9 /WackoPicko/ http : / / 1 0 . 0 . 2 . 9 /WackoPicko/ $ s k i p f i s h −o ~/Desktop/ SkipFish_report_Muti l l idae −I http : / / 1 0 . 0 . 2 . 9 / Mut i l l i d a e / http : / / 1 0 . 0 . 2 . 9 / Mut i l l i d a e / Os comandos acima executam a varredura nas aplicações especificadas no final do co- mando (no caso “http://10.0.2.9/WackoPicko/” e “http://10.0.2.9/Mutillidae/”), e usam os seguintes parâmetros: • -o : Indica a saída do comando, onde neste caso, será o resultado ou relatório da varredura; • -I : Especifica a URL na qual o scanner deve seguir. Este parâmetro é necessário para evitar que o scanner vasculhe URLs que não pertençam à aplicação desejada; 3.2.2 Paros Para a execução do Paros foi necessário primeiramente configurar o proxy no navegador utilizado, que no caso foi o Mozilla Firefox, como é mostrado na Figura 16. Em seguida, com o Paros já em execução, visitar a página das aplicações do Mutillidae e do WackoPicko para que o proxy registrasse a página para ser utilizada posteriormente, como esta ilustrado na Figura 17a. Após acessar a aplicação desejada, é executado o Spider (ou web crawler) para que seja feito o mapa de todos os caminhos de URL disponíveis na aplicação. Para executar o Spider foi necessário clicar com o botão direito do mouse na aplicação registrada pelo proxy, e clicar em “Spider ”, como é mostrado na Figura 17b. Ao final da execução do Spider é que então poderia ser executada varredura, clicando no menu “Analyse”, e em seguida clicando em “Scan”, como mostrado na Figura 17c. 3.2. Utilização dasFerramentas 45 Figura 16 – Configuração do proxy no navegador FireFox. Figura 17 – Configuração da ferramenta Paros. (a) (b) (c) 46 Capítulo 3. Análise das Ferramentas e Resultados Encontrados 3.2.3 OWASP ZAP Ao iniciar a ferramenta pela primeira vez, é pedido que seja feita a atualização de pacotes, onde, neste caso, foi clicado no botão “Update All ” para atualizá-los. Em seguida, foi colocada a URL da aplicação na qual desejava-se testar no campo “URL to attack ”. Como no caso desta ferramenta é possível escolher o modo do scanner, foi utilizado o modo padrão, ou “Standard mode”. A Figura 18 ilustra esta configuração. Figura 18 – Configuração da ferramenta ZAP. 3.2.4 Vega Para configurar a varredura na ferramenta Vega somente é necessário abrir a ferramenta e clicar no menu “Scan” e em seguida em “Start New Scan” como é mostrado na Figura 19a. Na janela em que se abre, marque a opção “Use a base URI for scan” e digite a URI no campo abaixo e em seguida em “Finish” como esta ilustrado na Figura 19b. 3.3. Resultados 47 Figura 19 – Configuração da ferramenta Vega. (a) (b) 3.3 Resultados 3.3.1 Métricas Avaliadas Na exibição dos resultados, são utilizadas as medidadas de pontos vulneráveis e tipos de vulnerabilidades. No caso deste trabalho, o primeiro significa a quantidade de páginas web que possuem algum tipo de vulnerabilidade. Já o segundo significa a classificação da vulnerabilidade, como por exemplo SQLi e XSS. Sendo assim, um mesmo tipo de vulnerabilidade por ter vários pontos vulneráveis dentro de cada aplicação. 3.3.2 Análises Principais Ao executar as ferramentas de varredura em cada aplicação, foram obtidos os resultados mostrados nas Tabelas 2, 3, 4 e 5. Estes dados foram obtidos diretamente dos relatórios dos scans, exatamente da mesma forma como estão apresentados. Tabela 2 – Número de pontos vulneráveis na aplicação Mutillidae. Severidade das Vulnerabilidades Número de Pontos Vulneráveis OWASP ZAP Paros SkipFish Vega Alta 36 226 3 18 Média 34 100 18 44 Baixa 44 27 6 45 Informação 0 0 94 244 Total 114 353 121 351 48 Capítulo 3. Análise das Ferramentas e Resultados Encontrados Tabela 3 – Número de Tipos de Vulnerabilidades detectadas na aplicação Mutillidae. Severidade das Vulnerabilidades Número de Tipos de Vulnerabilidades OWASP ZAP Paros SkipFish Vega Alta 5 2 2 9 Média 4 5 7 4 Baixa 11 1 2 3 Informação 0 0 12 6 Total 20 8 23 22 Tabela 4 – Número de pontos vulneráveis na aplicação WackoPicko. Severidade das Vulnerabilidades Número de Pontos Vulneráveis OWASP ZAP Paros SkipFish Vega Alta 15 0 2 20 Média 34 41 15 3 Baixa 41 0 22 35 Informação 0 0 186 64 Total 90 41 225 122 Tabela 5 – Número de Tipos de Vulnerabilidades detectadas na aplicação WackoPicko. Severidade das Vulnerabilidades Número de Tipos de Vulnerabilidades OWASP ZAP Paros SkipFish Vega Alta 6 0 2 10 Média 3 4 5 2 Baixa 5 0 1 3 Informação 0 0 17 3 Total 14 4 25 18 Ao analisar os resultados das tabelas, é possível perceber diferenças entre cada WVS. Na Tabela 2, a ferramenta Paros se destacou com o melhor desempenho por ter sido a ferramenta que detectou mais pontos vulneráveis de severidade alta. Em contrapartida, a ferramenta SkipFish se destacou como a pior, uma vez que detectou apenas 3 pontos vulneráveis de alta severidade. Já na Tabela 3, é possível perceber que o Paros foi a ferrameta que detectou o menor número que tipos diferentes de vulnerabilidade no total. Ela também foi a que detectou menos tipos de vulnerabilidade de alta severidade, junto com a ferramenta SkipFish. Por outro lado, a ferramenta que teve o melhor desempenho foi o Vega, uma vez que detectou o maior número de tipos de vulnerabilidades de alta severidade. Fazendo-se uma análise entre as tabelas 2 e 3, pode-se perceber que a ferramenta ZAP foi a que teve a melhor proporção entre o número de tipos de vulnerabilidades detectadas e o número de pontos vulneráveis, o que pode indicar uma maior eficiência. Por 3.3. Resultados 49 outro lado, a ferramenta Paros foi a que teve a pior proporção entre esses dois números, o que pode indicar um grande número de falso-positivos. Em relação a Tabela 4 que trata sobre a aplicação WackoPicko, as ferramentas que mostraram um melhor desempenho foram as ferramentas Vega e ZAP, tendo sido a Vega a que detectou maior número de pontos vulneráveis de alta severidade. No entanto, o ZAP detectou mais pontos vulneráveis se somados os pontos de alta e média severidade. Por outro lado, nesta tabela, a ferramenta que teve o pior desempenho, foi o Paros. Analisando a Tabela 5, que também trata sobre a aplicação WackoPicko, a ferra- menta que detectou o menor número de tipos de vulnerabilidades foi o Paros, com uma grande diferença em relação as outras ferramentas. No entanto, a ferramenta que detectou o maior número de tipos de vulnerabilidades com maior severidade foi o Vega. Fazendo-se também uma análise entre as Tabelas 4 e 5, pode-se notar que a ferramenta que teve uma melhor proporção entre o número de pontos vulneráveis e de tipos de vulnerabilidades detectados foi o Vega. Em contrapartida, a que teve a pior proporção, novamente foi o Paros. Analisando-se também as tabelas 3 e 5 pode-se notar que as ferramentas SkipFish e Vega são as únicas que mostraram vulnerabilidades com severidade de informação. Após a obtenção dos relatórios de varredura, foi feita uma comparação com as listas de vulnerabilidades conhecidas nas aplicações. No Mutillidae, esta lista é disponibilizada dentro da própria aplicação, na seguinte URL: “http://<IP da máquina>/mutillidae/ index.php?page=./documentation/vulnerabilities.php”. Já no WackoPicko, esta lista é disponibilizada na página do GitHub [Adamdoupe 2018]. Com o objetivo de realizar uma análise mais precisa das ferramentas, foi considerado apenas um grupo das 9 vulnerabilidades mais relevantes e que estão presentes em ambas aplicações. Esta seleção se deve também ao fato de que os resultados das varreduras mostraram a presença de vulnerabilidades que são, frequentemente, não intencionais e que não apresentam tanta influência sobre a avaliação das ferramentas, como por exemplo “Password Autocomplete in browser” e “X-Content-Type-Options Header Missing”. Esta abordagem é semelhante ao trabalho [Makino e Klyuev 2015]. A Tabela 6 mostra a ocorrência destas vulnerabilidades em cada aplicação. 50 Capítulo 3. Análise das Ferramentas e Resultados Encontrados Tabela 6 – Tipos de vulnerabilidades nas aplicações Mutillidae e WackoPicko. Vulnerabilidade Mutillidae WackoPicko SQL Injection (SQLi) 8 2 Reflected Cross Site Script (RXSS) 18 3Stored Cross Site Script (SXSS) 2 Operacional System Command Injection (OSCi) 2 1 Remote File Inclusion (RFI) ? ?Local File Inclusion (LFI) ? Cross Site Request Forgery (CSRF) 2 - Directory Browsing (DirB) ? - Click Jacking (CJ) 3 - Nestas tabelas um sinal de interrogação (?) foi colocado em algumas das vulnerabili- dades, pois, nestes casos, a quantidade de páginas vulneráveis não estava bem determinada. Assim, a verificação destas vulnerabilidades em específico foi feita de forma manual e a quantidade de ocorrências destas vulnerabilidades em cada aplicação foi deixada em aberto, avaliando-se apenas a quantidade de ocorrências detectadas por cada WVS. Na aplicação Mutillidae, a documentação das ocorrências das vulnerabilidades não é muito clara, o que também dificultou na montagem da Tabela 6. As vulnerabilidades que possuíam os dados menos compreensíveis eram de SXSS e RXSS. Por isso, nesta tabela, a contagem foi feita por uma somatória das duas vulnerabilidades. Já a aplicação WackoPicko não possui ocorrências da vulnerabilidade de LFI. Em sua lista de vulnerabilidades, é especificado apenas as ocorrências de FI (File Inclusion). Por isso, na Tabela 6 também foi usado uma somatória para especificar as ocorrências das vulnerabilidades de LFI e RFI. Com isso, foi feita então a checagem dos relatórios em relação às vulnerabilidades específicas, o que nos deu os dados mostrados nas Tabelas 7 e 8.Para a obtenção destas tabelas foram utilizados os dados dos pontos vulneráveis em cada aplicação, como são mos- trados nas Tabelas 2 e 4. Estes dados foram comparados com as listas de vulnerabilidades disponibilizadas por cada aplicação, com o objetivo de verificar se cada ponto vulnerável mostrado nos relatórios das WVSs, estavam presentes nestas listas de vulnerabilidades. Caso estivessem, eram considerados verdadeiros positivos. Caso não estivessem, eram considerados falso positivos. Os falsos negativos foram calculados subtraindo-se os números mostrados na Tabela 6 dos valores de verdadeiros positivos, para cada vulnerabilidade. Junto a verificação, comentada no parágrafo anterior, foi feita também uma veri- ficação manual das vulnerabilidades consideradas como verdadeiros positivos. Para isso, foram copiadas as URLs utilizadas para os testes das varreduras (como eram descritos nos relatórios) e copiados no navegador para se analisar o comportamento da aplicação web. Em alguns casos em que era necessário também a mudança de parâmetros no corpo das requisições HTTP, foi usada a ferramenta Burp Suite [Portswigger 2018]. 3.3. Resultados 51 Tabela 7 – Número de Verdadeiros Positivos (VP), Falso Positivos (FP) e Falso Negativos (FN) de cada Vulnerabilidade na aplicação Mutillidae. Vulnerabilidade ZAP SkipFish Paros Vega VP FP FN VP FP FN VP FP FN VP FP FN SQLi 1 2 6 2 0 6 3 110 5 1 1 7 XSS 1 16 15 0 4 17 12 54 5 1 6 17 OSCi - - 2 - - 2 - - 2 - - 2 RFI 8 0 0 0 0 0 - - 0 1 0 0 LFI 0 0 0 1 0 0 - - 0 2 0 0 CSRF - - 2 - - 2 - - 2 - - 2 DirB 14 0 0 20 0 0 3 0 0 29 0 0 CJ 0 20 2 - - 3 - - 3 - - 3 Tabela 8 – Número de Verdadeiros Positivos (VP), Falso Positivos (FP) e Falso Negativos (FN) de cada vulnerabilidade na aplicação WackoPicko. Vulnerabilidade ZAP SkipFish Paros Vega VP FP FN VP FP FN VP FP FN VP FP FN SQLi 1 1 1 1 0 1 - - 2 1 0 1 RXSS 1 4 2 1 0 2 1 0 2 1 1 2 SXSS 1 2 1 - - 2 1 1 1 1 1 1 OSCi 1 1 0 1 0 0 - - 1 1 0 0 FI 2 0 0 1 0 0 - - 0 - - 0 Como pode ser visto nas Tabelas 7 e 8, o WVS Paros possui o maior número de falso-positivos, se considermos as duas aplicações, seguida do ZAP com a segunda maior quantidade de falso-positivos. Ainda sobre o Paros, podemos ver que sua varredura teve mais facilidade de detectar vulnerabilidades do tipo de Injeção de SQL e Cross- site Scripting, uma vez que não detectou mais nenhuma ocorrência dos outros tipos de vulnerabilidade, com exceção do Directory Browsing no Mutillidae. Outra conclusão que pode ser tirada destes dados é que houve uma dificuldade unânime para detecção das vulnerabilidades de OSCi, CSRF e CJ, como pode ser visto na Tabela 7. Apesar destas análises feitas sobre a ferramenta Paros, foi encontrado em seu relatório uma grande quantidade de pontos vulneráveis da vulnerabilidade de XSS na qual não são descritas nas listas de vulnerabilidades das aplicações. No entanto, estes casos de pontos vulneráveis ainda foram considerados como falso positivos pelo fato de não estarem nas listas de vulnerabilidades. Para entender melhor os casos mostrados nesta tabela, podemos ver o caso da Figura 20 que mostram as vulnerabilidades de SQLi indicadas pela ferramenta ZAP. Nesta caso, o segundo e o terceiro ponto vulnerável (com a URL igual a "http://10.0.2.9 /mutillidae/index.php?page=login.php") representam verdadeiros positivos, uma vez que os valores testados ("ZAP’ OR ’1’=’1’ – ") nos parâmetros especificados, realizam uma ação irregular. Assim como mostrado no Capítulo 2, a expressão "OR ’1’=’1’" fará 52 Capítulo 3. Análise das Ferramentas e Resultados Encontrados com que a pesquisa no banco de dados selecione qualquer valor, e uma vez que a página que esta sendo testada é a de autenticação ("login.php"), o usuário será autenticado digitando-se o valor de teste em qualquer um dos parâmetros. Já o caso do primeiro e terceiro pontos vulneráveis da mesma imagem, são exemplos de falsos positivos, pois a resposta do servidor de aplicação web para tais testes não apresentam nenhum comportamento irregular. Outro caso que pode ser visto é o da ferramenta Paros, na Figura 21 sobre a vulnerabilidade de XSS. Nesta figura, assim como na Figura 20, são mostradas as URLs e os parâmetros usados para os testes. Destes testes, apenas 1 deles (com a URL igual a "http://10.0.2.9/mutillidae/index.php?page=repeater.php" e parâmetro de teste igual a "repeater-php-submit-button=<SCRIPT>alert("Paros");</SCRIPT>") foi con- siderado falso positivo pois não realiza a execução do script usado como teste. Já nos outros casos, o script é executado, da mesma forma como foi mostrado no Capítulo 2. Figura 20 – Exemplo que vulnerabilidade reportada pela ferramenta ZAP Figura 21 – Exemplo que vulnerabilidade reportada pela ferramenta Paros 3.3. Resultados 53 Figura 22 – Diagrama de Venn dos verdadeiros positivos de cada ferramenta. (a) Mutillidae (b) WackoPicko Outra forma de representar parte dos dados das Tabelas 7 e 8 é através de um Diagrama de Venn, como é mostrado na Figura 22 acima, onde a Figura 22b representa a aplicação WackoPicko e a Figura 22a aplicação Mutillidae. Nestes diagramas estão sendo mostrados os verdadeiros positivos detectados por cada ferramenta em relação ao número total. Para a criação destas imagens, foram levadas em conta as vulnerabilidades da mesma forma como estão representadas na Tabela 6, ou seja, as vulnerabilidades que estão representadas com um sinal de interrogação (?) não foram contabilizadas. Assim como foi feito no trabalho [Mohammed 2016], o Recall e a Precisão de cada WVS podem ser deduzidas com os dados das Tabelas 7 e 8 por meio das Equações 3.1 e 3.2. Segundo o mesmo trabalho, Recall é a taxa de vulnerabilidades corretamente identificadas em relação ao total existente. Já a Precisão é a taxa de vulnerabilidades relevantes em relação ao total indicado pela ferramenta. Para que seja feita de forma mais direcionada para cada ferramenta de análise de vulnerabilidade, foi feito um somatório entre os dados obtidos nas duas aplicações. Os resultados estão sendo mostrados na Tabela 9. Recall = V P V P + FN (3.1) Precisao = V P V P + FP (3.2) Tabela 9 – O valor de Recall e de Precisão de cada WVS para cada Vulnerabilidade Vulnerabilidade ZAP SkipFish Paros Vega R P R P R P R P SQLi 14,2 33,3 30 100 30 2,6 20 66,6 XSS 6,2 5,8 5 20 60,9 20,3 13 27,3 OSCi 33,3 50 33,3 100 0 0 33,3 100 CSRF 0 0 0 0 0 0 0 0 CJ 0 0 0 0 0 0 0 0 54 Capítulo 3. Análise das Ferramentas e Resultados Encontrados Como foi comentado anteriormente, as vulnerabilidades de Directory Brownsing, Remote File Inclusion e Local File Inclusion não foram levadas em consideração nesta tabela, pois a quantidade de ocorrências destas falhas em cada aplicação não estava bem determinada, o que gera uma indeterminação no número de falso-negativos. Pela quantidade reduzida de pontos de presença de algumas vulnerabilidades nas aplicações avaliadas, as porcentagens de Precisão e de Recall apresentaram valores bem acentuados e repetidos como foi o caso da vulnerabilidade OSCi. Como as vulnerabilidades CSRF e CJ praticamente não foram detectadas, a Precisão e o Recall na maioria dos casos resultou em zero. Seriam necessárias mais ocorrências para que as WVS pudessem ser melhor analisadas em relação a essas vulnerabilidades. Uma vez que as vulnerabilidades SQLi e XSS tinham mais presença nas aplicações, seus dados na Tabela 9 mostraram-se mais variados. No entanto, independente do número de ocorrências das vulnerabilidades, os resultados dos relatórios das WVS foram bastante insatisfatórios, uma vez que todos detectaram uma porcentagem baixa destas ocorrências, como é mostrado nesta mesma tabela. Ainda sobre a Tabela 9, podemos perceber que o ferramenta SkipFish foi a que apresentou maior Precisão na detecção de falhas do tipo SQLi, enquanto que seu valor de Recall se igualou com o da ferramenta Paros, considerando o mesmo tipo de falha. Ainda falando de SQLi, é possível ver que o WVS que apresentou a menor precisão foi o Paros, com uma diferença notável entreos outros. Já em relação a vulnerabilidade de XSS, a ferramentas que apresentou o melhor recall foi o Paros, e a que apresentou o segundo pior valor da mesma taxa foi o ZAP. Em relação a precisão sobre a mesma vulnerabilidade, o ZAP mais uma vez apresentou a segunda pior taxa, e a ferramenta Vega foi a que apresentou a melhor taxa. A ferramenta que apresentou a pior taxa de recall e precisão foi o SkipFish tendo apresentado o valor de zero em ambos os casos. 3.3.3 Discuções Adicionais Em paralelo a estas características mostradas, foram percebidos outros detalhes na execução e nos relatórios de cada WVS. A ferramenta Vega, por exemplo, não possui a opção de geração de relatório de varredura, nem a opção de salvar a sessão na qual foi realizada a busca. Este fato dificultou a análise dos dados obtidos por parte desta ferramenta, pois a única maneira de fazê-lo foi no momento da execução da varredura, enquanto o programa estivesse aberto. Outra dificuldade enfrentada foi na análise dos relatórios das demais ferramentas. O relatório de varredura do SkipFish, especificamente, é bastante confuso, apesar de trazer muitas informações sobre a execução da varredura. Um exemplo, é o caso em que uma 3.3. Resultados 55 falha de Local File Inclusion é especificada como "Interesting file". No caso do relatório das ferramentas Paros e ZAP, eles apresentam pequenos detalhes que poderiam gerar algum desentendimento, como na coloração das tabelas e na duplicação de um mesmo tipo de alerta. Apesar desta característica citada sobre o ZAP, ela é a ferramenta que, pelo que foi visto, possui a maior quantidade de ferramentas e opções de varredura, assim como a que foi citada no Capítulo 2. 57 4 Conclusão Neste trabalho foram mostradas as necessidades e as dificuldades do desenvolvimento de aplicações web seguras e que para esta tarefa, as ferramentas de busca de vulnerabilidades web têm um papel importante. Neste contexto, este trabalho avaliou 4 ferramentas utilizadas para a realização das análises. Conforme proposto no início do trabalho, foi possível fazer a discussão das vantagens e desvantagens de cada ferramenta acerca de diferentes características. Os WVSs Paros e Vega foram os que mais se destacaram nos quesitos de Precisão e Recall sobre as vulnerabilidades de Injeção de SQL e Cross Site Scripting. No entanto a ferramenta ZAP pareceu ser a mais completa em relação ao número de opções de ferramentas de execução, apesar de tais opções não terem sido exploradas nos testes. Também foi percebido que as ferramentas Vega e SkipFish foram as que apresentaram melhores taxas de falso-positivo, falso-negativo e verdadeiro-positivo em relação a todas as vulnerabilidades. Além disso, as vulnerabilidades de Cross Site Request Forgery e Click Jacking pareceram ser as vulnerabilidades mais difíceis de serem detectadas por todos os WVSs. Com a execução das práticas mostradas aqui e com a análise final dos dados, percebeu-se que, para obter melhores resultados é necessário o uso de um cenário que traga uma quantidade maior de vulnerabilidades e de pontos vulneráveis dentro das aplicações de teste. Esta mudança faria com que fosse possível a avaliação das ferramentas em relação a detecção de uma quantidade maior de vulnerabilidades e com mais exatidão nos resultados de detecção de cada uma delas. Em relação a melhorias nas práticas de teste, poderiam ser feitas também análises explorando mais recursos de cada scanner de vulnerabilidade. Assim, cada as ferramentas poderiam ser avaliadas de uma forma mais completa. Outra melhoria seria a utilização de mais aplicações web para teste, que utilizas- sem diferentes linguagens de programação, tendo em vista a ampla gama de diferentes tecnologias para o desenvolvimento de softwares web. 59 Referências ABNT. Norma ABNT NBR ISO/IEC 27002. 2005. Último acesso em 13 de Novembro de 2018. Disponível em: <http://www.fieb.org.br/download/senai/NBR_ISO_27002.pdf>. Citado 3 vezes nas páginas 22, 23 e 30. ADAMDOUPE. WackoPicko Github. 2018. Último acesso em 30 de outubro de 2018. Disponível em: <https://github.com/adamdoupe/WackoPicko>. Citado na página 49. APACHE. Directory Listing Configuration. 2012. Último acesso em 25 de Novembro de 2018. Disponível em: <https://wiki.apache.org/httpd/DirectoryListings>. Citado na página 39. BHAMARE, K. OWASP ZAP Modes. 2016. Último acesso em 12 de Novembro de 2018. Disponível em: <https://blog.e-zest.com/owasp-zap-modes>. Citado na página 29. CERT. Cartilha de Segurança para Internet. 2017. Último acesso em 26 de Novembro de 2018. Disponível em: <https://cartilha.cert.br/glossario/#v>. Citado na página 30. CERT.BR. FAQ: Perguntas Freqüentes ao CERT.br. 2018. Último acesso em 23 de Novembro de 2018. Disponível em: <https://www.cert.br/docs/certbr-faq.html#6>. Citado na página 21. CERT.BR. Incidentes Reportados ao CERT.br – Janeiro a Dezembro de 2017. 2018. Último acesso em 13 de Novembro de 2018. Disponível em: <https: //www.cert.br/stats/incidentes/2017-jan-dec/tipos-ataque.html>. Citado na página 22. CERT.BR. Sobre o CERT.br. 2018. Último acesso em 13 de Novembro de 2018. Disponível em: <https://www.cert.br/sobre/>. Citado na página 21. DAVIS, A. A History of Hacking. 2015. Último acesso em 13 de Novembro de 2018. Disponível em: <http://theinstitute.ieee.org/technology-topics/cybersecurity/ a-history-of-hacking>. Citado na página 21. FONSECA, J.; VIEIRA, M.; MADEIRA, H. Testing and comparing web vulnerability scanning tools for sql injection and xss attacks. In: IEEE. 13th Pacific Rim International Symposium on Dependable Computing (PRDC 2007). [S.l.], 2007. p. 365–372. Citado 2 vezes nas páginas 23 e 28. FONSECA, J.; VIEIRA, M.; MADEIRA, H. Evaluation of web security mechanisms using vulnerability and attack injection. IEEE Transactions on Dependable and Secure Computing, IEEE, n. 1, p. 1, 2014. Citado na página 23. FOROUZAN, B. A. Comunicação de dados e redes de computadores. 4. ed. [S.l.]: McGraw-Hill, 2008. Citado na página 21. GITHUB. skipfish. 2018. Último acesso em 27 de outubro de 2018. Disponível em: <https://github.com/spinkham/skipfish>. Citado na página 29. http://www.fieb.org.br/download/senai/NBR_ISO_27002.pdf https://github.com/adamdoupe/WackoPicko https://wiki.apache.org/httpd/DirectoryListings https://blog.e-zest.com/owasp-zap-modes https://cartilha.cert.br/glossario/#v https://www.cert.br/docs/certbr-faq.html#6 https://www.cert.br/stats/incidentes/2017-jan-dec/tipos-ataque.html https://www.cert.br/stats/incidentes/2017-jan-dec/tipos-ataque.html https://www.cert.br/sobre/ http://theinstitute.ieee.org/technology-topics/cybersecurity/a-history-of-hacking http://theinstitute.ieee.org/technology-topics/cybersecurity/a-history-of-hacking https://github.com/spinkham/skipfish 60 Referências KAGORORA, F. et al. Effectiveness of web application security scanners at detecting vulnerabilities behind ajax/json. International Journal of Innovative Research in Science, Engineering and Technology, v. 4, n. 6, p. 4179–4188, 2015. Citado na página 23. MAKINO, Y.; KLYUEV, V. Evaluation of web vulnerability scanners. In: IEEE. Intelligent Data Acquisition and Advanced Computing Systems: Technology and Applications (IDAACS), 2015 IEEE 8th International Conference on. [S.l.], 2015. v. 1, p. 399–402. Citado 2 vezes nas páginas 23 e 49. MOHAMMED, R. Assessment of web scanner tools. International Journal of Computer Applications (0975-8887), Citeseer, v. 133, n. 5, 2016. Citado 2 vezes nas páginas 24 e 53. MORENO, D. Introdução ao Pentest. 1. ed. [S.l.]: novatec, 2015. Citado na página 23. OWASP. OWASP Broken Web Applications Project. 2015. Disponível em: <https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project>. Citado na página 30. OWASP. Testing for Clickjacking (OTG-CLIENT-009). 2016. Último acesso em 4 de Dezembro de 2018. Disponível em: <https://www.owasp.org/index.php/Testing_for_ Clickjacking_(OTG-CLIENT-009)>. Citado na página 40. OWASP. Clickjacking Defense Cheat Sheet. 2017. Último acesso em4 de Dezembro de 2018. Disponível em: <https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_ Sheet>. Citado na página 41. OWASP. Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet. 2018. Último acesso em 25 de Novembro de 2018. Disponível em: <https://www.owasp.org/index.php/ Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet>. Citado na página 39. OWASP. OWASP Zed Attack Proxy Project. 2018. Último acesso em 27 de outubro de 2018. Disponível em: <https://www.owasp.org/index.php/OWASP_Zed_Attack_ Proxy_Project>. Citado na página 29. PAULI, J. Introdução ao Web Hacking. 1. ed. [S.l.]: novatec, 2015. Citado 2 vezes nas páginas 27 e 38. PORTSWIGGER. Burp. 2018. Último acesso em 12 de Dezembro de 2018. Disponível em: <https://portswigger.net/burp>. Citado na página 50. ROSS, J. F. K. e K. W. Redes de computadores e a Internet: uma abordagem top-down. 5. ed. [S.l.]: Addison Wesley, 2010. Citado na página 21. SECURITY, O. Paros. 2014. Último acesso em 27 de outubro de 2018. Disponível em: <https://tools.kali.org/web-applications/paros>. Citado na página 29. SILBERSCHARTZ HENRY F. KORTH, S. S. A. Sistema de Bancos de Dados. 6. ed. [S.l.]: Elsevier, 2012. Citado na página 28. STALLING, W. Criptografia e segurança de redes: princípios e práticas. 6. ed. [S.l.]: Pearson Education do Brasil, 2015. Citado na página 23. https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project https://www.owasp.org/index.php/Testing_for_Clickjacking_(OTG-CLIENT-009) https://www.owasp.org/index.php/Testing_for_Clickjacking_(OTG-CLIENT-009) https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project https://portswigger.net/burp https://tools.kali.org/web-applications/paros Referências 61 SUBGRAPH. Vega. 2013. Último acesso em 27 de outubro de 2018. Disponível em: <https://github.com/subgraph/Vega/wiki/About>. Citado na página 30. SUBGRAPH. Vega. 2014. Último acesso em 27 de outubro de 2018. Disponível em: <https://subgraph.com/vega/index.en.html>. Citado na página 30. WEIDMAN, G. Penetration Testing: a hands-on introduction to hacking. 1. ed. [S.l.]: no starch press, 2014. Citado na página 38. https://github.com/subgraph/Vega/wiki/About https://subgraph.com/vega/index.en.html Folha de aprovação Agradecimentos Resumo Abstract Lista de ilustrações Lista de tabelas Lista de quadros Lista de abreviaturas e siglas Sumário Introdução Problemática e Objetivos Metodologia Estrutura do Trabalho Referêncial Teórico Aplicação Web Ferramentas de Varredura de Vulnerabilidades Web OWASP ZAP SkipFish Paros Vega Aplicaçoes Web Vulneráveis OWASP Broken Web Application Project Outras Ferramentas Burp Suite Vulnerabilidades Injeção de SQL Cross-Site Scripting Reflected Cross-Site Scripting Stored Cross-Site Scripting Injeção de Comandos no Sistema Operacional File Inclusion Remote File Inclusion Local File Inclusion Cross Site Request Forgery Directory Browsing Click-Jacking Análise das Ferramentas e Resultados Encontrados Cenários Avaliados Utilização das Ferramentas Skipfish Paros OWASP ZAP Vega Resultados Métricas Avaliadas Análises Principais Discuções Adicionais Conclusão Referências
Compartilhar