Repita uma requisição de reserva após encerrar a sessão

CibersegurançaBeginner
Pratique Agora

Introdução

Os membros da Fieldwork Studio podem consultar uma oficina reservada e baixar a confirmação da reserva. A equipe adicionou Sign out this browser. Voltar à página de login parece convincente, mas não comprova se uma sessão capturada anteriormente ainda funciona.

Você usará o Burp Suite Community Edition do Kali como proxy HTTP e Repeater, guardará as requisições originais e testará ambos os recursos protegidos após encerrar a sessão. Sua entrega será uma evidência privada de requisição e resposta e uma breve decisão de aceitação sem senhas. Você avalia a aplicação; não repara seu servidor.

Pressupõe-se apenas que você saiba digitar comandos básicos no terminal e alternar entre abas. O laboratório apresenta respostas HTTP, cookies e os controles do Burp. Todas as identidades e reservas são sintéticas, e o ambiente fornecido é isolado. Use somente a conta fornecida e o alvo do curso. Reserve cerca de 65 minutos, incluindo leitura e erros comuns; esta é uma estimativa do autor, não uma medição de teste com iniciantes.

Estabeleça uma reserva real de membro

Nesta etapa, você estabelecerá o uso normal antes de testar o encerramento de sessão. Abra Auditor, o terminal Kali. Ele começa em /home/labex/project. cat exibe um arquivo de texto. Leia a autorização, a identidade e o endereço do serviço fornecidos:

cat scope.json

A URL base é http://members.test:8080/autumn. Use o nome de usuário morgan e a senha PaperDay!47. Seu membro é Morgan Reed, com a vaga P12 de Printmaking. O ponto de exclamação faz parte da senha; digite-o no formulário do navegador. Não teste outras identidades nem sites externos e não modifique dados, código ou processos do alvo.

Se um espaço de trabalho gráfico exibir Disconnected, clique no botão Reconnect na parte superior. Isso reconecta a janela existente e mantém seus cookies do navegador, requisições do Burp e progresso no alvo.

Abra Burp. O Burp Community já está instalado. No assistente de inicialização, mantenha Temporary project selecionado e clique em Next. Mantenha Use Burp defaults selecionado e depois clique em Start Burp. Se aparecer Burp Suite is out of date, clique em OK para continuar com a versão preparada para o treinamento. Aguarde a janela principal. Um projeto temporário mantém o espaço de trabalho ativo na memória; este curso usa exportações XML explícitas para os arquivos de evidência, em vez de um recurso pago de projeto em disco.

O Burp é um proxy: os navegadores preparados enviam suas requisições HTTP por ele para que você possa inspecionar a comunicação real. No Burp, escolha a aba principal Proxy e a subaba Intercept. O botão deve exibir Intercept is off. Se exibir Intercept is on, clique nele uma vez. A interceptação pausaria as requisições; você quer que elas fluam normalmente enquanto o histórico é registrado.

Mude para a aba Browser A do LabEx. Este é um navegador Chromium preparado dentro do mesmo contêiner de auditoria do Burp. Clique na barra de endereços, digite a URL a seguir e pressione Enter:

http://members.test:8080/autumn/

Leia a página pública das oficinas e escolha View my booking. Preencha Username e Password com as credenciais fornecidas e clique em Sign in. Se o Chromium oferecer salvar a senha, escolha Never. Você deve chegar a Your next day of making, com Morgan Reed, Printmaking e a vaga P12.

Clique em Download booking. O arquivo real fieldwork-booking.csv contém o membro, a oficina e a vaga. A barra de downloads do Chromium na parte inferior mostra o arquivo baixado; Show all abre a lista de downloads. Navegar pelas oficinas públicas, consultar sua reserva e fazer esse download são as funções normais que você preservará.

A reserva confirmada de Morgan Reed em Printmaking com a ação Download booking

Confira o membro, a oficina e a vaga no cartão da reserva antes de baixar.

Uma senha incorreta produz Sign-in unsuccessful, com um link try again. Siga esse link e digite novamente os valores fornecidos. Uma resposta Page not found significa que o caminho está errado; volte à URL base exata acima. Um erro de conexão do navegador significa que nenhuma resposta da aplicação foi obtida: confira a URL, conclua o assistente do Burp e verifique se a interceptação está desativada. Não trate uma falha de conexão como uma recusa de segurança.

Browser B é um perfil de navegador independente para o próximo laboratório; deixe-o sem uso aqui. As duas abas de navegador e Burp são janelas em um contêiner de auditoria, não máquinas virtuais separadas. Alternar entre abas do LabEx não reinicia o alvo nem seu trabalho.

Guarde as requisições originais no Repeater

Nesta etapa, você preservará requisições que já funcionaram. Mude para Burp, selecione Proxy e depois HTTP history. Localize a requisição GET para /autumn/account em members.test:8080. Uma requisição é o que o navegador envia; uma resposta é o que o servidor retorna. GET lê um recurso. HTTP 200 OK significa que esta requisição recebeu uma resposta bem-sucedida.

Clique na linha de conta. No editor de requisições, escolha Raw e localize o cabeçalho Cookie. O login emitiu um cookie de sessão chamado studio_session: o navegador envia esse valor para identificar sua sessão autenticada. A posse do cookie antigo é a condição que você está testando. Apagar um cookie do navegador e tentar uma nova requisição sem cookie responderia a uma pergunta diferente.

Clique com o botão direito na linha de conta e escolha Send to Repeater. O Repeater permite enviar novamente uma requisição guardada e inspecionar a nova resposta. Depois, localize a requisição GET para /autumn/booking.csv, clique nela com o botão direito e escolha Send to Repeater. Se um filtro do histórico ocultar a requisição CSV, clique na barra de filtros acima da tabela e ative Show all; depois feche a caixa de diálogo do filtro e localize o caminho exato novamente. Use o host e o caminho, não apenas a posição da linha.

Escolha a aba principal Repeater. A primeira aba numerada de requisição, 1, é a requisição de conta; 2 é a requisição de reserva, na ordem em que você as enviou. Em 1, confirme que o alvo é http://members.test:8080, que a linha de requisição diz GET /autumn/account HTTP/1.1 e que o cookie original studio_session continua presente. Clique em Send. No painel de resposta, escolha Raw para ler HTTP/1.0 200 OK e o conteúdo da página de reserva.

Selecione 2 e clique em Send. Espere 200 OK, um tipo de conteúdo text/csv e as linhas reais da reserva. A versão HTTP do servidor pode ser diferente da versão da requisição; as observações relevantes são o status e o conteúdo real da reserva do membro.

As duas requisições guardadas devem usar o mesmo cookie de sessão. Compare os valores no Burp sem copiá-los para um relatório. Mantenha essas duas requisições do Repeater inalteradas durante todo o encerramento de sessão: não remova nem substitua seus cookies, não substitua o alvo nem envie uma requisição de encerramento de sessão por essas abas. A referência bem-sucedida delas dá sentido à comparação posterior.

Se você enviou a linha errada do histórico, feche somente essa aba de requisição do Repeater e envie a linha correta. Identifique a requisição correta pelo caminho; os números das abas podem então ser diferentes. Fechar uma aba de requisição é diferente de fechar o Burp ou reiniciar a VM.

Nesta etapa, você distinguirá o encerramento visível de sessão de um navegador da invalidação da sessão no servidor. Mude para Browser A. Na página de reserva, clique em Sign out this browser. O navegador retorna a Welcome back, a página de login.

Essa mudança de página, sozinha, não prova que o servidor parou de aceitar o cookie antigo. Mude para Burp, abra Repeater, selecione sua requisição original de conta e clique em Send novamente. Mantenha seu cookie inalterado. Espere 200 OK e o conteúdo da reserva de Morgan Reed. A sessão antiga ainda concede acesso à conta após o encerramento de sessão.

Selecione sua requisição original de reserva e clique em Send novamente. Espere 200 OK, text/csv e a linha de reserva do mesmo membro. Esta é uma resposta real de download bem-sucedido obtida com o cookie antigo; uma página de navegador que parece indicar sucesso ou um HTTP 200 contendo apenas um formulário de login não comprovaria isso.

Em um encerramento de sessão funcional do navegador atual, ambas as requisições protegidas guardadas deveriam receber 401 Unauthorized, indicando que a aplicação rejeita aquela sessão. Aqui, o servidor ainda a aceita nos dois recursos. Rejeite a alteração de encerramento de sessão com base nas evidências que observou. Você demonstrou esta falha específica de sessão, não todas as possíveis fraquezas da aplicação.

Confirme que o uso comum continua possível. Mude para Browser A, entre novamente com morgan e PaperDay!47, consulte a reserva e clique em Download booking. Isso emite uma nova sessão e mantém o fluxo normal do membro funcionando. Volte a Burp sem substituir os cookies em suas duas requisições originais do Repeater. Suas respostas mais recentes ainda devem ser as respostas posteriores ao encerramento de sessão que você exportará a seguir.

A requisição original de reserva ainda retorna o CSV de Morgan Reed após o encerramento de sessão

Compare o Cookie inalterado no painel Request à esquerda com 200 OK e a linha real do membro no painel Response à direita. Um status de sucesso, sozinho, não provaria acesso a esta reserva.

Se você sobrescrever acidentalmente um cookie original ou fechar ambas as requisições guardadas, repita um teste completo: capture uma nova sessão bem-sucedida nos dois recursos, guarde suas requisições, encerre aquela sessão e repita exatamente essas requisições depois. Um cookie de login novo não substitui o cookie da sessão que você encerrou.

Entregue evidências privadas e uma decisão clara

Nesta etapa, você salvará a evidência HTTP real, mantendo as credenciais fora da avaliação. Mude para Auditor. A evidência de requisição e resposta contém um cookie de sessão utilizável; portanto, restrinja o acesso antes de salvá-la.

umask 077 torna os arquivos e diretórios recém-criados privados para seu usuário. Ele se aplica a esta sessão de terminal, não a todo shell futuro. mkdir -p cria o diretório nomeado, se necessário. chmod 700 concede a seu proprietário acesso de leitura, gravação e entrada no diretório, sem acesso para o grupo ou outros usuários.

umask 077
mkdir -p evidence
chmod 700 evidence

Mude para Burp e selecione a requisição original de conta em Repeater. Confirme que sua resposta atual é a página de reserva 200 OK posterior ao encerramento de sessão. Clique com o botão direito dentro do editor Request e escolha Save item. Isso salva a requisição e a resposta juntas; Copy to file salvaria outro material.

Na caixa de diálogo Select a file, digite este caminho absoluto em File Name:

/home/labex/project/evidence/account-after.xml

Caixa de diálogo Save item com o caminho absoluto da evidência de conta e a opção Base64 marcada

Use o campo File Name próximo à parte inferior; a opção Base64 marcada fica abaixo dele.

Deixe Base64-encode requests and responses marcada e clique em Save. Base64 representa os bytes originais com segurança dentro do XML; não criptografa o cookie. Feche um aviso de sucesso com OK, se aparecer. Repita Save item para a requisição original de reserva, usando:

/home/labex/project/evidence/booking-after.xml

Mude para Auditor. chmod 600 permite apenas ao proprietário ler e gravar cada arquivo. ls -l mostra as permissões; espere -rw------- para os dois arquivos XML.

chmod 600 evidence/account-after.xml evidence/booking-after.xml
ls -l evidence

Escreva a avaliação sem senhas abaixo. > substitui o arquivo nomeado. <<'JSON' inicia um here-document: o shell copia literalmente as linhas seguintes até o JSON de fechamento em sua própria linha. Os valores numéricos de status não recebem aspas; o true do JSON é um valor booleano. Mantenha cookies, senhas e requisições brutas fora deste relatório.

cat > assessment.json <<'JSON'
{
  "decision": "reject",
  "account_after_logout": 200,
  "booking_after_logout": 200,
  "fresh_sign_in_works": true
}
JSON

Leia sua avaliação para detectar erros comuns de digitação:

cat assessment.json

Sua entrega consiste nos dois itens XML privados e nesta avaliação. Os itens preservam requisições com o cookie original e suas respostas reais; o relatório comunica a decisão sustentada pelas evidências sem repetir segredos. A verificação confere essas relações com fatos já existentes no servidor. Ela não cria para você logins, encerramentos de sessão nem tráfego de repetição ausentes e deixa seus arquivos inalterados. Sua requisição comum de preservação da página pública pode acrescentar um registro de acesso.

Se um nome de arquivo estiver errado, repita Save item no caminho absoluto indicado e reaplique chmod 600. Se você mudou de diretório, pwd mostra o diretório atual e cd /home/labex/project retorna ao espaço de trabalho. Não substitua evidências ausentes por uma linha de sucesso escrita à mão ou por uma captura de tela.

Resumo

Você estabeleceu uma referência real de reserva, guardou duas requisições com o cookie original no Burp Repeater, encerrou a sessão e demonstrou que o servidor ainda aceitava ambas as requisições. O retorno de um navegador à página de login não comprovou a invalidação da sessão. Você preservou o fluxo normal e entregou evidências HTTP privadas com uma decisão de rejeição sem senhas.

O próximo laboratório examina uma implantação corrigida. Um navegador independente ajudará a distinguir o encerramento da sessão atual do encerramento desnecessário de todas as sessões do mesmo membro.