tags: Rsync Enumerazione_Rsync


Rsync è uno strumento veloce ed efficiente per copiare file localmente e in remoto. Può essere utilizzato per copiare file localmente su una determinata macchina e da/verso host remoti. È altamente versatile e ben noto per il suo algoritmo di trasferimento delta. Questo algoritmo riduce la quantità di dati trasmessi sulla rete quando una versione del file esiste già sull’host di destinazione. Lo fa inviando solo le differenze tra i file di origine e la versione precedente dei file che risiedono sul server di destinazione. Viene spesso utilizzato per backup e mirroring. Trova i file che devono essere trasferiti esaminando i file che hanno cambiato dimensione o l’ora dell’ultima modifica. Per impostazione predefinita, utilizza la porta 873 e può essere configurato per utilizzare SSH per trasferimenti di file sicuri utilizzando il piggybacking su una connessione al server SSH stabilita.

Questa guida copre alcuni dei modi in cui è possibile abusare di Rsync, in particolare elencando il contenuto di una cartella condivisa su un server di destinazione e recuperando i file. A volte questo può essere fatto senza autenticazione. Altre volte avremo bisogno delle credenziali. Se trovi le credenziali durante un pentest e ti imbatti in Rsync su un host interno (o esterno), vale sempre la pena verificare il riutilizzo della password poiché potresti essere in grado di estrarre alcuni file sensibili che potrebbero essere utilizzati per ottenere l’accesso remoto alla destinazione.

Scansione

sudo nmap -sV -p 873 127.0.0.1
 
Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-19 09:31 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0058s latency).
 
PORT    STATE SERVICE VERSION
873/tcp open  rsync   (protocol version 31)
 
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.13 seconds

Enumerazione

nc -nv 127.0.0.1 873
 
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@RSYNCD: 31.0
@RSYNCD: 31.0
#list
dev            	Dev Tools
@RSYNCD: EXIT

Qui possiamo vedere una condivisione chiamata dev e possiamo elencarla ulteriormente:

rsync -av --list-only rsync://127.0.0.1/dev
 
receiving incremental file list
drwxr-xr-x             48 2022/09/19 09:43:10 .
-rw-r--r--              0 2022/09/19 09:34:50 build.sh
-rw-r--r--              0 2022/09/19 09:36:02 secrets.yaml
drwx------             54 2022/09/19 09:43:10 .ssh
 
sent 25 bytes  received 221 bytes  492.00 bytes/sec
total size is 0  speedup is 0.00

Dall’output soprastante, possiamo vedere alcuni file interessanti che potrebbero valere la pena di essere scaricati per ulteriori indagini. Possiamo anche vedere che una directory contenente probabilmente chiavi SSH è accessibile. Da qui, potremmo sincronizzare tutti i file con il nostro host di attacco con il comando rsync -av rsync://127.0.0.1/dev. Se Rsync è configurato per utilizzare SSH per il trasferimento dei file, potremmo modificare i nostri comandi per includere il flag -e ssh, oppure -e "ssh -p2222" se è in uso una porta non standard per SSH. Questa guida è utile per comprendere la sintassi per l’utilizzo di Rsync su SSH.