Examiner les services web avec curl dans Kali

WiresharkBeginner
Pratiquer maintenant

Introduction

Les tests web commencent par la compréhension du fonctionnement HTTP ordinaire. Une connexion réussie, un code d'état, les métadonnées d'une réponse et le contenu d'une page apportent chacun une partie différente du tableau.

Ce lab fournit un service web local pour examiner les requêtes GET et HEAD avec curl. Vous lirez ses réponses et préserverez les en-têtes et contenus utiles sans recherche de répertoires par essais, injection ni contournement de l'authentification.

Lire une ressource HTTP et son état

Dans cette étape, vous utiliserez curl pour examiner une ressource HTTP locale et distinguer l'état applicatif d'une connexion réussie.

Entrez dans Kali et sélectionnez l'espace de travail partagé :

kali
cd /home/labex/project

Une URL comme http://127.0.0.1:8080/scope.txt identifie un schéma (http), un hôte (127.0.0.1), un port facultatif (8080) et un chemin (/scope.txt). L'hôte et le port choisissent le service ; le chemin choisit une ressource dans ce service.

Curl effectue des requêtes vers des URL. Sa méthode HTTP par défaut est GET, qui demande une représentation d'une ressource. Demandez la page d'entraînement :

curl http://127.0.0.1:8080/

Le corps de la réponse est une page HTML contenant le titre Kali Training Welcome. Curl affiche le corps sous forme de texte ; il ne rend pas la page comme un navigateur web.

L'option -i inclut les en-têtes de réponse dans la sortie affichée. Examinez la ressource de périmètre :

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

La ligne d'état indique 200 OK, suivie des en-têtes, d'une ligne vide et du corps Authorized local training only. Les en-têtes HTTP décrivent la réponse ; le corps transporte son contenu.

Demandez un chemin que le serveur fourni ne propose pas :

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

Cette requête renvoie 404 Not Found avec un corps court. La connexion TCP et l'échange HTTP ont tout de même réussi ; l'application signale que la ressource demandée n'existe pas. Curl sans option d'échec selon l'état peut se terminer avec succès pour un HTTP 404 ; lisez donc l'état de la réponse au lieu de supposer que toute requête terminée correspond à une ressource valide.

-o écrit le corps dans un fichier nommé. -s masque l'indicateur de progression et -S affiche toujours une erreur si un transfert échoue ; les deux se combinent en -sS. Enregistrez le texte du périmètre :

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

Résultat attendu :

Authorized local training only.

Vous avez enregistré le corps de la réponse plutôt qu'une description saisie à la main.

Enregistrer les en-têtes de réponse séparément du corps

Dans cette étape, vous comparerez GET et HEAD et préserverez les en-têtes du serveur et la page dans des fichiers distincts.

L'option -I (I majuscule) demande à curl d'envoyer une requête HEAD. HEAD demande les métadonnées de réponse sans transférer le corps de la ressource :

curl -I http://127.0.0.1:8080/

Repérez 200 OK, Content-Type: text/html et l'en-tête du site d'entraînement. La réponse n'inclut pas le corps HTML. Un en-tête de longueur de contenu peut néanmoins décrire la taille du corps GET correspondant.

Utilisez GET lorsque vous avez besoin du contenu réel. L'option -D de curl écrit les en-têtes de réponse dans le fichier nommé ensuite et -o écrit le corps dans un autre fichier :

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

Lisez les métadonnées enregistrées :

cat response-headers.txt

Elles doivent inclure un état de réussite, un type de contenu HTML et X-Training-Site: guided-web. Les champs du serveur et de la date peuvent varier.

Lisez le corps séparément :

cat page.html

Contenu attendu :

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

Les en-têtes et le corps répondent à des questions différentes : les premiers décrivent comment le serveur a répondu, tandis que le second contient la ressource demandée. Les séparer facilite les comparaisons et traitements de texte ultérieurs.

Résumé

Vous avez interprété les composants d'URL, effectué des requêtes GET et HEAD, distingué l'état HTTP d'une connexion réussie et examiné les en-têtes et le corps. Vous avez enregistré séparément les métadonnées de réponse et le contenu de page d'origine pour une analyse ultérieure.