22 - SSH/SFTP
1.1 Was ist FTP?
FTP ist ein Netzwerkprotokoll zur Übertragung und Verwaltung von Dateien zwischen einem Client und einem Server. Es arbeitet standardmäßig auf Port 21 und unterstützt:
Authentifizierung durch Benutzername und Passwort.
Optional anonymen Zugriff (z. B. mit
anonymous
als Benutzername und einem beliebigen Passwort).
1.2 Grundlegende FTP-Befehle
Hier die wichtigsten FTP-Befehle, die im Client-Tool verwendet werden:
bashCode kopieren$ ftp <Server-IP> # Verbindung zu einem FTP-Server herstellen.
Nach dem Verbindungsaufbau werden Benutzername und Passwort abgefragt. Bei anonymem Zugriff oft:
Benutzername:
anonymous
Passwort: Beliebiger Wert.
Häufig genutzte FTP-Befehle:
help
: Zeigt eine Liste aller verfügbaren Befehle.dir
: Listet Dateien und Verzeichnisse auf.cd <Pfad>
: Wechselt in ein Verzeichnis.get <Datei>
: Lädt eine Datei vom Server herunter.mget <Datei*>
: Lädt mehrere Dateien herunter (z. B.*.txt
).put <Datei>
: Lädt eine Datei auf den Server hoch.mput <Datei*>
: Lädt mehrere Dateien hoch.delete <Datei>
: Löscht eine Datei auf dem Server.bye
: Trennt die Verbindung.
Automatische Prüfung auf anonymen Zugriff:
bashCode kopieren$ nmap --script ftp-anon -p21 <Server-IP> # Prüft, ob anonymer Zugriff möglich ist.
2. SSH (Secure Shell)
2.1 Was ist SSH?
SSH ist ein verschlüsseltes Netzwerkprotokoll für sicheren Fernzugriff auf Systeme. Standardmäßig arbeitet es auf Port 22 und ermöglicht:
Remote-Kommandozeilen-Zugriff.
Dateiübertragungen.
Port-Weiterleitung (Tunneling).
2.2 Grundlegende SSH-Befehle
SSH-Verbindung herstellen:
ssh <Benutzername>@<Server-IP> # Verbindung zu einem SSH-Server.
Nach Eingabe des Passworts öffnet sich eine Remote-Shell.
Häufig genutzte Optionen:
-p <Portnummer>
: Verbindet sich zu einem spezifischen Port (z. B. für Nicht-Standard-Ports).-i <Schlüsseldatei>
: Nutzt einen privaten SSH-Schlüssel für die Authentifizierung.
2.3 SSH ohne Passwort (Public Key Authentication)
Um SSH ohne Passwort zu nutzen, erstellen Sie ein Schlüssel-Paar und übertragen den öffentlichen Schlüssel auf den Server:
Schlüssel generieren:
ssh-keygen -t rsa
Ergebnis:
id_rsa
(privat) undid_rsa.pub
(öffentlich).
Öffentlichen Schlüssel kopieren:
ssh-copy-id <Benutzername>@<Server-IP>
Verbindung herstellen:
ssh <Benutzername>@<Server-IP>
2.4 Banner Grabbing
Banner Grabbing liefert Informationen über den SSH-Dienst:
nc -vn <Server-IP> 22
# Zeigt die SSH-Version und weitere Informationen des Servers.
3. Bruteforcing und Passwort-Spraying
3.1 Bruteforce-Angriffe
SSH-Bruteforce mit Hydra:
hydra -l <Benutzername> -P <Passwortliste> <Server-IP> ssh
-l
: Einzelner Benutzername.-P
: Passwortliste.
FTP-Bruteforce mit Hydra:
hydra -l <Benutzername> -P <Passwortliste> <Server-IP> ftp
3.2 Passwort-Spraying
Passwort-Spraying testet ein Passwort gegen eine Liste von Benutzern:
SSH-Spraying:
hydra -L <Benutzerliste> -p <Passwort> <Server-IP> ssh
FTP-Spraying:
hydra -L <Benutzerliste> -p <Passwort> <Server-IP> ftp
4. Dateitransfer mit SCP (Secure Copy Protocol)
SCP nutzt SSH, um Dateien sicher zu übertragen.
4.1 Datei auf einen Server hochladen
scp <Datei> <Benutzername>@<Server-IP>:<Zielpfad>
# Beispiel:
$ scp report.txt user@192.168.1.10:/home/user/
4.2 Datei vom Server herunterladen
scp <Benutzername>@<Server-IP>:<Dateipfad> <Zielpfad>
# Beispiel:
$ scp user@192.168.1.10:/home/user/report.txt /tmp/
5. Lokale Enumeration nach SSH-Zugriff
Nach einer erfolgreichen SSH-Verbindung können lokale Informationen gesammelt werden:
ss -tl # Listet offene Ports auf.
$ uname -a # Zeigt Systeminformationen.
$ id # Zeigt Benutzerrechte an.
5. SSH Port-Forwarding (Einfacher Überblick)
Lokales Port-Forwarding: Leitet einen lokalen Port auf einen entfernten Port weiter.
ssh -L <Lokaler-Port>:<Remote-Host>:<Remote-Port> <Benutzername>@<Server-IP>
Remote Port-Forwarding: Leitet einen entfernten Port auf einen lokalen Port weiter.
ssh -R <Remote-Port>:<Lokaler-Host>:<Lokaler-Port> <Benutzername>@<Server-IP>
Dynamisches Port-Forwarding (SOCKS5 Proxy):
ssh -D <Lokaler-Port> <Benutzername>@<Server-IP>
Beispiel
Du hast Zugriff auf den Zielserver via SSH als Benutzer
PostgreSQL läuft auf dem Zielserver auf Port
5432 (lokalerport 127.0.0.1/localhost)
also bei z.b. postgresql
Da der Port lokal ist, zeigt es diesen auch nicht an auf NMAP etc. da dieser nur hört, wenn die anfrage von lokal kommt.
Um dies zu umgehen kann man folgenden befehl machen
ssh -L 1234:localhost:5432 christine@10.129.228.195
ssh
: Du baust eine SSH-Verbindung zum Server auf.-L
: Legt einen Tunnel fest, um Daten weiterzuleiten.1234
: Lokaler Port auf deinem Rechner, der für die Weiterleitung genutzt wird.localhost:5432
: Ziel auf dem Server:localhost
: PostgreSQL läuft auf dem Zielserver und ist nur dort lokal erreichbar (wird dem Server vorgegaukelt, dass man local ist)5432
: Der Port, auf dem PostgreSQL lauscht.
christine@10.129.228.195
:christine
: SSH-Benutzername.10.129.228.195
: IP-Adresse des Zielservers.
Danach kann mit dem zugriff via port 1234 vorgekaukelt werden, dass man local mit dem port 5432 kommuniziert
psql -U christine -h localhost -p 1234
In einfachen Worten:
Du leitest lokale Verbindungen von Port 1234 auf deinem Rechner zu Port 5432 auf dem Server 10.129.228.195 weiter.
Dadurch kannst du auf PostgreSQL zugreifen, als würde es bei dir lokal laufen.

Last updated