## **Información Básica** > **rsync** es una utilidad para transferir y sincronizar archivos de manera eficiente entre una computadora y un disco duro externo, y entre computadoras en red comparando los tiempos de modificación y los tamaños de los archivos. Se encuentra comúnmente en sistemas operativos similares a Unix. El algoritmo de rsync es un tipo de codificación delta y se utiliza para minimizar el uso de la red. Zlib se puede utilizar para compresión de datos adicional, y SSH o stunnel se pueden utilizar para seguridad. De [wikipedia](https://en.wikipedia.org/wiki/Rsync). **Puerto predeterminado:** 873 ``` PORT STATE SERVICE REASON 873/tcp open rsync syn-ack ``` ## Enumeración ### Banner y comunicación manual ``` nc -vn 127.0.0.1 873 (UNKNOWN) [127.0.0.1] 873 (rsync) open @RSYNCD: 31.0 <--- You receive this banner with the version from the server @RSYNCD: 31.0 <--- Then you send the same info #list <--- Then you ask the sever to list raidroot <--- The server starts enumerating USBCopy NAS_Public _NAS_Recycle_TOSRAID <--- Enumeration finished @RSYNCD: EXIT <--- Sever closes the connection #Now lets try to enumerate "raidroot" nc -vn 127.0.0.1 873 (UNKNOWN) [127.0.0.1] 873 (rsync) open @RSYNCD: 31.0 @RSYNCD: 31.0 raidroot @RSYNCD: AUTHREQD 7H6CqsHCPG06kRiFkKwD8g <--- This means you need the password ``` ### **Enumerar carpetas compartidas** **Un módulo de rsync es esencialmente una carpeta compartida**. Estos módulos **pueden estar protegidos opcionalmente por una contraseña**. Esta opción lista los módulos disponibles y, opcionalmente, determina si el módulo requiere una contraseña para acceder\*\*:\*\* ```bash nmap -sV --script "rsync-list-modules" -p msf> use auxiliary/scanner/rsync/modules_list #Example using IPv6 and a different port rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730 ``` Ten en cuenta que se podría configurar un nombre compartido para que no se liste. Así que podría haber algo **oculto**.\ Ten en cuenta que puede haber algunos **nombres compartidos** que se enumeran donde se necesitan algunas (diferentes) **credenciales** para acceder. Así que no siempre todos los nombres listados van a ser accesibles y lo notarás si recibes un mensaje de _**"Acceso denegado"**_ al intentar acceder a algunos de ellos. ### [**Fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#rsync) ### Rsync manual Una vez que tienes la **lista de módulos**, tienes algunas opciones diferentes dependiendo de las acciones que quieras tomar y si se requiere autenticación o no. **Si no se requiere autenticación**, puedes **enumerar** una carpeta compartida: ```bash rsync -av --list-only rsync://192.168.0.123/shared_name ``` Y **copiar** todos los **archivos** a tu máquina local mediante el siguiente comando: ```bash rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared ``` Esto **transfiere recursivamente todos los archivos del directorio** `` en la máquina `` al directorio `./rsync_shared` en la máquina local. Los archivos se transfieren en modo "archivo", lo que garantiza que los enlaces simbólicos, dispositivos, atributos, permisos, propietarios, etc. se conserven en la transferencia. Si **tienes credenciales**, puedes **listar/descargar** un **nombre compartido** usando (se solicitará la contraseña): ```bash rsync -av --list-only rsync://username@192.168.0.123/shared_name rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared ``` También se puede **subir** contenido utilizando rsync (por ejemplo, en este caso podemos subir un archivo _**authorized\_keys**_ para obtener acceso a la caja): ```bash rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh ``` ## POST Encuentra el archivo de configuración de rsyncd: ```bash find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \) ``` Dentro del archivo de configuración a veces se puede encontrar el parámetro _secrets file = /path/to/file_ y este archivo puede contener nombres de usuario y contraseñas permitidos para autenticarse en rsyncd.