Erweiterte Port-Zugriffe mit Curl
Nachdem Sie die Grundlagen der Verwendung von Curl mit verschiedenen Ports verstanden haben, wollen wir uns mit fortgeschritteneren Techniken für den Port-Zugriff und das Testen befassen.
Testen der Port-Verfügbarkeit
Curl kann verwendet werden, um zu überprüfen, ob ein bestimmter Port auf einem Server geöffnet ist. Wenn ein Port geöffnet ist, versucht Curl, eine Verbindung herzustellen und möglicherweise Daten zu empfangen. Wenn ein Port geschlossen ist, meldet Curl einen Fehler.
Testen wir einige gängige Ports:
## Test if port 80 (HTTP) is open
curl -s -o /dev/null -w "%{http_code}\n" http://example.com:80
Dieser Befehl zeigt den HTTP-Statuscode an (typischerweise 200, wenn der Port geöffnet ist und der Server korrekt antwortet). Das Flag -s macht Curl still, -o /dev/null leitet die Ausgabe nirgendwohin um, und -w "%{http_code}\n" gibt nur den HTTP-Statuscode aus.
Versuchen wir noch ein paar Ports:
## Test if port 443 (HTTPS) is open
curl -s -o /dev/null -w "%{http_code}\n" https://example.com:443
Dies sollte 200 oder einen anderen HTTP-Statuscode zurückgeben, was darauf hindeutet, dass Port 443 geöffnet ist.
Testen wir nun einen Port, der wahrscheinlich geschlossen ist:
## Test if port 81 (uncommon) is open
curl -s --connect-timeout 5 http://example.com:81
Dieser Befehl schlägt wahrscheinlich mit einer Fehlermeldung wie dieser fehl:
curl: (7) Failed to connect to example.com port 81: Connection refused
oder es könnte nach 5 Sekunden ein Timeout erfolgen (wie durch --connect-timeout angegeben):
curl: (28) Connection timed out after 5001 milliseconds
Zugriff auf FTP-Server
Curl unterstützt mehrere Protokolle, einschließlich FTP. Sehen wir uns an, wie man auf einen FTP-Server zugreift:
curl ftp://ftp.gnu.org/gnu/
Dieser Befehl listet den Inhalt des Verzeichnisses unter ftp.gnu.org auf. Die Ausgabe könnte so aussehen:
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
...
Erstellen eines einfachen Port-Scanners
Erstellen wir ein einfaches Bash-Skript, um einen Bereich von Ports auf einem Server zu scannen. Erstellen Sie eine neue Datei namens port_scanner.sh in Ihrem Projektverzeichnis:
nano ~/project/port_scanner.sh
Fügen Sie den folgenden Inhalt in die Datei ein:
#!/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!"
Speichern Sie die Datei, indem Sie Ctrl+X, dann Y und dann Enter drücken.
Machen Sie das Skript ausführbar:
chmod +x ~/project/port_scanner.sh
Führen Sie nun das Skript aus, um die Ports 80-85 auf example.com zu scannen:
~/project/port_scanner.sh example.com 80 85
Die Ausgabe zeigt, welche Ports geöffnet und welche geschlossen sind:
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!
Dieses einfache Skript demonstriert, wie Curl als grundlegendes Port-Scanning-Tool verwendet werden kann. In einem realen Szenario würden Sie spezialisierte Tools wie nmap für umfassenderes Netzwerk-Scanning verwenden wollen, aber dieses Beispiel zeigt die Vielseitigkeit von Curl.