Accès avancé aux ports avec Curl
Maintenant que vous comprenez les bases de l'utilisation de Curl avec différents ports, explorons des techniques plus avancées pour l'accès et les tests de ports.
Tester la disponibilité des ports
Curl peut être utilisé pour vérifier si un port spécifique est ouvert sur un serveur. Lorsqu'un port est ouvert, Curl tentera d'établir une connexion et potentiellement de recevoir des données. Lorsqu'un port est fermé, Curl signalera une erreur.
Testons quelques ports courants :
## Test si le port 80 (HTTP) est ouvert
curl -s -o /dev/null -w "%{http_code}\n" http://example.com:80
Cette commande affichera le code d'état HTTP (généralement 200 si le port est ouvert et que le serveur répond correctement). L'option -s rend Curl silencieux, -o /dev/null redirige la sortie vers nulle part, et -w "%{http_code}\n" affiche uniquement le code d'état HTTP.
Essayons quelques autres ports :
## Test si le port 443 (HTTPS) est ouvert
curl -s -o /dev/null -w "%{http_code}\n" https://example.com:443
Cela devrait renvoyer 200 ou un autre code d'état HTTP, indiquant que le port 443 est ouvert.
Maintenant, testons un port qui est probablement fermé :
## Test si le port 81 (peu courant) est ouvert
curl -s --connect-timeout 5 http://example.com:81
Cette commande échouera probablement avec un message d'erreur comme :
curl: (7) Failed to connect to example.com port 81: Connection refused
ou elle pourrait expirer après 5 secondes (comme spécifié par --connect-timeout) :
curl: (28) Connection timed out after 5001 milliseconds
Accéder aux serveurs FTP
Curl prend en charge plusieurs protocoles, dont FTP. Voyons comment accéder à un serveur FTP :
curl ftp://ftp.gnu.org/gnu/
Cette commande liste le contenu du répertoire à ftp.gnu.org. La sortie pourrait ressembler à :
drwxr-xr-x 8 1003 1003 4096 Dec 16 2020 0ad
drwxr-sr-x 5 1003 1003 4096 Nov 09 2020 8sync
drwxr-xr-x 2 1003 1003 4096 Jun 05 2015 GNUinfo
drwxr-xr-x 3 1003 1003 4096 Jan 23 2022 GNUnet
...
Création d'un simple scanner de ports
Créons un simple script Bash pour scanner une plage de ports sur un serveur. Créez un nouveau fichier appelé port_scanner.sh dans votre répertoire de projet :
nano ~/project/port_scanner.sh
Ajoutez le contenu suivant au fichier :
#!/bin/bash
## Simple port scanner using curl
## Usage: ./port_scanner.sh <hostname> <start_port> <end_port>
hostname=$1
start_port=$2
end_port=$3
echo "Scanning ports $start_port to $end_port on $hostname..."
echo
for port in $(seq $start_port $end_port); do
## Try to connect with a short timeout
curl -s --connect-timeout 1 "$hostname:$port" > /dev/null
## Check if the connection was successful
if [ $? -eq 0 ]; then
echo "Port $port is OPEN"
else
echo "Port $port is closed"
fi
done
echo
echo "Scan complete!"
Enregistrez le fichier en appuyant sur Ctrl+X, puis Y, puis Entrée.
Rendez le script exécutable :
chmod +x ~/project/port_scanner.sh
Maintenant, exécutez le script pour scanner les ports 80-85 sur example.com :
~/project/port_scanner.sh example.com 80 85
La sortie affichera quels ports sont ouverts et lesquels sont fermés :
Scanning ports 80 to 85 on example.com...
Port 80 is OPEN
Port 81 is closed
Port 82 is closed
Port 83 is closed
Port 84 is closed
Port 85 is closed
Scan complete!
Ce script simple démontre comment Curl peut être utilisé comme un outil de scan de ports de base. Dans un scénario réel, vous voudriez utiliser des outils spécialisés comme nmap pour une analyse réseau plus complète, mais cet exemple montre la polyvalence de Curl.