Preparando ambiente de laboratório vulnerável
Antes de testar uma aplicação web, precisamos de um ambiente em que seja possível praticar sem misturar com serviços reais ou serviços fora do nosso escopo. Para isso, vamos usar duas aplicações deliberadamente vulneráveis: o Damn Vulnerable Web Application (DVWA), que oferece cenários para começarmos nossas explorações, e o OWASP Juice Shop, que é mais completo em termos de vulnerabilidades disponíveis.
Neste curso, vamos utilizar duas máquinas: uma Kali, com o Burp Suite (como mostramos na aula anterior), e uma máquina Ubuntu Server para servir como servidor de laboratórios. Optamos pelo Ubuntu Server por preferência para esse tipo de uso, mas essa não é uma exigência. As aplicações podem ser instaladas diretamente no Windows — o que não recomendamos, por serem vulneráveis — ou no próprio Kali como serviço. Preferimos segregar.
No nosso caso, as duas máquinas estão na mesma rede NAT isolada. O Kali estará no endereço 192.168.244.129 e será utilizado para realizar os ataques com o Burp Suite. O Ubuntu Server, na versão 22.04 LTS, estará no endereço 192.168.244.177 e vai hospedar os dois laboratórios.
A instalação das máquinas virtuais não fará parte desta aula. Nosso foco é explorar o Burp Suite, mas faremos um overview (visão geral) do que está sendo feito. As duas VMs (Kali e Ubuntu Server) já estão prontas; vamos partir delas em funcionamento para preparar os serviços.
No diagrama apresentado, observamos o funcionamento da rede NAT com o Kali e o Ubuntu Server disponibilizando os dois laboratórios: DVWA e OWASP Juice Shop. Existem outras formas de executar os laboratórios, que também funcionam; sinta-se à vontade para explorar outras ideias.
Explorando repositórios dos laboratórios
Antes de qualquer coisa, vamos visitar o repositório oficial do DVWA. No Kali, acessamos o GitHub, no repositório digininja/DVWA. Você pode explorar o projeto para ver como ele está construído e outras possibilidades além do que será abordado nesta aula; isso é sempre recomendável.
No arquivo README, observamos como o projeto apresenta sua execução. No nosso caso, vamos utilizar a instalação com Docker. A partir daqui, seguiremos para a preparação e montagem do nosso laboratório.
Também vamos verificar o projeto do OWASP Juice Shop, no GitHub, em bkimminich/juice-shop. Vale a pena explorar como ele está estruturado e quais são seus requisitos; é bom entender isso antes de partir para a instalação. Faremos a execução via Docker dentro do servidor Ubuntu.
Conectando ao servidor e clonando o dvwa
Agora, vamos abrir o Ubuntu Server por SSH. Já estamos dentro dele. Para isso, realizamos a conexão com o seguinte comando:
No nosso caso, o projeto já está instalado, então vamos apenas replicar os passos necessários para realizar a instalação.
Seguindo o que está no manual do GitHub, executaríamos o comando de clonagem com o link do projeto DVWA. Após a execução, acessamos a pasta "DVWA" para visualizar todos os arquivos necessários para a execução.
Para clonar o repositório e entrar no diretório do projeto:
git clone https://github.com/digininja/DVWA.git
Em seguida, acessamos a pasta:
Antes de iniciar o Docker, um detalhe importante: caso não tenha o Docker instalado, recomendamos sua instalação. O próprio projeto do DVWA fornece instruções para instalar o Docker, o que reforça a importância de ler a documentação. Além disso, na página oficial do Docker (docs.docker.com), encontramos o guia de instalação no Ubuntu, com os pré-requisitos necessários para deixar todo o ambiente funcionando.
Ajustando o docker-compose do dvwa
Preparação e ajuste do docker-compose.yml
Este passo é um pré-requisito para a instalação em andamento. Vamos editar o arquivo docker-compose.yml e localizar a linha da seção ports:. Originalmente, o endereço estará como 127.0.0.1. Precisamos alterar para 0.0.0.0 para que o serviço escute na interface de rede NAT e fique acessível por essa interface.
Abrimos o arquivo para edição:
Dentro do arquivo, ajustamos a seção de portas conforme abaixo, trocando o bind de 127.0.0.1 para 0.0.0.0:
Faremos essa pequena alteração; o restante permanece inalterado. Poderíamos também ajustar outras configurações, como a senha do MySQL e o usuário, mas isso não é necessário para o funcionamento neste contexto. Após a modificação, saímos e salvamos o arquivo.
Também podemos realizar essa alteração de forma automática com um comando utilizando sed -i, que fará a substituição e deixará o arquivo conforme o necessário.
sed -i 's#127.0.0.1:4280:80#0.0.0.0:4280:80#' docker-compose.yml
Subindo serviços do dvwa com docker
Subida dos serviços do DVWA
Vamos subir agora os serviços do DVWA utilizando o comando do Docker para compor e iniciar os contêineres em modo destacado (em segundo plano). Esse procedimento iniciará o serviço do DVWA no Docker.
sudo docker compose up -d
Podemos verificar que está em execução utilizando o utilitário ss com as opções -nltp, o que exibirá os serviços ativos. Pela documentação, sabemos que o DVWA sobe na porta 4280, exatamente como indicado: em Local Address, deverá aparecer 0.0.0.0, o que confirma que está escutando em todas as interfaces. Em princípio, está funcionando.
Testando acesso e ajustando segurança do dvwa
Teste de acesso ao DVWA
Vamos testar o acesso pelo navegador em 192.168.244.177:4280. Tudo está conforme esperado: a aplicação está funcionando e acessível.
Podemos acessar a interface do DVWA com as credenciais padrão (admin/password). Não é necessário salvar as credenciais no navegador. Na interface, vemos a lista de vulnerabilidades que serão exploradas: Brute Force (força bruta), Command Injection (injeção de comandos), CSRF (falsificação de solicitação entre sites) e File Inclusion (inclusão de arquivos), entre outras disponibilizadas pelo DVWA.
Uma informação importante: a seção DVWA Security define o nível de segurança das vulnerabilidades. Por padrão, está em Impossible. Durante o curso, vamos deixar em Low, pois nosso foco é testar o Burp Suite no contexto de exploração de vulnerabilidades web, sem a necessidade de contornar controles de segurança. Assim, definimos para Low.
A partir deste ponto, o DVWA está pronto para uso.
Preparação do OWASP Juice Shop
Agora vamos preparar a instalação do OWASP Juice Shop. O procedimento será semelhante, com uma pequena diferença: em vez de executar um clone via Git (git clone), podemos utilizar o comando de obtenção de imagem do Docker (docker pull) para puxar o projeto do OWASP Juice Shop. Tudo isso está detalhado na documentação oficial do projeto; em caso de dúvidas, vale a pena pausar e ler com atenção, inclusive para seguir por outra abordagem, se desejado.
Para baixar a imagem oficial:
docker pull bkimminich/juice-shop
Após obter a imagem, executamos o comando indicado no repositório do GitHub para rodar a aplicação em contêiner (lembrando de utilizar privilégios administrativos, pois são comandos do Docker).
Executando a aplicação expondo a porta 3000 (ouvindo em todas as interfaces por padrão ao não especificar o endereço):
sudo docker run --rm -d --name juice-shop -p 3000:3000 bkimminich/juice-shop
Na documentação do OWASP Juice Shop, costuma-se indicar a execução vinculada a 127.0.0.1. Contudo, também queremos que funcione na rede NAT. Para isso, podemos deixar sem especificar endereço (ouvindo em todas as interfaces) ou vincular explicitamente a 0.0.0.0: o resultado será o mesmo para nosso objetivo.
Como alternativa, vinculando explicitamente a 0.0.0.0:
sudo docker run --rm -d --name juice-shop -p 0.0.0.0:3000:3000 bkimminich/juice-shop
Se preferirmos que a execução não ocupe o terminal, podemos colocá-la em segundo plano utilizando o operador &. Há opções para configurá-lo como serviço a ser ativado, e isso pode ser editado, mas não faremos essa alteração agora.
sudo docker run --rm -d --name juice-shop -p 0.0.0.0:3000:3000 bkimminich/juice-shop &
Verificação do OWASP Juice Shop
Assim que a execução estiver ativa, confirmamos que o serviço subiu utilizando ss -nltp. O OWASP Juice Shop deve expor a aplicação na porta 3000. Em seguida, abrimos no navegador para confirmar o acesso. A aplicação está disponível e podemos explorar as funcionalidades. Todas as vulnerabilidades exploráveis do OWASP Juice Shop serão tratadas posteriormente em detalhes.
Concluindo a aula
A partir daqui, podemos realizar nossas explorações no contexto de utilização do Burp Suite. Fiquem à vontade para explorar, verificar outras possibilidades de instalação e modos de uso; é um ambiente bem interessante para testes.
Com os nossos laboratórios funcionando, estamos prontos para continuar o curso. Nos vemos na próxima aula.