Table des matières
Curl
Description
Curl, qui est l'acronyme de Client URL, est un outil en ligne de commande polyvalent utilisé à la base pour vérifier la connectivité et la réponse d'un site rapidement. Il est également utilisé pour effectuer des transferts de données à travers divers protocoles. Il offre une gamme complète de fonctionnalités comme le téléchargement de fichiers et la prise en charge de nombreux protocoles comme HTTP, FTP, SCP.
Son utilisation est simple, les utilisateurs spécifient des options directement dans leur terminal et la réponse leur est directement renvoyée sur celui-ci.}}
Installation
Voici le guide d'installation pour la commande Curl :
- Sous Linux (Debian/Ubuntu) :
sudo apt-get install curl
- Sous Linux (Red Hat/Fedora) :
sudo yum install curl
- Sous macOS (via Homebrew) :
brew install curl
- Sous Windows : vous pouvez télécharger l'exécutable Curl depuis le site officiel (https://curl.se/download.html) et suivre les instructions d'installation.
Cas d'utilisation
- Tests de connectivité : pour vérifier la disponibilité et la connectivité d'un serveur ou d'un service web.
- Transfert de fichiers : pour télécharger des fichiers (contenu HTML d'une page web ou télécharger des ressources telles que des images) depuis le web ou les téléverser vers un serveur distant via FTP, SCP, SFTP, etc.
- Appels d'API : pour interagir avec des API REST en effectuant des requêtes HTTP (GET, POST, PUT, DELETE, etc.).
Fonctionnalités principales
- Tests de connectivité : peut être utilisé pour effectuer des tests de connectivité vers des serveurs ou des services web, en vérifiant leur disponibilité et leur latence.
- Transfert de données multi-protocoles : prend en charge une variété de protocoles, notamment HTTP, HTTPS, FTP, SCP, SFTP, LDAP.
- Personnalisation des requêtes : permet de spécifier diverses options pour personnaliser les requêtes, telles que les en-têtes HTTP, les méthodes, les cookies, etc.
- Téléchargement de fichiers : permet de télécharger des fichiers depuis le web vers votre système ou de les envoyer vers un serveur distant.
- Support de proxy : il prend en charge l'utilisation de proxies pour les requêtes, ce qui peut être essentiel dans les environnements réseau complexes.
Exemple d’exploitation ou d’utilisation
Supposons que vous souhaitiez vérifier la connectivité à un serveur web distant. Vous pouvez utiliser Curl pour effectuer un test de connectivité en envoyant une requête HTTP HEAD au serveur :
curl -I https://www.perdu.com
Cela vous donnera des informations sur la réponse du serveur, y compris le code de statut HTTP, les en-têtes de réponse, et le temps de réponse. Si le serveur est accessible, Curl affichera alors ces détails :
HTTP/2 200 date: Tue, 31 Oct 2023 10:16:45 GMT content-type: text/html last-modified: Thu, 02 Jun 2016 06:01:08 GMT etag: W/"cc-5344555136fe9-gzip" cache-control: max-age=600 expires: Tue, 31 Oct 2023 10:26:45 GMT vary: Accept-Encoding,User-Agent server: cloudflare cf-ray: 81eb24f4fab92292-CDG alt-svc: h3=":443"; ma=86400
Dans le cas où vous souhaitez utiliser une méthode de requête HTTP particulière :
Il est possible d’utiliser l’option -X <méthode>, de la façon suivante :
curl -X POST https://www.perdu.com
Ici, nous réalisons une requête HTTP en utilisant la méthode POST, mais nous aurions pu utiliser n’importe quelle autre méthode.
Pour l’exploitation d’une vulnérabilité, imaginons que vous ayez un endpoint spécifique que vous souhaitez tester sur une requête de type POST
Vous pouvez préciser les données que vous souhaitez poster avec l’option -d :
curl -X POST -d "username=alice&password=bob" "https://example.com/login"
Dans cet exemple, nous avons envoyé une requête permettant d’enregistrer l’utilisateur alice avec le mot de passe bob sur l’endpoint /login de example.com.