2049 - Pentesting NFS Service
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Informações Básicas
NFS é um sistema projetado para cliente/servidor que permite aos usuários acessar arquivos de forma contínua através de uma rede como se esses arquivos estivessem localizados em um diretório local.
Um aspecto notável deste protocolo é a sua falta de mecanismos de autenticação ou autorização integrados. Em vez disso, a autorização depende das informações do sistema de arquivos, com o servidor encarregado de traduzir com precisão as informações do usuário fornecidas pelo cliente para o formato de autorização exigido pelo sistema de arquivos, seguindo principalmente a sintaxe UNIX.
A autenticação geralmente depende de identificadores UID
/GID
do UNIX e associações de grupos. No entanto, um desafio surge devido ao potencial descompasso nas mapeações UID
/GID
entre clientes e servidores, não deixando espaço para verificação adicional pelo servidor. Consequentemente, o protocolo é mais adequado para uso em redes confiáveis, dado que depende desse método de autenticação.
Porta padrão: 2049/TCP/UDP (exceto a versão 4, que precisa apenas de TCP ou UDP).
Versões
NFSv2: Esta versão é reconhecida por sua ampla compatibilidade com vários sistemas, marcando sua importância com operações iniciais predominantemente sobre UDP. Sendo a mais antiga da série, ela lançou as bases para desenvolvimentos futuros.
NFSv3: Introduzido com uma série de melhorias, o NFSv3 expandiu seu predecessor ao suportar tamanhos de arquivo variáveis e oferecer mecanismos de relatórios de erro aprimorados. Apesar de seus avanços, enfrentou limitações na compatibilidade total com clientes NFSv2.
NFSv4: Uma versão marcante na série NFS, o NFSv4 trouxe um conjunto de recursos projetados para modernizar o compartilhamento de arquivos em redes. Melhorias notáveis incluem a integração do Kerberos para alta segurança, a capacidade de atravessar firewalls e operar pela Internet sem a necessidade de portmappers, suporte para Listas de Controle de Acesso (ACLs) e a introdução de operações baseadas em estado. Suas melhorias de desempenho e a adoção de um protocolo com estado distinguem o NFSv4 como um avanço crucial nas tecnologias de compartilhamento de arquivos em rede.
Cada versão do NFS foi desenvolvida com a intenção de atender às necessidades em evolução dos ambientes de rede, aprimorando progressivamente a segurança, compatibilidade e desempenho.
Enumeração
Scripts nmap úteis
Módulos úteis do metasploit
Montando
Para saber qual pasta o servidor tem disponível para montar, você pode perguntar a ele usando:
Então monte-o usando:
Você deve especificar para usar a versão 2 porque ela não tem nenhuma autenticação ou autorização.
Exemplo:
Permissões
Se você montar uma pasta que contém arquivos ou pastas acessíveis apenas por algum usuário (por UID). Você pode criar localmente um usuário com esse UID e usando esse usuário você poderá acessar o arquivo/pasta.
NSFShell
Para listar, montar e mudar facilmente UID e GID para ter acesso a arquivos, você pode usar nfsshell.
Ótimo tutorial sobre NFSShell.
Arquivos de configuração
Configurações Perigosas
Permissões de Leitura e Escrita (
rw
): Esta configuração permite tanto a leitura quanto a escrita no sistema de arquivos. É essencial considerar as implicações de conceder acesso tão amplo.Uso de Portas Inseguras (
insecure
): Quando ativado, isso permite que o sistema utilize portas acima de 1024. A segurança das portas acima desse intervalo pode ser menos rigorosa, aumentando o risco.Visibilidade de Sistemas de Arquivos Aninhados (
nohide
): Esta configuração torna diretórios visíveis mesmo que outro sistema de arquivos esteja montado abaixo de um diretório exportado. Cada diretório requer sua própria entrada de exportação para gerenciamento adequado.Propriedade de Arquivos do Root (
no_root_squash
): Com esta configuração, arquivos criados pelo usuário root mantêm seu UID/GID original de 0, desconsiderando o princípio do menor privilégio e potencialmente concedendo permissões excessivas.Não Squashing de Todos os Usuários (
no_all_squash
): Esta opção garante que as identidades dos usuários sejam preservadas em todo o sistema, o que pode levar a problemas de permissão e controle de acesso se não for tratado corretamente.
Escalada de Privilégios usando configurações incorretas do NFS
NFS no_root_squash e no_all_squash escalada de privilégios
HackTricks Comandos Automáticos
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated