Laboratórios de hacking
Como criar uma rede Docker isolada para o seu laboratório
Crie uma rede Docker sem acesso à internet, rode o OWASP Juice Shop nela e publique uma cópia para o navegador só em 127.0.0.1.
Monte um laboratório que você pode atacar: arquivo de escopo, portas do Docker no loopback, rede isolada, caderno de notas e desmontagem limpa.
Um laboratório doméstico fica dentro da lei quando todo sistema que você ataca é seu ou pertence a alguém que deu permissão por escrito. Todo o resto decorre dessa regra. Seu notebook, uma máquina virtual que você criou e um contêiner que você iniciou estão no escopo. O Wi-Fi do vizinho, a rede da escola e "aquele site que parece vulnerável" não estão, mesmo que o teste seja inofensivo.
Escreva a regra antes de instalar qualquer coisa. É fácil deixar a autorização ficar vaga quando uma ferramenta já está rodando e um alvo parece interessante.
Os comandos abaixo rodaram no Windows com Docker 29.8.2. Outras versões podem imprimir textos um pouco diferentes.
Mantenha o laboratório em uma única pasta, para encontrá-lo e apagá-lo depois:
mkdir -p lab/notes
cd labCrie o scope.md nessa pasta com os alvos que você se permite testar:
# Escopo
Alvos permitidos:
- 127.0.0.1 (contêineres que eu iniciei, portas ligadas só ao loopback)
Não permitido:
- Qualquer outra coisa, até eu ter permissão por escrito do dono.Parece trivial. Mesmo assim, evita que você aponte um scanner para um endereço que nunca quis testar.
docker --versionDocker version 29.8.2, build 7fc2dffSe o comando falhar, instale o Docker antes. Se o docker info disser que não alcança o daemon, inicie o Docker Desktop ou o serviço do Docker e tente de novo.
Contêineres são o jeito mais simples de rodar software vulnerável sem instalá-lo no sistema. O risco está no mapeamento de porta. A documentação de publicação de portas do Docker diz que um mapeamento -p sem endereço deixa a porta disponível fora do host. Um app vulnerável de propósito não deve ficar assim.
Informe o endereço de loopback no mapeamento. Este exemplo usa a imagem de um servidor web simples no lugar de um alvo de laboratório:
docker run -d --rm --name lab-check -p 127.0.0.1:18080:80 caddy:2
docker port lab-check80/tcp -> 127.0.0.1:18080127.0.0.1:18080 significa que só a sua máquina alcança a porta. Compare com um mapeamento sem endereço:
docker stop lab-check
docker run -d --rm --name lab-check -p 18081:80 caddy:2
docker port lab-checklab-check
80/tcp -> 0.0.0.0:18081
80/tcp -> [::]:18081Aqui o Docker escuta em 0.0.0.0 e [::], que são todas as interfaces. Se outros dispositivos conseguem de fato chegar lá depende do seu firewall e da sua rede, então não confie nisso. Coloque 127.0.0.1 em todo comando do laboratório e confira com docker port a cada vez.
Alguns exercícios não precisam de rede, como ler um script suspeito ou rodar um parser sobre um arquivo. O driver de rede none do Docker deixa o contêiner sem rede, exceto o loopback:
docker run --rm --network none alpine:3.22 ip -o link | cut -d' ' -f2lo:Só existe a interface de loopback (lo). Use --network none para tudo que você não quer que fale com o exterior, e trate qualquer amostra baixada como hostil até lê-la.
Crie um arquivo por sessão em notes/. Anote a data, o alvo, o que você tentou e o que aconteceu, nessa ordem, enquanto trabalha:
## 2026-01-15 14:20, primeira execução
- Alvo: juice-shop-lab, http://127.0.0.1:3000
- Objetivo: ver o que um login falho devolve
- Comando: curl -i http://127.0.0.1:3000/rest/user/login
- Resultado: (cole o que você viu, não o que esperava)
- Próximo: ...O caderno tem duas funções. Ele mostra o que você fez quando um resultado surpreende, e é o hábito de onde nasce um relatório de verdade. Registre o comando que você rodou e a saída que você obteve. Não cole a saída de um guia.
Pare o que você iniciou e confira se não sobrou nada:
docker stop lab-check
docker ps -a --filter name=lab-check --format '{{.Names}}'lab-checkO docker stop imprime o nome do contêiner. Como ele foi iniciado com --rm, o Docker o remove depois que para, então o segundo comando não imprime nada. Se quiser apagar a imagem também, use docker image rm. Apague a pasta lab só quando não precisar mais das anotações.
Um laboratório que você refaz em poucos minutos vale mais que um em que você tem medo de mexer.
Agora você tem uma pasta com escopo, o hábito do loopback e um jeito de parar. O próximo artigo, Rodar o OWASP Juice Shop com Docker, usa essa base para iniciar uma aplicação web vulnerável de propósito. Leia antes a página do projeto OWASP Juice Shop para saber o que você vai executar.
Laboratórios de hacking
Crie uma rede Docker sem acesso à internet, rode o OWASP Juice Shop nela e publique uma cópia para o navegador só em 127.0.0.1.
Laboratórios de hacking
Estruture um relatório de pentest e escreva um achado que outra pessoa consiga reproduzir, com evidência, impacto, vetor CVSS v4.0 e correção.
Laboratórios de hacking
Rode o OWASP Juice Shop em um contêiner Docker restrito à sua máquina, confirme que ele responde e pare-o sem deixar nada rodando.