Tutorial OWASP Juice Shop: Instalação e Primeiros Desafios

Web Security
17 min de leitura
Tutorial OWASP Juice Shop: Instalação e Primeiros Desafios
Nesta página
  1. O que é o OWASP Juice Shop?
  2. Como instalar o OWASP Juice Shop
  3. O score board é o seu mapa
  4. Seus 10 primeiros desafios no OWASP Juice Shop
    1. 1. Score Board (1 estrela)
    2. 2. Error Handling (1 estrela)
    3. 3. Privacy Policy e Security Policy (1 e 2 estrelas)
    4. 4. Confidential Document (1 estrela)
    5. 5. Zero Stars (1 estrela)
    6. 6. DOM XSS (1 estrela)
    7. 7. Login Admin (2 estrelas)
    8. 8. Admin Section (2 estrelas)
    9. 9. Five-Star Feedback (2 estrelas)
    10. 10. View Basket (2 estrelas)
  5. Ferramentas para adicionar depois da primeira noite
  6. Modo CTF do Juice Shop: sua competição de treino
  7. Quando você travar: dicas, guia e soluções
  8. O que o Juice Shop não vai te ensinar
  9. Considerações legais e éticas
  10. Perguntas frequentes
  11. Seus próximos passos

O OWASP Juice Shop parece uma loja online comum. Ele vende suco de maçã, suco de banana e um suco de limão que, por algum motivo, está sempre esgotado. Ele também tem mais de cem falhas de segurança, um placar escondido que registra cada uma que você encontra, e o primeiro desafio é justamente achar esse placar. Se você nunca invadiu uma aplicação web, essa é a forma mais divertida de aprender.

Este guia coloca o OWASP Juice Shop para rodar com um único comando, mostra como funcionam o score board e as estrelas de dificuldade, e percorre os dez primeiros desafios na ordem que mais ensina. Ele também cobre o modo CTF embutido, que transforma o seu Juice Shop em um CTF de treino para iniciantes. Todas as classes de falhas que você vai encontrar aqui estão no OWASP Top 10, e se você quiser aulas guiadas em paralelo, nosso curso de ataques a aplicações web explica cada classe passo a passo, no navegador.

Resumo: O OWASP Juice Shop é uma loja web gratuita e propositalmente vulnerável, com 116 desafios de hacking classificados de 1 a 6 estrelas. Rode docker run --rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop, abra http://localhost:3000 e comece encontrando o score board escondido. Termine os desafios de 1 e 2 estrelas antes de partir para os mais difíceis, e mantenha tudo em localhost.

O que é o OWASP Juice Shop?

O OWASP Juice Shop é uma loja online intencionalmente insegura, escrita em JavaScript e TypeScript, que você roda na sua própria máquina para invadir de propósito. Ele cobre todo o OWASP Top 10 e muitas falhas tiradas de aplicações reais, e cada vulnerabilidade é um desafio registrado em um placar embutido. É gratuito e open source, sob a licença MIT.

O projeto existe desde 2014. Foi criado por Bjoern Kimminich, é mantido por voluntários e tem o status de projeto Flagship da OWASP, o selo que a OWASP dá aos seus projetos mais maduros. A versão atual na branch principal do repositório oficial no GitHub é a 20.3.0.

O que o diferencia de aplicações de treino mais antigas é o formato do alvo. O Juice Shop é uma aplicação de página única em Angular que conversa com uma API REST em Node.js, como muitas aplicações web modernas. Você acaba lendo bundles JavaScript, testando endpoints JSON e editando o armazenamento do navegador, o que se parece muito mais com bug bounty de verdade do que enviar um formulário em uma página PHP.

O arquivo de desafios do repositório lista 116, distribuídos em seis níveis de dificuldade:

Dificuldade Desafios O que esperar
1 estrela 13 Explorar, ler o código da página, mudar uma coisa só
2 estrelas 19 Um ataque clássico: injeção de SQL simples, IDOR, XSS
3 estrelas 27 Encadear duas ideias ou usar um proxy
4 estrelas 26 Pesquisa de verdade, um pouco de script
5 e 6 estrelas 31 Difícil. Espere falhar algumas vezes e leia o guia depois

Como instalar o OWASP Juice Shop

Use Docker. O projeto também oferece pacotes prontos e instalação a partir do código-fonte, mas eles exigem uma versão compatível do Node.js (22, 24 ou 26 no momento em que escrevemos), e incompatibilidade de versão é onde os iniciantes perdem a primeira noite. Com o contêiner, são três passos.

  1. Instale o Docker. Docker Desktop no Windows ou no macOS, Docker Engine no Linux. Confira se funciona com docker version.
  2. Inicie o Juice Shop. Rode docker run --rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop. A primeira execução baixa a imagem, o que leva um ou dois minutos.
  3. Abra no navegador. Acesse http://localhost:3000. Você deve ver um banner de boas-vindas e uma grade de produtos cheia de sucos.

A parte 127.0.0.1 desse comando importa. Ela diz ao Docker para aceitar conexões apenas da sua própria máquina. Sem ela, o Docker publica a porta em todas as interfaces de rede, e qualquer pessoa no seu Wi-Fi consegue acessar uma aplicação web feita para ser quebrada.

Duas coisas vão te confundir se ninguém avisar.

  • O banco de dados se apaga a cada reinício. O projeto chama isso de autorrecuperação: se você quebrar alguma coisa, reinicie o contêiner e tudo volta limpo. O seu progresso sobrevive porque o Juice Shop o salva em um cookie do navegador por até 30 dias e o restaura na visita seguinte. As configurações do score board também permitem salvar um arquivo de backup.
  • Alguns desafios aparecem como indisponíveis no Docker. O projeto desativa 17 desafios potencialmente perigosos, como execução remota de código e XXE, quando detecta um contêiner. É um padrão de segurança, não uma instalação quebrada. Definir NODE_ENV=unsafe os reativa, mas você não vai precisar deles por meses.

Alguns desafios também exigem um provedor de IA configurado antes de poderem ser resolvidos, porque têm como alvo um chatbot. Deixe-os para depois.

Não use a demo pública para hackear. O projeto mantém uma instância de demonstração para as pessoas verem a versão mais recente, e o README pede que os visitantes não a ataquem. O Juice Shop também foi feito para um único usuário por instância: se for hackear com amigos, cada pessoa roda o próprio contêiner.

O score board é o seu mapa

O Juice Shop nunca mostra um link para o placar. O menu tem login, carrinho, uma página "Sobre nós" e nada mais que pareça interessante. Encontrar o score board é o primeiro desafio de 1 estrela, e ele ensina o hábito que resolve metade dos outros: o navegador já tem o código, então leia.

Abra as ferramentas de desenvolvedor do navegador (F12), vá até a aba Sources (Depurador no Firefox) e abra o main.js. Ele está minificado, então clique no botão {} para formatá-lo. Pesquise por score e você vai cair em um bloco de definições de rotas do Angular, uma delas chamada score-board. Acesse http://localhost:3000/#/score-board e um banner verde avisa que você resolveu um desafio, junto com uma pequena chuva de confetes.

Essa lista de rotas é um presente. Ela nomeia cada página que os desenvolvedores criaram, inclusive as que eles não linkaram em lugar nenhum. Copie para um arquivo de anotações antes de qualquer outra coisa, porque vários desafios seguintes se resumem a "ir até a página que ninguém linkou".

Depois de chegar ao score board, três recursos facilitam muito a vida:

  • Filtro de dificuldade. Esconda tudo acima de 2 estrelas. Ver 116 desafios de uma vez é o jeito mais rápido de se sentir perdido.
  • Dicas. Cada desafio tem um botão Hints que libera as dicas uma por uma. Use a primeira à vontade. Use a segunda só depois de vinte minutos travado.
  • Hacking Instructor. Os desafios com o ícone de capelo de formatura têm um tutorial interativo que guia você pelo ataque na tela. São onze, incluindo Score Board, DOM XSS e Login Admin. É o começo mais suave possível.

Se dois ou três desafios parecerem resolvidos ao mesmo tempo, é normal. Você pode fechar de uma vez uma pilha de notificações de "desafio resolvido" segurando Shift enquanto clica no X de qualquer uma delas, o que, convenientemente, também é um desafio de 1 estrela.

Seus 10 primeiros desafios no OWASP Juice Shop

Esta é a ordem que daríamos a um amigo no primeiro dia. Cada desafio ensina uma ideia diferente, e juntos eles cobrem boa parte do OWASP Top 10 em nível iniciante. Tente cada um por quinze minutos antes de ler a solução logo abaixo. É quebrando a cabeça que você aprende.

1. Score Board (1 estrela)

Já explicado acima. Lição: escondido não é o mesmo que protegido. Se o cliente conhece a rota, você também conhece.

2. Error Handling (1 estrela)

Faça a aplicação lançar um erro que ela deveria ter tratado. O jeito mais rápido: acesse um endpoint REST que não existe, como http://localhost:3000/rest/qwertz. Em vez de um 404 educado, você recebe uma página de erro com stack trace e os nomes das bibliotecas que o servidor usa. Lição: mensagens de erro são reconhecimento de graça. Atacantes tiram nomes de frameworks e caminhos de arquivos delas o tempo todo.

3. Privacy Policy e Security Policy (1 e 2 estrelas)

Entre com qualquer conta que você cadastrar e leia a política de privacidade. Depois faça o que um pesquisador cuidadoso faz antes de testar um site: acesse /.well-known/security.txt. Esse arquivo é um padrão real que diz aos pesquisadores como reportar falhas. Lição: em um programa de verdade, leia as regras e o contato de divulgação antes de enviar qualquer payload.

4. Confidential Document (1 estrela)

A página "Sobre nós" tem um link para os termos de uso em /ftp/legal.md. Apague o nome do arquivo da URL e acesse /ftp. O servidor lista a pasta inteira, e acquisitions.md é um documento que a loja nunca quis publicar. Lição: quando você vir um caminho de arquivo, sempre tente a pasta de cima.

5. Zero Stars (1 estrela)

O formulário Customer Feedback não envia enquanto você não escolhe uma nota, então uma avaliação de zero estrelas parece impossível. Escreva um comentário, resolva o captcha e inspecione o botão Submit no DevTools. Ele tem um atributo disabled. Apague esse atributo e clique. O servidor aceita nota zero porque só o navegador estava verificando. Lição: validação no lado do cliente é um recurso de usabilidade, não um controle de segurança.

6. DOM XSS (1 estrela)

Cole isto na caixa de busca e aperte Enter:

<iframe src="javascript:alert(`xss`)">

Uma caixa de alerta aparece. O termo buscado foi escrito na página sem codificação, então o navegador o tratou como HTML. Lição: todo lugar onde o seu input reaparece na página é um lugar para testar cross-site scripting.

💻
Pratique agora: XSS Playground - leve a mesma ideia mais longe em um mural de mensagens que armazena o seu payload, com uma flag para capturar no fim e nada para instalar.

7. Login Admin (2 estrelas)

Este é o clássico bypass de login por injeção de SQL. Na página de login, digite isto como e-mail e qualquer coisa como senha:

' or 1=1--

A aspa simples fecha a string do e-mail na consulta SQL do servidor, or 1=1 torna a condição verdadeira para todos os usuários e -- transforma a checagem de senha em comentário. O banco devolve o primeiro usuário, que por acaso é o administrador. Lição: no momento em que uma aspa simples muda o comportamento da aplicação, você achou algo que vale a pena investigar.

8. Admin Section (2 estrelas)

Lembra da lista de rotas do main.js? Uma delas é administration. Acessar /#/administration como usuário comum devolve um 403. Faça isso logado como o admin do desafio 7 e a página abre, com a lista de todos os usuários cadastrados e todas as avaliações de clientes. Lição: uma falha costuma destravar a próxima. Descobertas reais geralmente são cadeias.

9. Five-Star Feedback (2 estrelas)

Ainda logado como admin, use a página de administração para apagar todas as avaliações de 5 estrelas. É um desafio pequeno, mas mostra o que um atacante faz depois de conseguir acesso de administrador: prejudicar o negócio, em silêncio.

10. View Basket (2 estrelas)

Entre com a sua conta e coloque um produto no carrinho. Abra o DevTools, vá em Application, depois Session Storage, e encontre um valor chamado bid, o ID do seu carrinho. Mude o número em uma unidade e recarregue a página do carrinho. Agora você está vendo o carrinho de outra pessoa. Isso é um IDOR, uma referência direta insegura a objeto, e caçadores de bug bounty adoram essa classe de falha porque ela não exige nenhuma ferramenta especial. Lição: se um ID é um número, tente o número seguinte.

💻
Pratique agora: IDOR Explorer - altere IDs numéricos em um app de compartilhamento de arquivos até chegar a um documento que não é seu. O mesmo instinto do View Basket, em um lab que roda no navegador.

São dez desafios, e você já passou por controle de acesso quebrado, injeção, XSS, configuração incorreta de segurança e exposição de dados sensíveis. A maioria dos iniciantes leva duas ou três noites para chegar até aqui, o que é um bom ritmo.

Ferramentas para adicionar depois da primeira noite

Tudo o que vimos até aqui só precisa de um navegador. Perto do nível de 3 estrelas, você vai começar a sentir os limites do DevTools, e duas ferramentas resolvem isso.

  • Um proxy de interceptação. O Burp Suite Community Edition ou o OWASP ZAP fica entre o seu navegador e o Juice Shop e permite pausar, editar e repetir cada requisição. Muitos desafios de 3 estrelas, como fazer um pedido com quantidade negativa, ficam bem mais fáceis quando você consegue editar o corpo JSON antes de ele chegar ao servidor. Escolha um e fique com ele. Nós escolheríamos o Burp, o padrão do mercado para testes web.
  • A própria API REST. O front-end do Juice Shop chama endpoints como /api/Products e /rest/products/search?q=. Abra-os direto no navegador ou com curl. Muitos desafios são mais fáceis de resolver pela API do que pela interface bonita, e isso vale também para alvos reais.

Na prática, quando alguém trava no Juice Shop, raramente é por falta de ferramenta. É porque pulou a etapa chata de anotar as coisas. Mantenha um arquivo com cada rota, endpoint, e-mail de usuário e mensagem de erro que você encontrar. Nos desafios de 3 estrelas, esse arquivo faz metade do trabalho.

Modo CTF do Juice Shop: sua competição de treino

Se o seu objetivo real é jogar competições de CTF, o Juice Shop tem um recurso que a maioria dos guias ignora. Inicie com a configuração ctf e cada desafio resolvido mostra um código de flag que você pode enviar a um placar, exatamente como em um CTF no estilo jeopardy:

docker run -d -e "NODE_ENV=ctf" -p 127.0.0.1:3000:3000 bkimminich/juice-shop

O modo CTF também esconde as dicas e a faixa do GitHub, então a experiência fica menos parecida com um tutorial e mais parecida com uma competição. Se você perder uma flag, clique no rótulo "solved" no score board para mostrar a notificação de novo.

Para organizar um evento para um clube, uma turma ou um grupo de amigos, a ferramenta juice-shop-ctf-cli do projeto (npm install -g juice-shop-ctf-cli) gera um arquivo de importação para CTFd, FBCTF ou RootTheBox, com cada desafio, categoria e pontuação já preenchidos. Cada jogador ainda precisa da própria instância do Juice Shop, e todas as instâncias precisam compartilhar a mesma chave secreta, definida pela variável de ambiente CTF_KEY, para que as flags batam. Os detalhes estão no capítulo de CTF do guia oficial.

Gostamos disso como primeira competição por um motivo simples. O primeiro CTF ao vivo de um iniciante costuma dar errado: os desafios são difíceis demais, o relógio está correndo e ninguém explica nada. Um CTF de Juice Shop com amigos mantém a pressão do placar e o ritual de enviar flags, enquanto os alvos ficam em um nível que você consegue resolver. Faça isso uma vez e o seu primeiro evento de verdade vai parecer familiar.

Quando você travar: dicas, guia e soluções

O Juice Shop vem com um livro oficial gratuito, Pwning OWASP Juice Shop, que você pode ler online ou baixar em PDF. A Parte II explica cada categoria de vulnerabilidade com dicas. O apêndice traz uma solução passo a passo para cada desafio.

Esse apêndice é tão útil quanto perigoso. Leia uma solução cedo demais e você aprende a resposta de um enigma em vez da forma de pensar que resolve os dez seguintes. Uma regra que funciona: antes de abrir uma solução, anote três coisas que você tentou e por que cada uma falhou. Se não conseguir listar três, você ainda não tentou o bastante. Se conseguir, leia a solução e depois refaça o desafio do zero sem olhar.

Para ver onde o Juice Shop se encaixa, nosso tutorial do DVWA cobre o outro alvo local clássico. O DVWA mostra o código PHP vulnerável de cada módulo, o que o torna melhor para entender a causa raiz. O Juice Shop esconde as falhas e obriga você a encontrá-las, o que o torna um treino melhor para testes reais. Fazer os dois é o melhor começo gratuito em segurança web.

O que o Juice Shop não vai te ensinar

O Juice Shop é uma aplicação web, e só uma aplicação web. Você não vai mexer com escalonamento de privilégios no Linux, varredura de rede, Active Directory nem exploração de binários. Competições de CTF de verdade têm categorias para tudo isso, então trate o Juice Shop como a sua trilha web, não como todo o seu plano de estudos.

Alguns desafios também são bobos de propósito. O score board os marca como Shenanigans ou Contraption, o que significa que estão ali pela diversão, não pelo realismo. Pode jogar, mas não meça o seu progresso por eles.

Por fim, você sempre sabe que existe uma falha. Cada desafio do score board diz que algo está quebrado e mais ou menos onde. Aplicações reais não fazem isso, e o salto de "sei que tem um IDOR em algum lugar" para "será que tem alguma coisa aqui?" é exatamente o que plataformas de labs e programas de bug bounty treinam em seguida.

💻
Pratique agora: Hack the Login - um lab para iniciantes sem score board e sem falha identificada. Só uma página de login, o DevTools do seu navegador e uma flag escondida atrás dela.

Considerações legais e éticas

Lembrete crítico: sempre obtenha autorização escrita e explícita antes de testar qualquer sistema. O seu próprio contêiner do Juice Shop está autorizado por definição. Uma loja online de verdade não está, por mais parecida que seja.

  • Mantenha em localhost. Vincule a porta a 127.0.0.1, como mostrado acima. Um Juice Shop público é um convite aberto para qualquer pessoa rodando um scanner.
  • Nunca teste esses payloads em sites reais. Digitar ' or 1=1-- em um formulário de login que não é seu é invasão de dispositivo informático, crime previsto no artigo 154-A do Código Penal (Lei 12.737/2012), e há leis equivalentes em quase todos os países.
  • Use programas de bug bounty para alvos reais. Eles dão autorização por escrito e um escopo definido. Leia o escopo antes de testar.
  • Deixe a instância de demonstração em paz. Os mantenedores a hospedam para apresentar novas versões, não para ser atacada.

Perguntas frequentes

O OWASP Juice Shop é gratuito?

Sim. O OWASP Juice Shop é open source sob a licença MIT, e o guia oficial, Pwning OWASP Juice Shop, pode ser lido online ou baixado de graça. Você só precisa de um computador que rode Docker ou Node.js.

Quantos desafios o OWASP Juice Shop tem?

O arquivo de desafios do repositório atual lista 116, classificados de 1 a 6 estrelas. Em um contêiner Docker, 17 desafios potencialmente perigosos ficam desativados por padrão e alguns outros exigem um provedor de IA, então você vai ver alguns marcados como indisponíveis.

Como encontrar o score board do Juice Shop?

Abra o DevTools, procure o main.js na aba Sources, formate o arquivo e pesquise por "score". A rota se chama score-board, então acesse http://localhost:3000/#/score-board. Encontrá-lo resolve o primeiro desafio.

Qual é o login de admin do Juice Shop?

O caminho pensado para iniciantes é a injeção de SQL: digite ' or 1=1-- como e-mail e qualquer senha. Isso resolve o desafio Login Admin. Entrar com a senha real do admin, sem injeção, é outro desafio de 2 estrelas chamado Password Strength.

O OWASP Juice Shop é bom para iniciantes?

Sim, desde que você comece pelos desafios de 1 e 2 estrelas e use os tutoriais do Hacking Instructor. No começo, um navegador basta. Pular direto para desafios de 4 estrelas é o jeito mais comum de iniciantes desistirem.

Dá para usar o Juice Shop em um CTF?

Sim. Rode com NODE_ENV=ctf e cada desafio resolvido gera um código de flag. A ferramenta juice-shop-ctf-cli exporta os desafios para CTFd, FBCTF ou RootTheBox para você hospedar uma competição completa, com uma instância do Juice Shop por jogador.

Seus próximos passos

O OWASP Juice Shop é o jeito gratuito mais divertido de aprender hacking web: um comando Docker, um score board escondido e mais de cem falhas organizadas por dificuldade. Encontre o score board hoje à noite, termine os dez desafios acima nesta semana e rode o modo CTF com um amigo assim que a coluna de 2 estrelas estiver toda verde.

Quando quiser alvos que não dizem onde está a falha, experimente o Hack the Login ou o IDOR Explorer, os dois rodando no navegador, sem nada para instalar. Nosso curso de ataques a aplicações web cobre em ordem cada classe de vulnerabilidade deste artigo, e o plano gratuito da HackerDNA não pede cartão de crédito para começar.

HackerDNA Team

Equipe HackerDNA

Escrito pela equipe HackerDNA - profissionais de cibersegurança que criam labs práticos de hacking e conteúdo educativo para ajudar você a desenvolver habilidades reais em segurança.

Conhecer a Equipe

Pronto para colocar isso em prática?

Pare de ler, comece a hackear. Máquinas reais, no seu navegador, grátis.

Comece a Hackear Grátis
33.000+ Hackers Labs reais Grátis
Comece Grátis ou resolva o hack de hoje, sem conta