# Guide des commandes `curl` ## Table des matières - [Commandes de base `curl`](#commandes-de-base-curl) - [Authentification](#authentification) - [Envoi de données](#envoi-de-données) - [Gestion des cookies](#gestion-des-cookies) - [Téléchargement de fichiers](#téléchargement-de-fichiers) - [Limiter le débit](#limiter-le-débit) - [Référent et User-Agent](#référent-et-user-agent) - [Utilisation de proxy](#utilisation-de-proxy) - [HTTPS et certificats](#https-et-certificats) - [Résolution DNS et interfaces réseau](#résolution-dns-et-interfaces-réseau) - [FTP](#ftp) - [Techniques de Pentest pour Serveur Web](#techniques-de-pentest-pour-serveur-web) --- ## Commandes de base `curl` ```sh # Télécharger une page web curl http://example.com # Télécharger un fichier et conserver son nom original curl -O http://example.com/file.txt # Télécharger un fichier et le renommer localement curl -o file.txt http://example.com/file.txt # Reprendre un téléchargement interrompu curl -C - -O http://example.com/file.zip # Télécharger un fichier uniquement s'il a été modifié depuis une date spécifique curl -z file.txt http://example.com/file.txt ``` ## Authentification ```sh # Authentification de base curl -u user:password http://example.com ``` ## Envoi de données ```sh # Envoyer des données en POST curl -d "name=value" http://example.com # Envoyer des données en spécifiant la méthode POST curl -X POST -d "name=value" http://example.com # Envoyer des données avec des en-têtes personnalisés curl -H "X-Header: value" http://example.com ``` ## Gestion des cookies ```sh # Envoyer des cookies curl -b "name=value" http://example.com # Enregistrer des cookies dans un fichier curl -c cookies.txt http://example.com # Utiliser des cookies depuis un fichier curl -b cookies.txt http://example.com ``` ## Téléchargement de fichiers ```sh # Télécharger un fichier avec un formulaire curl -F "name=@file.txt" http://example.com ``` ## Limiter le débit ```sh # Limiter le débit de téléchargement curl --limit-rate 100K http://example.com ``` ## Référent et User-Agent ```sh # Spécifier un référent curl -e http://referer.com http://example.com # Spécifier un User-Agent curl -A "User-Agent" http://example.com ``` ## Utilisation de proxy ```sh # Utiliser un proxy curl -x proxy.example.com:8080 http://example.com # Authentification avec un proxy curl --proxy-user user:password http://example.com ``` ## HTTPS et certificats ```sh # Ignorer les erreurs de certificat curl -k https://example.com # Utiliser un certificat CA personnalisé curl --cacert ca.pem https://example.com # Utiliser un certificat client curl --cert cert.pem https://example.com # Utiliser une clé privée curl --key key.pem https://example.com ``` ## Résolution DNS et interfaces réseau ```sh # Résoudre un nom de domaine avec une adresse IP spécifique curl --resolve example.com:443:127.0.0.1 https://example.com # Utiliser une interface réseau spécifique curl --interface eth0 http://example.com # Spécifier des serveurs DNS curl --dns-servers 8.8.8.8 http://example.com # Utiliser une interface réseau pour les requêtes DNS curl --dns-interface eth0 http://example.com ``` ## FTP ```sh # Mode passif FTP curl --ftp-pasv ftp://example.com # Utiliser une alternative pour la commande USER en FTP curl --ftp-alternative-to-user "USER newuser" ftp://example.com # Changer le comportement du mode FTP curl --ftp-method singlecwd ftp://example.com # Ignorer l'adresse IP dans les réponses PASV FTP curl --ftp-skip-pasv-ip ftp://example.com ``` --- ## Techniques de Pentest pour Serveur Web ### Détection des en-têtes HTTP ```sh # Voir les en-têtes de réponse HTTP curl -I http://example.com # Inclure les en-têtes de réponse dans la sortie curl -i http://example.com ``` ### Exploration de répertoires ```sh # Tester l'existence d'un répertoire ou d'un fichier curl -o /dev/null -s -w "%{http_code}" http://example.com/admin/ ``` ### Injection SQL ```sh # Envoyer une requête SQL malveillante curl -d "username=' OR '1'='1'; -- " -X POST http://example.com/login ``` ### XSS (Cross-Site Scripting) ```sh # Tester une injection XSS curl -d "input=<script>alert('XSS')</script>" -X POST http://example.com/search ``` ### Command Injection ```sh # Tester une injection de commande curl -d "input=value;ls -l" -X POST http://example.com/command ``` ### Brute Force ```sh # Script de brute force simple pour mots de passe for i in $(cat wordlist.txt); do curl -u user:$i http://example.com/login done ``` ### Test des paramètres de requête ```sh # Tester différents paramètres de requête curl http://example.com/page?id=1 curl http://example.com/page?id=2 curl http://example.com/page?id=3 ``` ### Analyse des sessions ```sh # Tester des cookies de session curl -b "sessionid=XYZ123" http://example.com/dashboard ``` ---