Confirme a exposição de diagnóstico com respostas reais

CibersegurançaBeginner
Pratique Agora

Introdução

A Fieldwork Studio oferece oficinas de artesanato abertas ao público. A programação deve ser fácil de consultar e baixar, enquanto os diagnósticos de manutenção devem exigir autorização. Sua tarefa é confirmar quais respostas realmente expõem os dados internos de diagnóstico desta aplicação.

Primeiro, use o site normalmente. Depois, compare três respostas reais e execute uma verificação inicial do Nuclei deliberadamente abrangente. Ao final, você terá conclusões vinculadas às respostas que inspecionou, em vez de tratar cada achado do scanner como um problema confirmado. Todas as configurações e identidades são sintéticas; as requisições HTTP e a execução do scanner são reais.

Você precisa apenas saber digitar comandos básicos no terminal e compreender caminhos. O laboratório explica HTTP, JSON e a saída do scanner à medida que aparecem. O auditor Kali e o alvo são contêineres isolados que compartilham o kernel de uma VM. Teste somente o escopo fornecido, faça apenas requisições de leitura e preserve o site e a programação das oficinas. Reserve cerca de 50 minutos, incluindo leitura e erros comuns; esta é uma estimativa do autor.

Use a programação pública das oficinas

Nesta etapa, você estabelecerá o que deve ser preservado no acesso público normal. Abra Workshops. A página apresenta as oficinas de artesanato da Fieldwork Studio. Siga Get the workshop schedule para baixar fieldwork-schedule.csv. O arquivo contém o nome, o horário e a sala das oficinas Printmaking e Bookbinding. O acesso público a essas informações é intencional.

As oficinas públicas e o download de sua programação

Os dois cartões das sessões e o link verde da programação são o serviço público normal. Preserve as informações reais das oficinas ao avaliar os diagnósticos.

Mude para Auditor, o terminal Kali. Ele inicia em /home/labex/project. A entrada do navegador e este terminal acessam o mesmo serviço de oficinas; não representam máquinas-alvo diferentes.

cat exibe um arquivo de texto. Leia o escopo autorizado antes de enviar verificações de segurança:

cat scope.txt

Somente requisições HTTP GET de leitura às URLs base em targets.txt são autorizadas. Uma URL base identifica um site; a rota de diagnóstico é acrescentada a ela. Exiba a lista:

cat targets.txt

Você deve ver studio, archive e manual sob http://workshop.test:8080/. A porta 8080 identifica o serviço deste curso. Preserve todos os sites, configurações e dados das oficinas. Você está avaliando o acesso, não alterando a aplicação.

Se um caminho relativo de arquivo falhar, use pwd para exibir seu diretório atual e depois retorne com:

cd /home/labex/project

Fechar Auditor ou reconectar-se a ele não recria os sites. Seus arquivos permanecem neste espaço de trabalho.

Leia as respostas antes de decidir

Nesta etapa, você comparará o endpoint de diagnóstico de cada site aprovado. Permaneça em Auditor. HTTP é o protocolo de requisição e resposta usado por este site. curl envia uma requisição e imprime o corpo da resposta. Sua opção -i também imprime os cabeçalhos da resposta, incluindo o status e o tipo de conteúdo.

curl -i http://workshop.test:8080/studio/maintenance/diagnostics

A resposta começa com HTTP/1.0 200 OK. Isso significa que o servidor retornou o recurso solicitado com sucesso; por si só, não comprova um problema de segurança. Content-Type: application/json; charset=utf-8 indica que o corpo é JSON codificado como texto UTF-8. JSON representa valores nomeados entre chaves. Aspas duplas delimitam nomes e valores textuais; um valor numérico não recebe aspas.

O objeto plano contém service, visibility, database_file e request_count. Nesta aplicação, service é workshop-portal, visibility é internal, o arquivo de banco de dados é um caminho absoluto e a contagem de requisições é um inteiro não negativo. O caminho do arquivo vem da configuração do site em execução: a página pública de oficinas e o download CSV leem esse banco de dados SQLite real. SQLite armazena um pequeno banco de dados em um arquivo. A contagem muda conforme chegam requisições. Essa combinação é o contrato de diagnóstico publicado em scope.txt. Não é uma definição universal de vulnerabilidade.

Uma requisição não autenticada recebeu esses valores internos. Observe o cabeçalho X-Audit-Event: o servidor atribui um identificador diferente a cada resposta real. Anote o identificador em um local privado para a avaliação final. Ele é uma evidência que você pode referenciar sem copiar valores internos para seu resumo.

Compare o segundo site:

curl -i http://workshop.test:8080/archive/maintenance/diagnostics

Espere 401 Unauthorized e uma explicação de que uma credencial de manutenção é necessária. Essa recusa é intencional. Você não tem nenhuma credencial no escopo e não deve tentar contorná-la. curl -i pode terminar normalmente exibindo HTTP 401: entregar uma recusa com sucesso é diferente de obter autorização.

Agora inspecione o terceiro site:

curl -i http://workshop.test:8080/manual/maintenance/diagnostics

Ele retorna HTTP 200 e JSON, mas os campos de diagnóstico estão aninhados em um objeto example. Eles documentam um formato de resposta; não são o objeto de diagnóstico real no nível superior deste site. Compare a estrutura e o significado, em vez de simplesmente procurar a palavra internal. Guarde também o identificador de evento desta resposta.

Se você vir 404, compare cuidadosamente a URL com a rota fornecida e repita a requisição corrigida. Could not resolve host ou Failed to connect significa que a requisição não obteve a resposta pretendida; isso não sustenta uma conclusão de segurança ou exposição. Confira a grafia e o nome de host e a porta exatos do curso. Não substitua o alvo por um site público.

Investigue um achado abrangente do Nuclei

Nesta etapa, você verá como uma verificação pode executar corretamente e ainda assim produzir uma conclusão abrangente demais. Permaneça em Auditor. Nuclei é um scanner orientado a templates: um template descreve requisições e as condições das respostas que produzem achados. Um achado significa que essas condições foram atendidas; você ainda deve julgar se elas comprovam o problema que pretendia verificar.

Leia o template inicial preparado:

cat too-broad.yaml

YAML usa indentação para agrupar configurações. Este template inicial envia um GET à rota de diagnóstico de cada URL base e depois verifica somente o status HTTP 200. O marcador {{BaseURL}} é substituído pela URL base aprovada atual. Ele não inspeciona o significado do objeto de diagnóstico.

Execute o template inicial na lista fornecida. -t seleciona um template local; -l lê a lista de alvos; -o salva achados; e -elog salva erros de requisição. -jsonl grava um achado JSON por linha e -ot omite o template codificado dessa saída. As opções de preparação -duc e -ni desativam verificações de atualização e callbacks externos do Interactsh. Nosso template não precisa de nenhum deles. Mantenha essas opções no exercício isolado.

nuclei -t too-broad.yaml -l targets.txt -duc -ni -nc -jsonl -ot -o broad-findings.jsonl -elog broad-errors.jsonl

-nc remove os códigos de cor do terminal. Este comando realiza requisições reais de leitura. Espere achados tanto para studio quanto para manual, pois ambos retornaram 200. A rota protegida archive não corresponde. Uma varredura que não imprime achados não é automaticamente uma verificação negativa concluída.

Leia o log nativo de erros de requisição antes de julgar os resultados:

cat broad-errors.jsonl

Um log vazio significa que nenhum erro de requisição foi registrado nesta execução. Uma falha de conexão ainda pode deixar o status de saída do processo Nuclei em zero; portanto, nem o status de saída nem um arquivo de achados vazio bastam isoladamente. Se o log contiver um erro, corrija o problema no alvo ou na conexão antes de tirar uma conclusão. Guarde a evidência original do erro; use um novo nome de arquivo de saída ao tentar novamente.

Inspecione os achados:

cat broad-findings.jsonl

Cada linha contém uma URL matched-at e a evidência de requisição e resposta. Compare o achado de manual com o exemplo aninhado de documentação que você já leu. Trata-se de um falso positivo para a questão de exposição de diagnóstico que você pretende responder, embora o matcher de status do template inicial tenha funcionado conforme escrito. A resposta de studio atende às condições de exposição definidas.

Essas respostas sintéticas não contêm segredos reais. Em uma avaliação real, os achados brutos podem conter material sensível e devem ser tratados de forma privada. Não os envie a um scanner externo nem os cole em um relatório público.

Salve uma avaliação vinculada às evidências

Nesta etapa, você separará sua conclusão da correspondência abrangente do scanner. Permaneça em Auditor. Crie assessment.json com uma entrada por site. Cada entrada registra o evento da resposta real que você inspecionou e sua conclusão. Use exposed, access-denied e documentation-example para os três resultados ensinados acima.

O bloco a seguir é um here-document completo do shell. cat > assessment.json grava um arquivo; > substitui seu conteúdo. <<'JSON' faz o shell copiar literalmente o texto seguinte até a linha que contém apenas JSON. O delimitador entre aspas impede a expansão pelo shell dentro do texto. Substitua cada valor REPLACE_... por um X-Audit-Event real da resposta de diagnóstico daquele site antes de executar o bloco. Mantenha as aspas duplas e as vírgulas do JSON.

cat > assessment.json <<'JSON'
{
  "studio": {"event_id": "REPLACE_STUDIO_EVENT", "conclusion": "exposed"},
  "archive": {"event_id": "REPLACE_ARCHIVE_EVENT", "conclusion": "access-denied"},
  "manual": {"event_id": "REPLACE_MANUAL_EVENT", "conclusion": "documentation-example"}
}
JSON

Se não guardou um identificador, repita a requisição curl -i daquele site da etapa 2 e use o novo identificador. Repetir uma leitura cria outra resposta real e pode aumentar request_count; isso não repara nem altera a política de acesso do site.

Exiba o arquivo salvo:

cat assessment.json

Se uma aspa, vírgula ou valor de evento estiver errado, repita o here-document completo corrigido. Não copie os valores literais dos marcadores. Entregue assessment.json como um arquivo regular legível neste espaço de trabalho. A verificação compara suas conclusões com respostas existentes; não gera requisições de avaliação ausentes. Ela também não exige que você copie o host de diagnóstico ou o corpo bruto para este pequeno resumo.

Seu resultado confirma a exposição em studio, observa uma recusa real em archive e explica a correspondência enganosa de documentação em manual. Ele não afirma que todas as outras rotas ou vulnerabilidades foram testadas. O próximo laboratório guiado começa um novo cenário e ensina a substituir o matcher abrangente por uma verificação nativa e portátil do Nuclei.

Resumo

Você usou a programação pública das oficinas, inspecionou códigos de status HTTP e a estrutura JSON e confirmou uma exposição de diagnóstico interno. Executou uma verificação inicial real do Nuclei e explicou seu falso positivo de documentação. Sua avaliação vincula cada conclusão a uma resposta existente, mantendo o acesso público normal intacto.