Alura > Cursos de DevOps > Cursos de Segurança > Conteúdos de Segurança > Primeiras aulas do curso Pentest: investigando vulnerabilidades em um servidor de aplicações web

Pentest: investigando vulnerabilidades em um servidor de aplicações web

Inclusão de arquivos - Apresentação

Olá, boas-vindas! Meu nome é Camila Fernanda, mas muitos me chamam de Mila. Sou instrutora na Alura e te acompanharei neste curso de Pentest. Minha descrição: tenho cabelos longos e encaracolados na cor preta, olhos castanhos escuros e estou vestindo uma blusa azul-marinho em que está escrito "Alura".

Neste curso, vamos continuar hackeando sistemas! Vamos conhecer técnicas e vulnerabilidades diferentes, por exemplo, inclusão de arquivos. Testaremos as famosas páginas de upload. Também exploraremos páginas de login por meio de força bruta, usando ferramentas variadas e até mesmo fazendo scripts para realizar o login de diversas formas.

Além disso, estudaremos uma vulnerabilidade no CORS — aquela política de compartilhamento de recursos entre sites. Também veremos uma vulnerabilidade de falsificação de requisições, por exemplo: o CSRF (falsificações de requisição entre sites) e o SSRF (requisições do lado do servidor).

Continuaremos usando o Kali Linux e conheceremos o famoso "canivete suíço do hacker", o metasploit. Com essa ferramenta, faremos varreduras e exploraremos vulnerabilidades. Também usaremos o Hydra, que possui uma inteligência artificial para reconhecer CAPTCHAs presentes nas páginas de login.

Para melhor aproveitamento desse curso, é interessante que você tenha conhecimento de lógica de programação, pois faremos alguns scripts para realizar o login por força bruta.

Fazendo esse treinamento, você estará apto a fazer mais testes de intrusão voltados para as vulnerabilidades citadas anteriormente e conhecer todas essas ferramentas que podem te auxiliar nesses testes.

Espero que você esteja animado, te espero no próximo vídeo. Até mais!

Inclusão de arquivos - Preparando o ambiente

De início, vamos recapitular rapidamente o que fizemos no último curso: nós formamos um Red Team (time vermelho) de uma empresa e analisamos aplicações web: a We Like to Shop, que é uma espécie de e-commerce, e a We Like to Blog, um blog que analisamos ao longo do curso, fazendo testes de intrusão para realizar a validação de segurança.

Agora que nosso time cresceu bastante, resolvemos abrir nossa própria empresa focada em segurança ofensiva.

Vale ressaltar que existem casos reais desse cenário, por exemplo, a empresa americana Randori, voltada para segurança ofensiva. Da data de gravação deste curso, ela fez uma parceria com a IBM, uma empresa tech muito conhecida, e a Randori ficará responsável por realizar os testes de todos os produtos. Ou seja, diversas empresas podem terceirizar esse serviço de testes e validações de segurança. Outras empresas já preferem uma opção diferente: ter uma Red Team internamente, como a Ame Digital e o Banco do Brasil. Esta última possui uma vasta equipe de segurança com subdivisões, uma parcela praticando o Pentest.

Essa foi uma breve contextualização com alguns exemplos do mundo real. Recomendamos que vocês pesquisem mais a respeito, buscando mais casos de descobertas de vulnerabilidades.

Para realização dos testes neste treinamento, continuaremos usando o Kali Linux, um sistema operacional que já conta com ferramentas focadas nessa área. Inclusive, nossa empresa já recebeu um contato que nos trouxe um servidor com muitas aplicações que analisaremos para validar a segurança delas.

Então, vamos acessar a Virtual Box na nossa máquina para abrir o ambiente no servidor dele. Para tanto, precisamos do Kali Linux já instalado e configurado na Virtual Box. Caso você ainda não tenha, há uma explicação detalhada no curso anterior a esse. Ademais, deixaremos um "Para saber mais" para te ajudar.

Além do Kali Linux, também é necessário colocar o servidor no nosso ambiente virtual, o OWASP BWA. O link dele será disponibilizado na plataforma Alura, mas também é possível fazer o download no site do SourceForge. A aplicação se chama OWASP Broken Web Application Project e se trata de um servidor com diversas aplicações que a própria OWASP projetou para nós explorarmos e encontrarmos vulnerabilidades.

Nesse site, podemos clicar no botão verde escrito "Download" (abaixo do logotipo da aplicação e das avaliações dos usuários) e assim será feito o download de uma pasta zipada, que descompactaremos.

Na sequência, vamos colocar a máquina virtual. Na interface da Virtual Box, vamos clicar no botão "Novo" (que possui um símbolo de estrela azul) ou utilizar o atalho "Ctrl + N". Daremos o nome "OWASP BWA - Servidor", escolheremos uma pasta e selecionaremos o tipo "Linux". Como não sabemos a versão do Linux ainda, vamos escolher "Other Linux (64-bit)". Em seguida, pressionaremos "Próximo".

Podemos manter o tamanho da memória como 512 MB, pois é suficiente para rodar tranquilamente. Depois, clicaremos em "Próximo" mais uma vez.

Agora, vamos inserir o disco rígido que acabamos de fazer o download. Selecionaremos a terceira opção ("Utilizar um disco rígido virtual existente") e clicaremos no ícone de diretório na parte inferior direita. Uma nova janela será aberta e, para acrescentarmos a imagem do disco, pressionaremos o botão "Acrescentar" no canto esquerdo superior (que possui um desenho de disco com um sinal de soma). Na sequência, vamos acessar a pasta que baixamos e selecionar a primeira virtual machine, OWASP Broken Web Apps-cl1.vmdk.

Com ela selecionada, vamos clicar no botão "Escolher" e, em seguida, em "Criar". Assim, criamos o nosso servidor. Na lateral esquerda da interface da Virtual Box, teremos agora a opção "OWASP BWA - Servidor". Vamos dar um clique duplo sobre ela para ligá-la — o equivalente a subir o servidor, caso fosse em uma cloud.

Note que a máquina não tem uma interface, é apenas uma tela preta. Veremos uma interface somente quando acessarmos as aplicações.

Após carregar, serão informados os dados de login: no caso, o username é "root" e a senha, "owaspbwa". Não precisaremos dessas informações agora, pois queremos apenas ver a aplicações na nossa página, mas é importante saber onde encontrá-las. Assim, o servidor já está rodando.

Ainda nessa tela, é interessante notar que usaremos um endereço específico para acessar as páginas. No meu caso, é http://10.0.2.15/. O de outras pessoas pode ser diferente, então é essencial rodar o servidor e verificar o endereço de IP informado na sua tela.

Para acessar o servidor, voltaremos ao Virtual Box e abriremos o Kali Linux, dando um clique duplo sobre ele no painel à esquerda. Ao carregar, surgirá uma caixa de diálogo referente à captura do cursor. Vamos clicar em "Capturar". Caso seu mouse suma em algum momento, basta pressionar o "Ctrl" à direita do seu teclado para ele aparecer novamente.

Na tela de login, informaremos o username "kali" e a senha, "kali" também. Conseguimos acessar a máquina, conforme o curso anterior.

Em seguida, acessaremos o servidor por meio de um protocolo HTTP com o IP que vimos há pouco. Vamos abrir um navegador e acessar o endereço. No meu caso, abri o Firefox e digitei http://10.0.2.15. Ao enviar, o navegador ficará carregando, o que significa que não conseguimos conexão com a máquina e precisamos checar as configurações de rede.

Voltando à Virtual Box, vamos selecionar a máquina da OWASP BWA. Em seguida, no menu superior, clicaremos no botão "Configurações" (que tem um símbolo de estrela laranja) ou usaremos o atalho "Ctrl + S".

Uma nova janela será aberta com um painel de opções na lateral esquerda, onde selecionaremos "Rede". Na opção "Conectado a", vamos trocar "NAT" por "Placa em modo Bridge". Vamos clicar em OK e reiniciar a máquina OWASP BWA para aplicar as novas configurações.

Após reiniciada, note que o IP terá mudado. No meu caso, agora é http://192.168.100.167. Então, voltaremos ao Kali e usaremos esse novo endereço no navegador. Dessa vez, conseguiremos acessar a máquina sem problemas.

Nessa página, há várias informações. No topo à esquerda, temos o logo da OWASP. Logo abaixo, temos alguns links com informações interessantes que podemos estudar, caso tenhamos curiosidade. E, mais abaixo, há uma extensa lista de aplicações disponíveis para explorarmos. Todas são vulneráveis, mas ainda não sabemos quais são suas vulnerabilidades. Nosso papel é encontrá-las.

Sob o tópico "Training Applications", por exemplo, há uma aplicação chamada bWAPP. Vamos clicar nela para saber como ela é — caso prefira, você também pode adicionar /bWAPP/login.php à barra de endereço do navegador. Outra opção interessante é a OWASP Mutillidae II (/mutillidae), que vamos verificar no próximo vídeo.

Portanto, este é o ambiente com o qual trabalharemos ao longo do curso. Neste vídeo, aprendemos a acessar o servidor que analisaremos neste treinamento.

Inclusão de arquivos - Path Traversal

No último vídeo, preparamos nosso ambiente para iniciar nossos testes em um servidor repleto de aplicações web feitas por uma empresa que nos contatou para realizar os testes de validação de segurança delas.

Com o Kali Linux aberto, podemos acessar essas aplicações por meio de um IP informado pelo próprio servidor. Para relembrar: ao rodar o servidor na Virtual Box, na tela preta do OWASP BWA, haverá uma frase "You can access the web apps at" seguida do endereço que você deve usar. No meu caso, é http://192.168.100.167/, porém ele pode ser diferente para cada pessoa, então é importante que você cheque na sua máquina.

Portanto, vamos continuar de onde paramos na aula anterior. No Kali Linux, acessaremos no navegador o IP informado e abriremos a aplicação OWASP Mutillidae II.

Essa página é feita puramente para aprendizado de segurança ofensiva. De início, temos algumas informações (como vídeos tutoriais) para nos ajudar, caso estejamos ainda um pouco desorientados sobre como começar a explorar a aplicação.

No painel à esquerda, há uma lista de páginas que podemos acessar para conhecer algumas vulnerabilidades. A primeira opção é "OWASP 2013", um TOP 10 relacionado ao ano de 2013. Expandindo essa opção, o primeiro tópico refere-se a SQL Injection, uma vulnerabilidade que estudamos no curso anterior.

Caso você não tenha acompanhado a primeira parte deste treinamento e queira saber mais sobre SQL Injection, recomendados que explore o curso anterior, pois não abordaremos esse tópico novamente no curso atual. Focaremos em outros tipos de vulnerabilidades.

Por ora, vamos acessar "OWASP 2013 > A1 - Injection (SQL) > SQLi - Extract Data > User Info (SQL)". Essa aplicação provavelmente apresenta a vulnerabilidade de SQL Injection no login, onde colocamos o nome e a senha.

Nesta nova página, perceba que a URL está recebendo um parâmetro. Temos o IP, seguido de /mutillidae, depois /index.php e, por fim, um parâmetro (que notamos pelo uso da interrogação) page que traz a página user-info.php:

192.168.100.167/mutillidae/index.php?page=user-info.php

Com esses dados, já sabemos que a aplicação é feita em PHP e está recebendo parâmetros pela própria URL. A seguir, faremos um teste, inserindo outra página para checar se o comando é aceito pela URL. Vamos substituir page=user-info.php por page=home.php e enviar.

Não ocorrerá nenhum erro, a aplicação nos levará para a página home normalmente. Dessa forma, podemos deduzir que conseguiríamos também acessar arquivos desse sistema. Será que conseguimos acessar qualquer um? Como descobrimos um arquivo interessante para acessarmos?

Sabemos que essa aplicação é feita em PHP e, logo no início, percebemos que o servidor roda um Linux. Ou seja, existem alguns arquivos próprios do Linux que podemos tentar acessar, como o passwd que traz informações de login de usuários.

Como estamos no Kali Linux, vamos minimizar o navegador e abrir o terminal de comando. Para consultar o arquivo de texto passwd que está na pasta etc, executaremos cat /etc/passwd. Esse arquivo contém diversas informações de login do sistema, o que é interessante de verificarmos na nossa própria máquina. Num sistema web, no entanto, não é nada bom que esses dados estejam abertos para qualquer pessoa acessar!

Então, vamos fazer um teste e tentar acessar esses dados por meio do navegador. Na barra de endereço, substituiremos page=home.php por /etc/passwd. Ao enviar, conseguiremos conferir diversos dados do próprio sistema, do servidor que a empresa disponibilizou.

Desse modo, uma pessoa com más intenções pode descobrir informações importantes. Por exemplo, com os dados que estamos visualizando agora, reconhecemos que temos um MySQL Server — para fazer um SQL Injection, já sabemos que pode haver alguns comandos próprios do MySQL. Também verificamos se tratar de um servidor Tomcat. Ou seja, é um cenário bastante perigoso, pois informações importantes estão sendo expostas para qualquer pessoa.

Essa é uma vulnerabilidade chamada path traversal ou dot-dot-slash (../) — traduzido livremente como "ponto-ponto-barra". Para voltar diretórios no Linux, normalmente executamos o comando cd .., então poderíamos, por exemplo, voltar um diretório nessa página usando page=../etc/passwd. No nosso caso, não funcionará, porque estamos no nosso próprio diretório.

Em resumo, conseguimos acessar pastas e arquivos importantes que o sistema não mostrou para nós, por meio da URL. Essa é uma vulnerabilidade crítica que pode acarretar outras, que estudaremos no próximo video.

Sobre o curso Pentest: investigando vulnerabilidades em um servidor de aplicações web

O curso Pentest: investigando vulnerabilidades em um servidor de aplicações web possui 218 minutos de vídeos, em um total de 53 atividades. Gostou? Conheça nossos outros cursos de Segurança em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Segurança acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas