// 01
Reconocimiento
Synced es una máquina Linux de dificultad Very Easy que explora el protocolo rsync y los peligros de una configuración que permite autenticación anónima. Igual que un NFS o un SMB mal configurado, un demonio rsync puede exponer módulos (carpetas compartidas) sin pedir usuario ni contraseña, permitiendo leer —o incluso escribir— archivos del sistema remoto.
Escaneamos todos los puertos TCP con detección de versión. Solo hay un puerto abierto: el 873, puerto por defecto de rsync, corriendo la versión de protocolo 31.
// SI RSYNC DA «CONNECTION REFUSED»
En un primer intento la conexión puede devolver Connection refused: suele ser que
la VPN/instancia aún no ha terminado de establecer la red del laboratorio. Reintentando el
escaneo unos segundos después, el puerto 873 responde con normalidad.
// 02
Enumeración de módulos rsync
A diferencia de SSH o FTP, rsync no tiene por qué pedir usuario y contraseña: basta con listar
los módulos que expone el demonio remoto. Lo probamos sin ninguna credencial
con --list-only sobre la URL rsync://IP/:
// MÓDULO ANÓNIMO EXPUESTO
Hay un único módulo, public, descrito explícitamente como «Anonymous Share». El propio nombre confirma que no requiere autenticación: cualquiera con acceso al 873 puede leer su contenido.
// 03
Contenido del módulo y flag
Añadimos el nombre del módulo a la URL (rsync://IP/public/) y volvemos a usar
--list-only para ver qué contiene. Dentro hay un único archivo:
flag.txt.
Descargamos el archivo indicando la ruta completa dentro del módulo
(public/flag.txt, no solo public como si fuera un módulo) a un fichero
local, y lo leemos con cat:
// FLAG
72eaf5344ebb84908ae543a719830519 — descargada vía rsync anónimo, sin credenciales ni escalada. Toda la máquina se resuelve explotando un módulo rsync expuesto de forma anónima.
| PREGUNTA | RESPUESTA |
|---|---|
| Puerto predeterminado de rsync | 873 |
| Puertos TCP abiertos en el host | 1 |
| Versión del protocolo rsync | 31 |
| Comando para interactuar con rsync | rsync |
| Credenciales para la autenticación anónima | None (ninguna) |
| Opción para enumerar recursos y archivos | --list-only |
// LECCIÓN Y MITIGACIÓN
Un servicio rsync mal configurado con acceso anónimo deja que cualquiera
enumere y descargue archivos sin dejar rastro de autenticación. La mitigación: exigir
credenciales con auth users y secrets file en rsyncd.conf,
restringir el puerto 873 por firewall (nunca abierto a Internet), revisar qué rutas
(path) exponen los módulos, habilitar logging, y preferir
rsync sobre SSH (rsync -e ssh) frente al demonio rsync expuesto.
// 04
Referencia de Comandos
- -sV — detección de versión del servicio
- -p- — los 65 535 puertos TCP
- --min-rate 5000 — mínimo de paquetes por segundo (más rápido)
- --list-only — solo lista, no transfiere
- rsync://ip/ — raíz: lista módulos
- rsync://ip/mod/ — dentro de un módulo: lista archivos
- -a — modo archivo (recursivo, preserva atributos)
- -v — verboso
- -P — progreso + continuar descargas parciales
// 05
Glosario
rsyncd.conf con un nombre y una ruta (path). Equivale a un «share» de
SMB: se accede como rsync://ip/<modulo>/. Aquí el módulo
public apunta a la carpeta con la flag.
rsyncd). Verlo abierto
indica un servidor rsync independiente; si además acepta módulos anónimos, cualquiera con
conectividad puede leer sus archivos.
auth users; el aviso «Anonymous Share» del
listado lo confirma. Es una de las malas configuraciones más comunes en servicios de datos.
rsync://ip/) y luego el contenido de uno (rsync://ip/mod/).
rsync -e ssh origen destino tuneliza
la transferencia por SSH, añadiendo cifrado y autenticación. Evita exponer el
873 y el acceso anónimo que compromete esta máquina.
path, si son de
solo lectura y, sobre todo, la autenticación (auth users, secrets file).
Dejar un módulo sin esas dos últimas opciones es lo que habilita el acceso anónimo.