Inspecionando serviços web com curl no Kali

WiresharkBeginner
Pratique Agora

Introdução

Os testes web começam pelo entendimento do comportamento HTTP comum. Uma conexão bem-sucedida, um código de estado, metadados de resposta e o conteúdo da página fornecem, cada um, uma parte diferente do cenário.

Este laboratório fornece um serviço web local para que você inspecione solicitações GET e HEAD com curl. Você lerá suas respostas e preservará cabeçalhos e conteúdo úteis sem tentar adivinhar diretórios, fazer injeção nem contornar autenticação.

Leia um recurso HTTP e seu estado

Nesta etapa, você usará curl para inspecionar um recurso HTTP local e distinguir o estado da aplicação do sucesso da conexão.

Entre no Kali e selecione o espaço de trabalho compartilhado:

kali
cd /home/labex/project

Uma URL como http://127.0.0.1:8080/scope.txt identifica um esquema (http), host (127.0.0.1), porta opcional (8080) e caminho (/scope.txt). O host e a porta escolhem o serviço; o caminho escolhe um recurso dentro desse serviço.

Curl faz solicitações a URLs. Seu método HTTP padrão é GET, que pede uma representação de um recurso. Solicite a página de treinamento:

curl http://127.0.0.1:8080/

O corpo da resposta é uma página HTML contendo o título Kali Training Welcome. Curl exibe o corpo como texto; não renderiza a página como um navegador web.

A opção -i inclui os cabeçalhos de resposta na saída exibida. Inspecione o recurso de escopo:

curl -i http://127.0.0.1:8080/scope.txt

A linha de estado informa 200 OK, seguida pelos cabeçalhos, uma linha em branco e o corpo Authorized local training only. Os cabeçalhos HTTP descrevem a resposta; o corpo carrega seu conteúdo.

Solicite um caminho que o servidor fornecido não disponibiliza:

curl -i http://127.0.0.1:8080/missing

Isso retorna 404 Not Found com um corpo curto. A conexão TCP e a troca HTTP ainda tiveram sucesso; a aplicação informa que o recurso solicitado não existe. Curl sem uma opção de falha por estado pode sair com sucesso para um HTTP 404, portanto leia o estado da resposta em vez de presumir que toda solicitação concluída corresponde a um recurso válido.

-o grava o corpo em um arquivo nomeado. -s oculta o medidor de progresso, enquanto -S ainda mostra um erro se uma transferência falhar; elas se combinam como -sS. Salve o texto de escopo:

curl -sS -o scope.txt http://127.0.0.1:8080/scope.txt
cat scope.txt

Saída esperada:

Authorized local training only.

Você salvou o corpo da resposta, em vez de uma descrição digitada manualmente.

Salve os cabeçalhos da resposta separados do corpo

Nesta etapa, você comparará GET e HEAD e preservará os cabeçalhos e a página do servidor como artefatos separados.

A opção -I (I maiúsculo) pede ao curl que envie uma solicitação HEAD. HEAD solicita os metadados da resposta sem transferir o corpo do recurso:

curl -I http://127.0.0.1:8080/

Procure 200 OK, Content-Type: text/html e o cabeçalho do site de treinamento. A resposta não inclui o corpo HTML. Um cabeçalho de comprimento do conteúdo ainda pode descrever o tamanho que teria o corpo GET correspondente.

Use GET quando precisar do conteúdo real. A opção -D do curl grava os cabeçalhos da resposta no nome de arquivo seguinte, e -o grava o corpo em outro arquivo:

curl -sS -D response-headers.txt -o page.html http://127.0.0.1:8080/

Leia os metadados salvos:

cat response-headers.txt

Eles devem incluir um estado de sucesso, o tipo de conteúdo HTML e X-Training-Site: guided-web. Os campos de servidor e data podem variar.

Leia o corpo separadamente:

cat page.html

Conteúdo esperado:

<html><title>Kali Training Welcome</title><body>Local practice site.</body></html>

Cabeçalhos e corpo respondem a perguntas diferentes: os primeiros descrevem como o servidor respondeu, enquanto o segundo contém o recurso solicitado. Mantê-los separados facilita comparações e processamento de texto posteriores.

Resumo

Você interpretou componentes de URL, fez solicitações GET e HEAD, distinguiu o estado HTTP do sucesso de conexão e inspecionou cabeçalhos e corpo. Salvou os metadados originais da resposta e o conteúdo da página separadamente para análise posterior.