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).
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).
O que vamos aprender
Ao final deste conteúdo, nós seremos capazes de:
HTTP:
HTML e JavaScript:
Arquitetura e ferramentas:
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.
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.
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.
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”.
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á!
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.
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).
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.
[♪]
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:
O Plano Plus evoluiu: agora com Luri para impulsionar sua carreira com os melhores cursos e acesso à maior comunidade tech.
2 anos de Alura
Matricule-se no plano PLUS 24 e garanta:
Jornada de estudos progressiva que te guia desde os fundamentos até a atuação prática. Você acompanha sua evolução, entende os próximos passos e se aprofunda nos conteúdos com quem é referência no mercado.
Back-end, Dados, Front-end, DevOps, Mobile, Gestão & Negócios, UX & Design, Cibersegurança, Cloud, Inteligência Artificial
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
Acesso à inteligência artificial da Alura.
No Discord, você participa de eventos exclusivos, pode tirar dúvidas em estudos colaborativos e ainda conta com mentorias em grupo com especialistas de diversas áreas.
Catálogo de tecnologia para quem é da área de Marketing
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
20% de desconto na Pós Tech
Luri Vision chegou no Plano Pro: a IA da Alura que enxerga suas dúvidas, acelera seu aprendizado e conta também com o Alura Língua que prepara você para competir no mercado internacional.
2 anos de Alura
Todos os benefícios do PLUS 24 e mais vantagens exclusivas:
Acesso ao catálogo da Casa do Código e leitura dentro da plataforma
Modo entrevista - Pratique situações reais e evolua com feedback personalizado
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Para quem quer atingir seus objetivos mais rápido: Luri Vision ilimitado, vagas de emprego exclusivas e mentorias para acelerar cada etapa da jornada.
2 anos de Alura
Todos os benefícios do PRO 24 e mais vantagens exclusivas:
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais de forma ilimitada.
Lives CareerUp: eventos exclusivos com foco em empregabilidade e carreira
Mentorias de carreira: 2 encontros individuais com mentores do Talent Lab
Conecte-se ao mercado com mentoria individual personalizada, vagas exclusivas e networking estratégico que impulsionam sua carreira tech para o próximo nível.