Pentest em aplicações web Avalie a segurança contra ataques web com testes de invasão no Kali Linux
José Augusto de Almeida Jr.
Introdução
Quando ingressei na carreira de informática, após a conclusão do curso técnico em 2012, o meu sonho era ser um excelente desenvolvedor. Além de gostar muito de desenvolvimento, sempre ouvia falar que era uma profissão promissora e que eu ficaria rico! Acho que essa segunda parte não funcionou tão bem assim. Mas, brincadeira à parte, sempre tive o meu foco no desenvolvimento.
Com grande foco na área de desenvolvimento, eu não medi esforços para aprender muito. Eu era um grande adepto da linguagem Java e havia me apaixonado por Orientação a Objetos e Design Patterns. Nessa época, já era um cliente da Casa do Código e dos seus excelentes livros de programação. Diante disso, eu sempre pensava comigo mesmo se um dia seria capaz de escrever um livro nesse padrão para a Casa do Código.
Em 2014, eu fui aprovado em um concurso público para militar da Força Aérea Brasileira e meu sonho era desempenhar essa função de desenvolvedor quando fosse nomeado. Felizmente, para minha carreira de hoje, não houve vagas disponíveis para a organização responsável por grandes projetos de desenvolvimento e acabei indo para Brasília, que possui um centro de computação encarregado da defesa cibernética.
Hoje, tenho certeza de que eu vim para o lugar certo na hora certa. A segurança cibernética estava entrando em alta, devido aos diversos ataques cibernéticos que já estavam acontecendo com uma frequência muito grande. Eu aproveitei uma grande oportunidade, pois não era comum haver desenvolvedores com atividade focada em segurança cibernética, então pude rapidamente entrar na área.
Diante desse cenário, deixei o desenvolvimento de sistemas de negócios e passei a desenvolver ferramentas para segurança e me aperfeiçoar em técnicas de segurança ofensiva. O meu conhecimento prévio em linguagens de programação fez com que eu tivesse um entendimento muito mais rápido e profundo sobre as vulnerabilidades dos sistemas. Com isso, ajudei a melhorar a segurança de muitos sistemas validando-os do ponto de vista do atacante e fazendo um grande elo com a equipe de desenvolvimento.
Como eu já desenvolvia antes e até tinha feito um estágio na área de desenvolvimento, já tinha mapeado como os desenvolvedores poderiam ter implementado uma função vulnerável. Eu tinha essas possíveis falhas em minha mente, porque eu desenvolvia os sistemas dessa forma antigamente. Apesar de ser capaz de muitas coisas na área de desenvolvimento, a minha formação deixou de lado os conhecimentos de desenvolvimento seguro. Sabe por quê? Porque a segurança era vista como uma perda de tempo, já que o cliente só veria a funcionalidade.
Que bom que pude acompanhar de perto uma mudança de pensamento. Hoje, a segurança de código é falada em diversas palestras para desenvolvedores e desenvolvedoras. Talvez ainda não o quanto deveria, mas eu fico feliz por esse tema fundamental ter sido incorporado com frequência nesses eventos.
Caso você seja um desenvolvedor ou uma desenvolvedora, você poderá ter as mesmas percepções que comecei a ter ao ter contato com as vulnerabilidades. Com certeza, você fará um elo com o seu passado e poderá assim validar os sistemas e dar a eles um requinte a mais.
O conhecimento de ações ofensivas sob o ponto de vista do atacante vai transformar o seu pensamento e, se continuar na área de desenvolvimento, vai se tornar um(a) profissional diferenciado(a). Com isso, é seguro dizer que este livro não se limita à área de atuação de segurança. Você verá a sua utilidade em todos os dias da sua carreira, seja ela qual for.
Para quem é este livro e pré-requisitos
Este é um livro totalmente dedicado a uma atividade ofensiva de testes de invasão em aplicações web. Sendo assim, ele é feito para todos que querem conhecer um pouco mais dessa área, que está em alta atualmente. Nesse contexto, são necessários diversos conhecimentos que podem abranger toda área de TI. Quando trabalhamos com segurança ofensiva, vemos claramente o quanto as áreas da TI são interligadas na prática.
Eu sei que não é possível saber muitas coisas de TI a priori, pois a TI é imensa. No entanto, você também sabe que tudo tem um começo. Apesar de o estudo ser fundamental para seu sucesso profissional na área de segurança ofensiva, você não alcançará grandes resultados na carreira se não praticar as técnicas aprendidas com frequência. Apenas a experiência vai levar você a grandes caminhos em relação ao conhecimento necessário.
Este é um livro introdutório, então é recomendado apenas que você tenha os conhecimentos mais básicos, que incluem: redes de computadores com seus protocolos básicos, sistema operacional Linux, lógica de programação, banco de dados e o básico de linguagens de programação, como JavaScript, Python e PHP. Todos esses conceitos serão abordados com menos detalhes ao decorrer do livro, pois suponho que você já tem esse conhecimento. Caso você não domine algum conteúdo necessário, não se assuste, isso acontece comigo até hoje. Aconselho você a se acostumar com a pesquisa e o aprendizado em paralelo, pois essa necessidade estará presente durante toda a sua carreira.
Sobre o autor
Sou José Augusto, especialista em red team e pentest. Com o objetivo de me aperfeiçoar nessas áreas, em minha carreira conquistei três certificações: OSCP, OSCE e OSWP, que me ajudaram muito a ampliar as habilidades técnicas. Claro, isso considerando também a alta intensidade da prática no dia a dia.
Como acredito que cada indivíduo deveria cumprir também uma função social, tornei-me voluntariamente, com mais dois amigos, coordenador do capítulo OWASP de Brasília. A OWASP é uma comunidade on-line que cria e disponibiliza artigos, metodologias, documentações, ferramentas e tecnologias no campo da segurança de aplicações web de forma gratuita. No capítulo de Brasília, nossa função é realizar eventos periódicos direcionados à comunidade da região, isso para que seja fomentado o interesse em jovens e para propagar o conhecimento de segurança e a prática de networking. Fazemos e incentivamos muito a orientação profissional, para que cada vez mais jovens tenham interesse em ingressar profissionalmente na área.
Sou também um apaixonado por resolver problemas de segurança cibernética de uma forma inovadora e por lecionar, então não me limitei apenas ao lado corporativo. Desse modo, decidi, paralelamente, seguir uma trilha no mundo acadêmico tornando-me doutorando em segurança da informação pela UnB, onde anteriormente já havia concluído o mestrado em segurança cibernética. No mundo acadêmico, pude aprender e superar desafios que nem mesmo sabia que era capaz - a perseverança foi a chave para essa conquista. Nessa área, interesso-me muito por pesquisas em segurança ofensiva, Inteligência Artificial aplicada a segurança ofensiva e segurança de aplicações.
Meu gosto por segurança cibernética vem desde cedo, pois, anteriormente, já havia cursado uma pós-graduação lato sensu em segurança da informação e uma especialização em guerra cibernética pelo Centro de Instrução de Guerra Eletrônica do Exército. Minha formação superior foi em Sistemas de Informação, mas iniciei na área de informática em 2012, após a conclusão do curso técnico em informática pela ETEC Guaratinguetá-SP, cidade onde nasci.
Durante o nível superior, dediquei-me duramente a um estágio na área de desenvolvimento, o que me rendeu muito conhecimento. Em 2014, fui aprovado em concurso militar para especialidade de sistemas de informação na Força Área Brasileira e desde 2015, quando terminei a formação militar, trabalho diretamente com segurança ofensiva e análise de vulnerabilidades.
LinkedIn: @jaaj16
Sobre o livro
Este livro foi feito com um pensamento diferente. Aqui não será abordado nada sobre correção das vulnerabilidades no código. Este livro é focado nas questões ofensivas. Você aprenderá a validar as defesas do seu sistema do ponto de vista do atacante. Mas caso você queira saber como realizar correções, indico-lhe um excelente livro também sobre segurança aqui da Casa do Código, chamado Segurança em aplicações Web, do autor Rodrigo Ferreira.
Este livro sobre pentest é considerado introdutório, já que nele abordarei os conceitos e vulnerabilidades fundamentais. O objetivo do livro é ensinar você a utilizar ferramentas de teste de invasão, realizar a exploração de vulnerabilidades mais comuns e entendê-las. Queremos aqui que você aperfeiçoe o seu pensamento, passe a ter a visão que um atacante pode ter do sistema e que assim você consiga realizar orientações muito eficazes para uma equipe de desenvolvimento. Isso tudo por meio de relatórios de exploração de vulnerabilidades.
Este material também poderá ser de grande contribuição se você pretende entrar na área e ser um(a) profissional de segurança ofensiva. Quem sabe, talvez você queira se transformar em um jogador de CTF (Capture The Flag), que é uma competição hacker similar a um jogo, ou até mesmo participar de programas de bug bounty, onde as empresas oferecem recompensas caso você descubra e reporte vulnerabilidades em seus sistemas.
Além disso, com este livro, você vai compreender os aspectos necessários para ser um pentester, que é o profissional especialista de teste de segurança ofensiva, ou até mesmo para compor um red team, uma equipe especializada em simular um adversário real. Existem muitas frentes em que você pode atuar, até mesmo se estiver investigando a área e quiser desenvolver um trabalho científico, todos esses entendimentos serão requeridos durante essa jornada.
Então, o que você está esperando para embarcar nessa aventura e se tornar um hacker profissional? Com esse conhecimento, você será capaz de deixar os programadores boquiabertos com as suas habilidades de manipulação. Você será capaz de provar na prática os impactos das vulnerabilidades na sua organização e será muito bem-visto por isso. Algumas poucas ações de segurança já podem economizar milhões, apenas descobrindo as falhas antes dos hackers do mal.
Sumário
- 1 Introdução aos testes de invasão
- 1.1 Metodologias de teste de invasão
- 1.2 Red team e blue team
- 1.3 Os famosos programas de bug bounty
- 1.4 Conhecendo o famoso OWASP top 10
- 1.5 Avaliando a severidade das vulnerabilidades com CVSS
- 2 Preparação do ambiente
- 2.1 Instalando o Kali Linux, o SO do atacante!
- 2.2 Instalando a OWASP BWA, a nossa vítima!
- 2.3 Configurando o ambiente de testes no VirtualBox
- 2.4 Protegendo contra as perdas usando snapshots
- 3 Reconhecendo o inimigo
- 3.1 Uma pincelada sobre reconhecimento passivo
- 3.2 Mapeando a aplicação
- 3.3 Descobrindo os arquivos escondidos com Gobuster
- 3.4 Listando as tecnologias utilizadas
- 3.5 Automatizando buscas com script nmap
- 4 SQL Injection: muito além da extração de dados
- 4.1 Entendo o SQL Injection
- 4.2 Entenda o uso do SQL Injection no roubo de dados
- 4.3 A ferramenta sqlmap: automatização da exploração de SQL Injection
- 4.4 Opções de performance
- 4.5 Capturando informações importantes no SGBD
- 4.6 Cabeçalhos e autenticação
- 5 Inclusão de arquivos: RFI e LFI
- 5.1 Entendendo o Path traversal
- 5.2 Entendendo RFI
- 5.3 Entendendo LFI
- 5.4 O poder dos webshells para exploração do LFI
- 5.5 LFI a partir do envenenamento de logs
- 5.6 LFI por serviços auxiliares
- 5.7 Deploy de webshell no tomcat
- 6 Os perigos do XSS (Cross-Site Scripting)
- 6.1 Interpretação de códigos no navegador
- 6.2 XSS em parâmetros POST
- 6.3 Operacionalizando XSS com BeEF
- 7 Realizando ações em nome de cliente e de servidor: CSRF & SSRF
- 7.1 Características do protocolo HTTP que permitem CSRF
- 7.2 Entendendo o CSRF
- 7.3 CSRF em parâmetros GET
- 7.4 CSRF em parâmetros POST
- 7.5 Entendendo o ataque de SSRF
- 7.6 Ataque de SSRF em incorporação de arquivos
- 7.7 Automatizando a exploração de SSRF com SSRFmap
- 8 Explorando falhas de autenticação, gerenciamento de sessão e autorização
- 8.1 Ataque de força bruta e dicionário
- 8.2 Quebra do controle de acesso por manipulação de parâmetros
- 8.3 Explorando a lógica de construção dos cookies de sessão
- 8.4 Acessando recursos sem autenticação
- 8.5 Executando ações sem autorização em REST API
- 8.6 Mecanismo de recuperação de senha vulnerável
- 8.7 Tecnologias importantes para o conhecimento
- 9 Outras vulnerabilidades importantes
- 9.1 Injeção de comandos do sistema operacional
- 9.2 Injeção de XML External Entity (XXE)
- 9.3 Captura de informação sensível
- 9.4 Uso de componentes conhecidamente vulneráveis
- 9.5 Falha na desserialização de objetos
- 9.6 Injeção e poluição de parâmetros HTTP
- 9.7 Clickjacking ou UI Redress
- 9.8 Ataque de estresse em aplicações web com Python
- 9.9 Negação de serviço usando o protocolo HTTP
- 9.10 Burlando controles client-side
- 9.11 Redirecionamento de URL
- 9.12 XPath injection
- 9.13 Clone de páginas web
- 10 Metasploit para web: operacionalizando o teste de invasão
- 10.1 Entendendo a estrutura do Metasploit
- 10.2 Como utilizar o Metasploit
- 10.3 Reconhecimento web com Metasploit
- 10.4 Encontrando scripts usuais no Metasploit
- 10.5 Exploração web com Metasploit
- 10.6 O famoso Meterpreter
- 10.7 Exploração com msfvenon
- 10.8 Outras funcionalidades interessantes
- 10.9 Varredura automatizada com o Metasploit WMAP
- 11 Finalização dos trabalhos
- 11.1 Uma proposta de passo a passo para seguir nos testes de invasão
- 11.2 Itens necessários para o relatório final
- 11.3 Como continuar meu aprendizado
- 11.4 Conclusão
- 12 Referências
Dados do produto
- Número de páginas:
- 267
- ISBN:
- 978-65-86110-88-3
- Data publicação:
- 11/2021