Alura > Cursos de Cibersegurança > Cursos de Red Team & Pentest > Conteúdos de Red Team & Pentest > Primeiras aulas do curso Aplicações web para pentest: funadmentos de protocolos, HTML, JavaScript e arquitetura

Aplicações web para pentest: funadmentos de protocolos, HTML, JavaScript e arquitetura

Entendendo como a Web funciona - Apresentação

Apresentando a instrutora e o curso

Olá, estudante. Espero que esteja bem. Muito prazer, me chamo Amanda Zavan Mendes. Vou iniciar fazendo minha autodescrição.

Audiodescrição: Eu sou uma mulher branca, de olhos e cabelos castanho-escuros, com cabelos longos e soltos. Visto um moletom e uma blusa preta. Ao fundo, há a parede do meu escritório com luzes nas cores da Alura: roxo e azul.

Eu serei a sua instrutora durante todo o curso Aplicações web para pentest: analisar protocolos, HTML, JavaScript e arquitetura, e nosso principal objetivo será compreender como a aplicação web funciona internamente e identificar, sob a perspectiva de segurança, onde podem existir os principais pontos de interesse para a realização de um teste de intrusão, comumente chamado de Pentest (teste de intrusão).

Falando um pouco sobre mim, quem é Amanda Zavan Mendes? Eu sou especialista em Application Security (segurança de aplicações) e já atuei como especialista em segurança ofensiva. Tenho formação em Análise e Desenvolvimento de Sistemas (FUSTEC), Segurança da Informação e Sistemas de Informação. Sou pós-graduada em segurança ofensiva e operações de Red Team (equipe de ataque) e estou finalizando o MBA (Master of Business Administration) em Cyber Security Governance (governança de segurança cibernética).

Justificando o estudo de aplicações web para pentest

Como primeira provocação: por que precisamos estudar aplicações web se não necessariamente vamos desenvolver uma aplicação? Por que precisamos saber como funcionam os métodos HTTP (Protocolo de Transferência de Hipertexto), o que é o JavaScript (JavaScript) e como esses elementos operam?

Antes de identificarmos uma vulnerabilidade, o ponto principal é entender como a aplicação funciona. Essa é uma premissa que enfatizamos no dia a dia de trabalho: quanto mais conhecemos o sistema e a aplicação com a qual estamos lidando, maiores são as chances de mapearmos a superfície de ataque de forma eficaz.

Utilizamos uma analogia concreta: entender profundamente como funciona uma aplicação web é análogo a dirigir. Como dirigir sem saber onde fica o freio? Como ligar o carro? Sabemos que cada montadora e cada empresa projeta o veículo de forma diferente. Os componentes são básicos, mas, dependendo do modelo, podem estar em lugares distintos. Quando conhecemos o sistema, temos domínio sobre onde estão os elementos e como lidar com eles.

Ir mais preparades e com maior confiança para realizar uma atividade aumenta as chances de sucesso. Com o Pentest (teste de invasão) não é diferente. Embora as aplicações variem, há componentes comuns a todas elas. Quanto mais conhecermos o sistema e a aplicação que estivermos testando, maiores serão as chances de conseguirmos mapear corretamente as vulnerabilidades. Não podemos testar o que não entendemos. Por isso, o conhecimento de HTTP, HTML, JavaScript, APIs (interfaces de programação de aplicações), autenticação e arquitetura é a base para realizarmos um Pentest Web (teste de invasão em aplicações Web) de forma estruturada.

Ao conhecermos esses componentes, atuamos com segurança, como quem entra em um carro, coloca o cinto, sabe onde liga, onde troca marcha, como o carro funciona e onde estão os componentes. Assim, realizamos uma “viagem” muito melhor e chegamos ao destino com segurança. O mesmo vale para o Pentest (teste de invasão).

Apresentando os objetivos de aprendizagem

O que vamos aprender

Ao final deste conteúdo, nós seremos capazes de:

Esses conhecimentos formarão a base para todas as próximas etapas da carreira de Pentest (teste de invasão) que formos realizar. Vamos nessa jornada em conjunto, e temos certeza de que, ao final deste curso, estaremos com a preparação necessária para entender corretamente como cada um desses componentes funciona.

Entendendo como a Web funciona - Entendendo o modelo cliente-servidor

Apresentando a visão geral da web e o modelo cliente-servidor

Vamos iniciar o primeiro conteúdo, que será um overview (visão geral) de como a web (rede mundial) funciona. O que é o modelo cliente-servidor e para que ele serve?

Uma aplicação web normalmente envolve dois componentes principais. Nós temos o cliente, que é, por exemplo, o navegador, ou alguma outra aplicação que inicia a comunicação. E nós temos o servidor, responsável por receber requisições, processar regras de negócio e devolver as respostas ao cliente.

Exemplos de cliente:

Do lado do servidor, há também diversos tipos de processamento que ele pode realizar. Nós não vamos detalhar cada um deles agora, mas explicaremos brevemente o ciclo de passos: o cliente inicia a requisição; o servidor processa a solicitação feita pelo cliente; em seguida, o servidor retorna a resposta ao cliente.

Contextualizando para penteste

Para uma pessoa pentester (profissional de testes de invasão), isso é extremamente importante, porque essa interação entre cliente e servidor representa uma das principais superfícies de teste. Muitas vezes, somente ao observarmos atentamente a requisição enviada e a resposta recebida, já conseguimos inferir diversas informações sobre a aplicação: às vezes a versão no servidor, às vezes alguma tecnologia que está sendo usada por baixo dos panos.

A partir disso, conseguimos obter o primeiro fingerprint (impressão digital), a primeira visão do que estamos lidando. Em alguns casos, conseguimos identificar possíveis vulnerabilidades e caminhos para termos o nosso initial foothold (acesso inicial), obtendo a primeira entrada na aplicação.

Ilustrando com a analogia do restaurante

Sempre gostamos de trazer uma analogia para explicar essa interação, pois consideramos que fica mais fácil quando trazemos para a realidade algo que pode ser um pouco intangível no início do estudo do modelo cliente-servidor. Vamos imaginar que esse modelo é como o funcionamento de um restaurante.

Pense que o cliente é você sentado à mesa com um cardápio em mãos. É possível escolher o que se deseja pedir, mas não há permissão para entrar na cozinha e preparar a própria comida, pois estamos em um restaurante. Esse é o trabalho da cozinha e da gerência, que, no nosso caso, corresponde ao servidor.

O servidor é a área restrita do restaurante, onde os ingredientes ficam guardados, as receitas são preparadas e a gerência aprova ou nega certas ações.

Ao pensarmos nesse fluxo de comunicação e trazermos a analogia para três passos, teríamos, por exemplo, o início da requisição HTTP do cliente: fazemos um pedido, chamamos o garçom e dizemos “garçom, queremos este prato específico”. Na web (rede), isso corresponde ao navegador enviando a mensagem — a requisição HTTP — e informando ao servidor o seguinte: “Servidor, queremos acessar tal recurso; queremos acessar a página inicial deste site”.

O servidor, por sua vez, processa a solicitação. Na analogia do restaurante, o garçom leva o pedido para a área interna, onde o servidor entra em ação executando algumas tarefas. Por fim, o pedido é retornado à mesa, se houver permissão para isso.

Se a página web carregou completamente, é sinal de que o prato chegou correto, exatamente conforme o pedido. Se não houver autorização para acessar determinada página, é como se o garçom retornasse dizendo: “Desculpe, acabou tal ingrediente” ou “Desculpe, não é possível trazer este prato”.

Conectando a analogia aos conceitos de HTTP

Trazendo essa analogia para um cenário real, conseguimos entender como funciona algo que muitas pessoas vivenciam diariamente. Essa visão é importante para compreendermos depois o que são os headers (cabeçalhos), o que são os métodos, como passamos essas informações e como, às vezes, já inferimos algumas vulnerabilidades apenas pela ausência de certos headers (cabeçalhos). É essencial termos clareza sobre os componentes principais para que tudo funcione.

Nos encontramos na próxima aula, na qual vamos explicar melhor como funcionam os métodos HTTP. Nos vemos lá!

Entendendo como a Web funciona - Explorando métodos HTTP

Apresentando os métodos

Agora que já entendemos como funciona o HTTP e qual é o ciclo de uma requisição dentro do HTTP, vamos analisar os métodos e o que cada um indica, isto é, a intenção de cada requisição.

No canto superior esquerdo do diagrama, o método GET é utilizado quando queremos obter informações, como listar ou consultar dados. Um exemplo é o endpoint (ponto de extremidade) usuarios/123, que representa a consulta dos dados do usuário 123. Quando fazemos um GET, buscamos informações de consulta.

Passando para o lado direito do diagrama, o método POST é utilizado para enviar dados ao servidor. Um exemplo é o endpoint (ponto de extremidade) login. Quando fazemos um POST nesse endpoint (ponto de extremidade), enviamos informações para o servidor processar e encaminhar ao nosso back-end (camada de servidor) da aplicação, que, como vimos na última aula, contém a lógica e as regras de negócio para realizar o comportamento esperado da aplicação.

Seguindo na linha do POST, à direita e abaixo, temos o método DELETE, normalmente utilizado quando queremos remover um recurso. Mantendo o exemplo do endpoint (ponto de extremidade) usuarios/123, enviamos uma requisição para deletar esse usuário específico.

Indo para o lado esquerdo do diagrama, por fim, mas não menos importante, o método PUT é utilizado quando queremos atualizar ou substituir um recurso. Ainda com o exemplo do usuário 123, realizamos um PUT no endpoint (ponto de extremidade) de usuários para efetuar uma alteração nesse recurso.

Enviando dados no corpo da requisição

Tanto o método POST (criação) quanto o método PUT (atualização/substituição) costumamos enviar argumentos, parâmetros, no body (corpo da requisição), que são exigidos. Por exemplo, no POST de login (início de sessão), pode haver um campo de pessoa usuária, um campo de username (nome de usuário), e-mail e um campo de senha. Nós enviamos essas informações na requisição para que o servidor, por sua vez, as encaminhe para a aplicação, que terá toda a lógica de processamento para realizar a autenticação dessa pessoa usuária.

Com o método PUT (atualização/substituição), ocorre o mesmo: ao atualizar ou substituir um recurso, normalmente também enviamos algum argumento, algum parâmetro no body (corpo da requisição).

Aplicando os métodos em pentest

Por que esses quatro métodos são tão importantes para nós no cenário de pentest (teste de intrusão)? Como dissemos, vamos identificar funcionalidades existentes. Conseguimos distinguir quais operações permitem leitura e quais permitem escrita. Vamos encontrar endpoints (pontos de extremidade) muito importantes. Também vamos mapear possíveis pontos de controle de autorização e identificar operações que precisam de autenticação.

É muito comum, em cenários de APIs (Interfaces de Programação de Aplicações), termos um grande número de endpoints diferentes, e cada um deles aceita diferentes tipos de métodos para realizar operações distintas. É comum que um endpoint esteja com controle de autenticação e nós não consigamos realizar, por exemplo, uma ação de escrita. Porém, às vezes, um endpoint tão importante quanto, crítico para a API, está sem autenticação. Nesses casos, conseguimos, como pessoa não autenticada, realizar ações utilizando essa API.

Por isso, é fundamental, como profissionais de pentest (teste de intrusão), entender cada um desses métodos, para que servem e como funcionam na prática, para conseguirmos ter uma visão mais ampla do que pretendemos testar.

[♪]

Sobre o curso Aplicações web para pentest: funadmentos de protocolos, HTML, JavaScript e arquitetura

O curso Aplicações web para pentest: funadmentos de protocolos, HTML, JavaScript e arquitetura possui 98 minutos de vídeos, em um total de 34 atividades. Gostou? Conheça nossos outros cursos de Red Team & Pentest em Cibersegurança, ou leia nossos artigos de Cibersegurança.

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

Aprenda Red Team & Pentest acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas