Einführung
Willkommen zu diesem praktischen Lab, das sich auf SSH-Enumeration und die Ausnutzung schwacher schlüsselbasierter Authentifizierung konzentriert. Secure Shell (SSH) ist ein grundlegendes Protokoll für die sichere Fernadministration, aber Fehlkonfigurationen können erhebliche Sicherheitslücken schaffen.
In diesem Lab simulieren Sie einen Penetrationstest gegen ein Zielsystem. Sie beginnen mit der Überprüfung der Netzwerkverbindung und verwenden dann das leistungsstarke Tool nmap, um den SSH-Dienst zu enumerieren und Informationen zu sammeln. Als Nächstes nutzen Sie einen bereitgestellten privaten Schlüssel, um eine gängige Fehlkonfiguration – unsachgemäße Dateiberechtigungen – auszunutzen und passwortlosen Shell-Zugriff zu erhalten. Abschließend erkunden Sie das Zielsystem, um eine versteckte Flagge zu finden und abzurufen.
Nach Abschluss werden Sie verstehen, wie Sie:
- Die Netzwerkverbindung mit
pingüberprüfen. - Einen SSH-Dienst mit
nmapenumerieren. - Die Grundlagen der schlüsselbasierten SSH-Authentifizierung verstehen.
- Schwache Schlüsselberechtigungen ausnutzen, um unbefugten Zugriff zu erhalten.
- Ein entferntes System navigieren, um sensible Informationen zu finden.
Lassen Sie uns beginnen.
Konnektivität zum Ziel mit Ping überprüfen
In diesem Schritt bestätigen Sie zunächst, dass Ihre Maschine mit dem Zielsystem kommunizieren kann. Der Befehl ping ist ein Standard-Netzwerkdiagnosewerkzeug, das ICMP-Pakete an einen Host sendet, um dessen Erreichbarkeit zu testen. Dies ist der erste und grundlegendste Schritt bei jeder Netzwerkerkundung.
Ihre Umgebung umfasst ein Zielsystem, das über den Hostnamen target erreichbar ist.
Führen Sie den folgenden Befehl im Terminal aus, um vier Pakete an das target zu senden und zu überprüfen, ob es online ist:
ping -c 4 target
Sie sollten eine ähnliche Antwort wie unten sehen, die bestätigt, dass das Ziel erreichbar ist und die Netzwerkverbindung stabil ist. Die IP-Adresse und die Antwortzeiten können leicht abweichen.
PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.065 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms
--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.065/0.072/0.091/0.011 ms
Nachdem die Konnektivität bestätigt wurde, können Sie mit der nächsten Phase der Enumeration fortfahren.
Offene Ports mit Nmap scannen
In diesem Schritt verwenden Sie nmap, um den Zielhost nach offenen Ports zu scannen und die darauf laufenden Dienste zu identifizieren. Nmap (Network Mapper) ist ein wichtiges Werkzeug für Sicherheitsexperten, das für die Netzwerkerkennung und Sicherheitsaudits verwendet wird.
Wir führen einen gezielten Scan auf Port 22, dem Standardport für SSH, durch, um Versionsinformationen und den Host-Schlüssel zu sammeln.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
nmap -sV -p 22 --script ssh-hostkey target
-sV: Aktiviert die Erkennung von Diensten und Versionen.-p 22: Gibt an, dass nur Port 22 gescannt werden soll.--script ssh-hostkey: Ein Skript der Nmap Scripting Engine (NSE), das die SSH-Hostschlüssel des Zielhosts abruft.
Die Ausgabe wird in etwa wie folgt aussehen:
Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-19 11:56 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00020s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.78 seconds
Der Scan bestätigt, dass Port 22/tcp offen ist und OpenSSH 8.9p1 darauf läuft. Diese Information ist entscheidend für den nächsten Schritt, bei dem Sie versuchen werden, eine Verbindung herzustellen.
Verbindung zum Ziel über SSH herstellen
In diesem Schritt verwenden Sie den bereitgestellten SSH-Privatschlüssel, um eine Verbindung zum Ziel herzustellen. Die SSH-Schlüsselbasierte Authentifizierung ist im Allgemeinen sicherer als die passwortbasierte Authentifizierung, sie beruht jedoch darauf, dass sowohl der Privatschlüssel geheim gehalten wird als auch die Dateiberechtigungen auf Client und Server korrekt konfiguriert sind.
Eine Privatschlüsseldatei, id_rsa, wurde in Ihrem ~/project-Verzeichnis abgelegt. Damit SSH einen Privatschlüssel verwenden kann, müssen dessen Berechtigungen restriktiv sein. Setzen Sie die korrekten Berechtigungen mit dem Befehl chmod:
chmod 600 id_rsa
Dieser Befehl stellt sicher, dass nur der Dateibesitzer Lese- und Schreibberechtigungen hat, was für die meisten SSH-Clients eine Anforderung ist.
Wenn Sie trotz des korrekten Schlüssels zur Eingabe eines Passworts aufgefordert werden, liegt das Problem wahrscheinlich an den serverseitigen Berechtigungen. SSH erfordert, dass das Home-Verzeichnis des Benutzers keine Schreibberechtigungen für Gruppen oder andere hat. Überprüfen Sie die aktuellen Berechtigungen:
docker exec target-container ls -ld /home/testuser
Wenn Sie Berechtigungen wie drwxrwxrwx (777) sehen, beheben Sie diese:
docker exec target-container chmod 755 /home/testuser
Verwenden Sie nun den Privatschlüssel, um sich als Benutzer testuser mit dem target zu verbinden.
ssh -i id_rsa testuser@target
-i id_rsa: Gibt die Identitätsdatei (Privatschlüssel) an, die für die Authentifizierung verwendet werden soll.
Sie werden möglicherweise aufgefordert, die Authentizität des Hosts zu bestätigen. Geben Sie yes ein und drücken Sie Enter.
The authenticity of host 'target (172.17.0.2)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Aufgrund einer Fehlkonfiguration auf dem Server (unsichere Berechtigungen im Home-Verzeichnis des Benutzers) akzeptiert der SSH-Dienst den Schlüssel, und Sie erhalten ohne Passwort Zugriff. Sie werden angemeldet und sehen die Shell-Eingabeaufforderung des Ziels.
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-48-generic x86_64)
...
testuser@target:~$
Sie haben erfolgreich Shell-Zugriff auf das Zielsystem erhalten.
Zielsystem erkunden und Flagge finden
In diesem Schritt ist Ihr Endziel, die Flag-Datei zu finden und zu lesen. Da Sie nun eine Shell auf dem Zielsystem haben, können Sie dessen Dateisystem wie auf einem lokalen Rechner erkunden. Dies ist die Post-Exploitation-Phase, in der ein Angreifer nach wertvollen Daten sucht.
Sie befinden sich derzeit im Home-Verzeichnis von testuser (/home/testuser). Verwenden Sie den Befehl ls, um die Dateien und Verzeichnisse an diesem Ort aufzulisten.
ls
Sie sehen den Inhalt des Home-Verzeichnisses, der die Flag-Datei enthalten sollte.
testuser@target:~$ ls
flag.txt
testuser@target:~$
Sie haben flag.txt gefunden. Verwenden Sie nun den Befehl cat, um dessen Inhalt anzuzeigen und die Flagge zu enthüllen.
cat flag.txt
Das Terminal gibt den Wert der Flagge aus.
testuser@target:~$ cat flag.txt
labex{ssh_k3y_b4s3d_acc3ss_fl4g}
testuser@target:~$
Herzlichen Glückwunsch! Sie haben den SSH-Dienst erfolgreich aufgezählt, eine Schwachstelle bei der schlüsselbasierten Authentifizierung ausgenutzt und die Flagge erfasst. Kopieren Sie den Flag-Wert, um das Lab abzuschließen.
Um die Verbindung zum Ziel zu trennen, geben Sie exit ein und drücken Sie Enter.
Zusammenfassung
In diesem Lab haben Sie erfolgreich einen simulierten Angriff auf einen falsch konfigurierten SSH-Dienst durchgeführt. Sie haben die wichtigsten Phasen eines Penetrationstests durchlaufen, von der anfänglichen Erkundung bis zur Post-Exploitation.
Sie haben gelernt, wie Sie:
pingverwenden, um zu überprüfen, ob ein Ziel online ist.nmapeinsetzen, um einen detaillierten Scan eines SSH-Ports durchzuführen und die Service-Version zu identifizieren.- Die clientseitigen Anforderungen für die SSH-Schlüsselbasierte Authentifizierung verstehen, einschließlich der korrekten Berechtigungen für Privatschlüssel (
chmod 600). - Eine serverseitige Schwachstelle im Zusammenhang mit unsicheren Dateiberechtigungen ausnutzen, um unbefugten Shell-Zugriff zu erhalten.
- Ein entferntes Dateisystem navigieren, um eine Flagge zu finden und abzurufen.
Diese Übung demonstriert ein kritisches Sicherheitsprinzip: Sicherheit ist eine Kette, und ein einziges schwaches Glied – in diesem Fall unsachgemäße Verzeichnisberechtigungen – kann das gesamte System kompromittieren, selbst wenn starke Authentifizierungsmechanismen wie SSH-Schlüssel verwendet werden. Stellen Sie immer sicher, dass Ihre SSH-Konfigurationen und Dateiberechtigungen gemäß den bewährten Sicherheitspraktiken gehärtet sind.



