arrow_back

Identificar vulnerabilidades em aplicativos usando o Security Command Center

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Identificar vulnerabilidades em aplicativos usando o Security Command Center

Lab 1 hora 15 minutos universal_currency_alt 1 crédito show_chart Introdutório
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Informações gerais

Introdução

Neste laboratório, você vai usar o recurso Web Security Scanner, um dos serviços integrados do Security Command Center, para verificar vulnerabilidades no aplicativo Python Flask. O Web Security Scanner identifica vulnerabilidades de segurança nos aplicativos da Web do App Engine, Google Kubernetes Engine (GKE) e Compute Engine.

Esse serviço rastreia seu aplicativo, seguindo todos os links no escopo dos URLs iniciais, e tenta acessar o máximo possível de entradas de usuário e manipuladores de eventos. Ele verifica e detecta automaticamente quatro vulnerabilidades comuns, incluindo scripting em vários locais (XSS), injeção flash, conteúdo misto (HTTP em HTTPS) e bibliotecas desatualizadas/desprotegidas.

O Web Security Scanner permite a identificação precoce de vulnerabilidades e oferece taxas muito baixas de falsos positivos. É possível configurar, executar, programar e gerenciar verificações de segurança com facilidade.

Cenário

Logotipo do Cymbal Bank

O Cymbal Bank é um banco americano de varejo com mais de 2.000 filiais em todos os 50 estados. Ele oferece serviços abrangentes de débito e crédito, baseados em uma plataforma de pagamentos robusta. O Cymbal Bank é uma instituição legada de serviços financeiros que promove a transformação digital.

Ele foi fundado em 1920 com o nome de Troxler. O grupo Cymbal adquiriu a empresa em 1975, depois de investir pesado nos caixas eletrônicos patenteados do próprio grupo. Conforme o banco se tornou líder nacional, ele colocou foco estratégico na modernização da experiência do cliente, tanto pessoalmente nas agências quanto digitalmente, usando um app lançado em 2014. O banco emprega 42.000 pessoas em todo o país e, em 2019, registrou US$ 24 bilhões em receita.

O Cymbal Bank tem interesse em desenvolver um novo aplicativo bancário para os clientes corporativos usando a tecnologia Google Cloud. A segurança para aplicativos é algo crítico, e é importante para o CTO saber como o Google Cloud identifica e reduz as vulnerabilidades de segurança de aplicativos. Como Cloud Security Engineer, você tem a tarefa de demonstrar os recursos avançados de verificação de vulnerabilidades de aplicativos do Security Command Center.

Objetivos

Neste laboratório, você vai realizar as seguintes tarefas:

  • Iniciar um aplicativo Python Flask vulnerável em uma instância do Compute Engine

  • Usar o Web Security Scanner para verificar os aplicativos e encontrar vulnerabilidades

  • Corrigir a vulnerabilidade do aplicativo

  • Verificar o aplicativo novamente e conferir se as vulnerabilidades foram resolvidas

Configuração e requisitos

Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.

  1. Faça login no Qwiklabs em uma janela anônima.

  2. Confira o tempo de acesso do laboratório (por exemplo, 1:15:00) e finalize todas as atividades nesse prazo.
    Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.

  3. Quando tudo estiver pronto, clique em Começar o laboratório.

  4. Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.

  5. Clique em Abrir Console do Google.

  6. Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
    Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.

  7. Aceite os termos e pule a página de recursos de recuperação.

Tarefa 1. Iniciar uma máquina virtual e implantar um aplicativo vulnerável

Nesta tarefa, você vai configurar a infraestrutura para demonstrar uma vulnerabilidade de aplicativo para o CTO do Cymbal Bank. Mais especificamente, você vai implantar uma máquina virtual, conseguir o código do aplicativo e introduzir uma vulnerabilidade que será detectada pelo Web Security Scanner. Este aplicativo é um formulário simples que recebe a entrada de um usuário e a envia sem alterar nada.

  1. Na barra de título do console do Google Cloud, clique em Ativar o Cloud Shell (Ícone "Ativar Cloud Shell"). Caso solicitado, clique em Continuar.

  2. Crie um endereço IP estático que será usado para verificar um aplicativo da Web vulnerável:

gcloud compute addresses create xss-test-ip-address --region=us-central1
  1. Execute este comando para gerar o endereço IP estático que você acabou de criar:

gcloud compute addresses describe xss-test-ip-address \ --region=us-central1 --format="value(address)"
  1. Copie o endereço IP (uma única linha da saída) e salve em um bloco de notas.

  2. Execute este comando para criar uma instância VM e executar o aplicativo vulnerável.

gcloud compute instances create xss-test-vm-instance \ --address=xss-test-ip-address --no-service-account \ --no-scopes --machine-type=e2-micro --zone=us-central1-b \ --metadata=startup-script='apt-get update; apt-get install -y python3-flask'

O script de inicialização vai instalar o python-flask, um framework de aplicativos da Web, que é usado para executar um aplicativo Python simples que demonstra a vulnerabilidade de scripting em vários locais (XSS), que é uma vulnerabilidade comum de segurança de aplicativos da Web.

  1. Abra uma regra de firewall para o Web Security Scanner acessar o aplicativo vulnerável. Observe os intervalos de origem de onde o Web Security Scanner verifica os aplicativos.

gcloud compute firewall-rules create enable-wss-scan \ --direction=INGRESS --priority=1000 \ --network=default --action=ALLOW \ --rules=tcp:8080 --source-ranges=0.0.0.0/0

Selecione Verificar meu progresso para conferir o objetivo. Crie a VM com as configurações que quiser

  1. Abra o menu de navegação e selecione Compute Engine > Instâncias de VM.

  2. E no botão SSH ao lado da instância:

Botão SSH no console do Cloud

Uma nova janela será aberta com a conexão SSH para sua instância de VM.

  1. Na janela SSH (não no Cloud Shell), execute este comando para fazer o download e extrair os arquivos de aplicativos da Web vulneráveis:

gsutil cp gs://cloud-training/GCPSEC-ScannerAppEngine/flask_code.tar . && tar xvf flask_code.tar
  1. Agora execute este comando para implantar o aplicativo:

python3 app.py
  1. Logo depois, você vai receber uma mensagem indicando que o aplicativo está instalado em execução:

* Serving Flask app "app" (carregamento lento) * Environment: production ALERTA: este é um servidor de desenvolvimento. Não use em uma implantação de produção, prefira um servidor WSGI de produção. * Debug mode: off * Running on http://0.0.0.0:8080/ (Pressione CTRL+C para sair)
  1. Encontre o endereço IP estático da VM que você havia copiado no seu bloco de notas.

  2. Substitua YOUR_EXTERNAL_IP no campo URL abaixo pelo endereço IP e abra o URL em uma nova guia do navegador:

http://<YOUR_EXTERNAL_IP>:8080
Observação: também é possível encontrar o endereço IP externo no console do Google Cloud, onde está listado como um campo associado à sua instância de VM.
  1. Com isso, vai aparecer o portal do banco corporativo Cymbal Bank com um formulário da Web.

  2. No formulário da Web, insira esta string:

<script>alert('This is an XSS Injection')</script>
  1. Agora, pressione o botão POST.

A seguinte janela de alerta será exibida:

Janela de alerta no navegador

Esta é uma vulnerabilidade comum em aplicativos da Web: uma vulnerabilidade de scripting em vários locais. O scripting em vários locais (XSS) é uma vulnerabilidade que permite que invasores executem scripts maliciosos nos navegadores dos usuários no contexto do aplicativo. O navegador interpreta uma string como um JavaScript legítimo e a executa.

Um invasor que usa um bug XSS para injetar JavaScript em uma página HTML consegue acesso quase ilimitado às sessões conectadas das vítimas que visitam a página: eles podem roubar dados do usuário, fazer adulterações, alterar as configurações de privacidade ou segurança ou, até mesmo, alterar completamente a aparência e o funcionamento do produto. Ou ainda pior, uma vulnerabilidade XSS em um aplicativo, por mais irrelevante que pareça, pode comprometer outro conteúdo dentro do mesmo domínio.

Esta é uma das muitas vulnerabilidades de aplicativos que o Web Security Scanner pode ajudar a identificar.

Selecione Verificar meu progresso para conferir o objetivo. Faça o download dos arquivos de aplicativos da Web vulneráveis na VM

Tarefa 2: Verifique o aplicativo com o Web Security Scanner

Agora que iniciamos nosso aplicativo vulnerável, chegou a hora de demonstrar as habilidades do Web Security Scanner para o CTO. Nesta tarefa, você vai configurar e definir uma verificação do aplicativo para encontrar vulnerabilidades de segurança.

  1. Volte para a guia do navegador que exibe o console do Cloud.

  2. Abra o menu de navegação e selecione Segurança > Web Security Scanner.

  3. Clique em Ativar API para ativar a API Web Security Scanner.

Depois de ativado, será redirecionado para a página do Web Security Scanner.

Selecione Verificar meu progresso para conferir o objetivo. Ative a API Web Security Scanner

  1. Clique em Criar verificação.

  2. O campo de URLs iniciais precisa ser pré-preenchido com seu endereço IP estático.

  3. Adicione o número da porta 8080 para que o URL inicial se pareça com este:

http://<EXTERNAL_IP>:8080
  1. Revise os campos restantes na tela Criar nova verificação:
  • Autenticação: uma propriedade que pode ser usada para dar credenciais de aplicativo para permitir que o verificador se autentique em um app durante a digitalização.
  • Programar: uma propriedade que pode ser usada para programar verificações para serem executadas automaticamente.
  • Exportar para o Security Command Center: uma propriedade que permite exportar automaticamente as configurações de verificação e os resultados (após a conclusão) para o Cloud Security Command Center.
  1. Verifique se a Autenticação ainda está definida comoNenhum e se Programar está como Nunca.

  2. Clique em Mostrar mais para investigar as configurações restantes.

  3. Clique em Salvar para criar a verificação.

Observação: isso cria a verificação, mas ainda não a executa. Ela precisa ser executada manualmente, já que você ainda não criou uma programação.
  1. Clique em Executar para começar a verificação
Observação: por conta do número de testes possíveis, a verificação pode demorar um pouco mais 10 minutos.
  1. Retorne à sessão SSH em outra janela.

Se a sessão expirou, execute este comando para reiniciar o aplicativo:

python3 app.py

Na janela SSH, você vai encontrar logs gerados semelhantes ao exemplo abaixo. Este é o Web Security Scanner testando todas as URLs possíveis para potenciais vulnerabilidades:

34.29.3.21 - - [23/Mar/2023 23:30:41] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:06] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:07] "GET /favicon.ico HTTP/1.1" 404 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "POST / HTTP/1.1" 302 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /output HTTP/1.1" 200 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /favicon.ico HTTP/1.1" 404 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "POST / HTTP/1.1" 302 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "GET /output HTTP/1.1" 200 -

Você pode encontrar log statements com estes códigos de status HTTP:

  • 200: uma solicitação bem-sucedida, onde o servidor HTTP respondeu com uma resposta OK.
  • 302: indica que um recurso está temporariamente localizado em outro lugar de acordo com o cabeçalho "Localização".
  • 404: indica que um ou mais recursos não foram encontrados.

Confira este documento para mais informações sobre o status HTTP e códigos de erro.

Enquanto a verificação é executada, fique à vontade para acessar as guias Resultados, URLs rastreados e Detalhes. Você também pode conferir este vídeo de apresentação ou este vídeo de verificação de vulnerabilidades para saber mais sobre o Web Security Scanner.

  1. Quando a verificação terminar, a guia Resultados vai indicar as vulnerabilidades em vários locais.
Resultados do Web Security Scanner com vulnerabilidades

O Web Security Scanner conseguiu verificar todos os URLs iniciais e detectar as vulnerabilidades XSS no aplicativo do Cymbal Bank. A capacidade de automatizar a detecção dessas vulnerabilidades críticas é um grande benefício para organizações preocupadas com a segurança, como o Cymbal Bank. Agora você vai corrigir a vulnerabilidade no código do aplicativo do Cymbal Bank e testar novamente.

Selecione Verificar meu progresso para conferir o objetivo. Execute uma verificação do Web Security Scanner e detecte vulnerabilidades no aplicativo

Tarefa 3. Corrija a vulnerabilidade e verifique novamente

Agora que você demonstrou que o Web Security Scanner pode detectar uma vulnerabilidade XSS, você precisa corrigir a vulnerabilidade e executar a verificação do aplicativo novamente.

  1. Retorne à janela SSH que está conectada à sua instância de VM.

  2. Pare o aplicativo em execução pressionando CTRL + C.

  3. Edite o arquivo app.py como o editor nano, executando este comando:

nano app.py
  1. localize as duas linhas que definem a string de saída:

# output_string = "".join([html_escape_table.get(c, c) for c in input_string]) output_string = input_string
  1. Remova o símbolo ‘#' da primeira linha e adicione ao início da linha seguinte (verifique se o recuo do código está correto)

Suas últimas linhas precisam ser parecidas com as seguintes:

@app.route('/output') def output(): output_string = "".join([html_escape_table.get(c, c) for c in input_string]) # output_string = input_string return flask.render_template("output.html", output=output_string) Observação: html_escape_table é um dicionário que contém pares um para um de caracteres HTML especiais como "<" para sua representação de texto. Usamos essa tabela para escapar caracteres HTML especiais, para que nosso formulário processe e interprete os envios apenas como texto bruto. Para mais informações clique aqui.
  1. Digite CTRL+X > Y > Enter para salvar as alterações.

  2. Agora, execute novamente o aplicativo:

python3 app.py
  1. Volte ao Console do Google Cloud (a página do Web Security Scanner precisa continuar aberta):

  2. Clique em Executar na parte de cima da página.

Na janela SSH, você vai passar a encontrar logs onde o Web Security Scanner testa os URLs dos aplicativos em busca de possíveis vulnerabilidades:

34.29.3.21 - - [23/Mar/2023 23:30:41] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:06] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:07] "GET /favicon.ico HTTP/1.1" 404 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "POST / HTTP/1.1" 302 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /output HTTP/1.1" 200 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /favicon.ico HTTP/1.1" 404 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "POST / HTTP/1.1" 302 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "GET /output HTTP/1.1" 200 -
  1. Enquanto aguarda os resultados da verificação, faça login no URL http://<EXTERNAL_IP>:8080 usando seu navegador em outra guia.

  2. Você vai encontrar o formulário da Web novamente.

  3. No formulário da Web, insira a mesma string que você usou antes:

<script>alert('This is an XSS Injection')</script>
  1. Agora, pressione o botão POST.

  2. Verifique se desta vez você a string está aparecendo no navegador:

Entrada exibida como string de texto Observação: embora esta técnica funcione neste cenário simples, para a proteção adequada do seu aplicativo da Web, é necessário usar estruturas e técnicas mais avançadas que estão fora do escopo deste laboratório.

Confira os links abaixo para mais recursos (em inglês):
  1. Volte ao console do Google Cloud, para continuar de onde parou na página do Web Security Scanner.

  2. Clique em Executar na parte de cima da página para verificar novamente seu aplicativo.

  3. Logo depois, você vai observar que os resultados não geram mais vulnerabilidades XSS:

Saída do Web Security Scanner sem vulnerabilidades

Parabéns! Deu tudo certo! Você demonstrou ao CTO do Cymbal Bank como identificar e corrigir vulnerabilidades XSS com a poderosa solução Web Security Scanner do Google Cloud.

Selecione Verificar meu progresso para conferir o objetivo. Corrija vulnerabilidades e verifique novamente seu aplicativo usando o Web Security Scanner

Parabéns!

Neste laboratório, você executou as seguintes tarefas:

  • Iniciou um aplicativo Python Flask vulnerável
  • Usou o Web Security Scanner para verificar os aplicativos e encontrar vulnerabilidades
  • Corrigiu a vulnerabilidade do aplicativo
  • Verificou o aplicativo novamente e as vulnerabilidades foram resolvidas

Finalize o laboratório

Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.

Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.

O número de estrelas indica o seguinte:

  • 1 estrela = muito insatisfeito
  • 2 estrelas = insatisfeito
  • 3 estrelas = neutro
  • 4 estrelas = satisfeito
  • 5 estrelas = muito satisfeito

Feche a caixa de diálogo se não quiser enviar feedback.

Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.

Copyright 2020 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.