Synced

Machine Name: synced
Address: https://app.hackthebox.com/starting-point

Introdução

Uma das ferramentas de transferência de arquivos mais populares é o Protocolo de Transferência de Arquivos (FTP), que foi explorado detalhadamente na máquina Fawn. No entanto, o FTP apresenta desvantagens significativas, principalmente por ser antigo e lento. O FTP é projetado para transferir arquivos inteiros por meio de uma rede a partir de um servidor remoto. Contudo, em muitas situações, apenas alterações específicas em alguns arquivos precisam ser enviadas, em vez de transferir todos os arquivos repetidamente. Para esses casos, o protocolo rsync costuma ser a melhor escolha.

O termo “deltas” refere-se às alterações que precisam ser transferidas. Atualizar arquivos usando deltas é um método altamente eficaz para reduzir tanto a largura de banda necessária para a transferência quanto o tempo necessário para concluir a operação.

A definição oficial do rsync, de acordo com a página de manual do Linux, é:

Rsync is a fast and extraordinarily versatile file copying tool. It can copy locally, to/from another host over any remote shell, or to/from a remote rsync daemon. It offers a large number of options that control every aspect of its behavior and permit very flexible specification of the set of files to be copied. It is famous for its deltatransfer algorithm, which reduces the amount of data sent over the network by sending
only the differences between the source files and the existing files in the destination. Rsync is widely used for backups and mirroring and as an improved copy command for everyday use.

Com base na definição do rsync, fica evidente que essa ferramenta é excelente para criar e manter backups, bem como para sincronizar arquivos entre máquinas remotas. Ambas as funcionalidades são amplamente utilizadas em ambientes corporativos. Nesses contextos, o tempo é um fator crucial, tornando o rsync a escolha preferida devido à eficiência que oferece para essas tarefas.

Os principais passos de uma transferência com rsync são:

  1. O rsync estabelece uma conexão com o host remoto e inicia um processo receptor na máquina remota.
  2. Os processos de envio e recepção analisam e identificam os arquivos que foram modificados.
  3. As alterações detectadas são atualizadas no host remoto.

Uma configuração incorreta comum do rsync é permitir o login anônimo, o que pode ser explorado por atacantes para acessar informações sensíveis armazenadas na máquina remota. A máquina Synced é um exemplo de sistema Linux que expõe um diretório via rsync com login anônimo habilitado. Usando a ferramenta de linha de comando rsync, podemos acessar remotamente esse diretório e recuperar a flag.

Enumeração

Começaremos escaneando o host remoto para identificar portas abertas e serviços em execução utilizando o Nmap. O scan incluirá as seguintes flags:

  • -p-: Escaneia todas as portas TCP de 0 a 65535.
  • –min-rate=1000: Especifica o número mínimo de pacotes que o Nmap deve enviar por segundo, acelerando o scan à medida que o valor aumenta.
  • -sV: Tenta determinar a versão do serviço executado em uma porta detectada.

nmap -p- –min-rate=1000 -sV {target_IP}

Os resultados do scan indicam que apenas a porta 873 está aberta, e o Nmap identifica o serviço dessa porta como rsync.

O que é rsync?

Como mencionado anteriormente, o rsync é uma ferramenta de código aberto projetada para transferências incrementais rápidas de arquivos. Sua funcionalidade o torna ideal para sincronizar arquivos entre um computador e um dispositivo de armazenamento ou entre sistemas conectados em rede. Devido à sua velocidade e flexibilidade, o rsync é considerado uma ferramenta padrão no Linux e está incluído por padrão em todas as distribuições populares. Mais informações estão disponíveis na página do Wikipedia.

Conectando ao rsync

Como o rsync já vem pré-instalado na maioria das distribuições Linux, podemos interagir diretamente com o sistema remoto.

A sintaxe geral de um comando rsync é:

rsync [OPÇÕES] [ORIGEM] [DESTINO]

Para realizar o scan com Nmap, utilize:

nmap -p- –min-rate=1000 -sV {IP_alvo}

Conectando ao rsync
Como o rsync já vem pré-instalado na maioria das distribuições Linux, podemos começar a interagir com a máquina remota.

A sintaxe geral para usar o rsync é a seguinte:

rsync [OPÇÃO] … [USUÁRIO@]HOST::SRC [DESTINO]

Onde:

  • SRC é o arquivo ou diretório de origem (ou uma lista de arquivos/diretórios) a ser copiado.
  • DESTINO é o arquivo ou diretório de destino para onde o conteúdo será copiado.
  • A seção [OPÇÃO] refere-se às opções disponíveis no rsync. A lista completa de opções válidas pode ser encontrada na página oficial do manual do rsync, na seção Resumo de Opções.

A parte opcional [USUÁRIO@] é usada quando precisamos autenticar o acesso à máquina remota. No entanto, como não temos credenciais válidas, omitiremos essa parte e tentaremos uma autenticação anônima.

Nosso primeiro passo será tentar listar todos os diretórios disponíveis para um usuário anônimo. Consultando o manual, encontramos a opção –list-only, que é usada para “listar os arquivos em vez de copiá-los.”

Com isso em mente, criamos nosso primeiro comando para interagir com a máquina remota. A saída revela um diretório chamado public com a descrição Anonymous Share. Este é um termo comum para diretórios compartilhados, frequentemente chamados de “shares”. Podemos prosseguir listando os arquivos dentro do compartilhamento public.

O comando para fazer isso é:

rsync –list-only {IP_alvo}::

Ao explorar o compartilhamento public, encontramos um arquivo chamado flag.txt. Nosso próximo passo é copiar ou sincronizar esse arquivo para nossa máquina local. Para isso, usamos a sintaxe geral do rsync, especificando o SRC como public/flag.txt e o DESTINO como flag.txt para transferir o arquivo localmente.

Ao executar o comando, não há saída. No entanto, podemos confirmar que um novo arquivo, flag.txt, apareceu no nosso diretório local. Vamos verificar seu conteúdo.

Parabéns! Você conseguiu recuperar o arquivo da flag da máquina remota usando o protocolo rsync.

Comando para copiar o arquivo:

rsync {IP_alvo}::public/flag.txt flag.txt

Para ler o conteúdo:

cat flag.txt

Question 01: What is the default port for rsync?

nmap -sV -p- -T5 10.129.228.37

873

Question 02: How many TCP ports are open on the remote host?

1

Question 03: What is the protocol version used by rsync on the remote machine?

31

Question 04: What is the most common command name on Linux to interact with rsync?

rsync

Question 05: What credentials do you have to pass to rsync in order to use anonymous authentication? anonymous:anonymous, anonymous, None, rsync:rsync

None

Question 06: What is the option to only list shares and files on rsync? (No need to include the leading — characters)

list-only

Question 07: Submit the flag

Vamos listar o conteúdo para vermos ao que temos acesso com o usuário anonymous

rsync –list-only 10.129.228.37::

Não conseguimos ver nada, então vamos tentar de outra forma. Vamos listar o conteúdo público

rsync –list-only 10.129.228.37::public

Encontramos um arquivo chamado flag.txt e vamos fazer o download dele.

rsync 10.129.228.37::public/flag.txt flag.txt

Em nossa máquina, vamos exibir o conteúdo deste arquivo usando o comando cat:

72eaf5344ebb84908ae543a719830519

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima