# 2049 - Pentesting Serviço NFS
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! * Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
## **Informações Básicas** **NFS** é um sistema projetado para **cliente/servidor** que permite aos usuários acessar arquivos em uma rede como se esses arquivos estivessem localizados em um diretório local. Um aspecto notável desse protocolo é a 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 de usuário fornecidas pelo cliente** no formato de **autorização necessário do sistema de arquivos**, seguindo principalmente a **sintaxe UNIX**. A autenticação geralmente depende dos identificadores **UID/GID UNIX** e das associações de grupos. No entanto, surge um desafio devido ao potencial desajuste nas **associações de 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**, dada sua dependência desse método de autenticação. **Porta padrão**: 2049/TCP/UDP (exceto a versão 4, que só precisa de TCP ou UDP). ``` 2049/tcp open nfs 2-3 (RPC #100003 ``` ### 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 estabeleceu as bases para desenvolvimentos futuros. - **NFSv3**: Introduzida com uma série de aprimoramentos, o NFSv3 expandiu seu antecessor ao suportar tamanhos de arquivo variáveis e oferecer mecanismos de relatório de erros 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 uma série 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. Seus aprimoramentos de desempenho e a adoção de um protocolo baseado em estado distinguem o NFSv4 como um avanço fundamental nas tecnologias de compartilhamento de arquivos em rede. Cada versão do NFS foi desenvolvida com a intenção de abordar as necessidades em constante evolução dos ambientes de rede, aprimorando progressivamente a segurança, compatibilidade e desempenho. ## Enumeração ### Scripts nmap úteis ```bash nfs-ls #List NFS exports and check permissions nfs-showmount #Like showmount -e nfs-statfs #Disk statistics and info from NFS share ``` ### Módulos úteis do metasploit ```bash scanner/nfs/nfsmount #Scan NFS mounts and list permissions ``` ### Montagem Para saber **qual pasta** o servidor tem **disponível** para montar, você pode perguntar usando: ```bash showmount -e ``` Em seguida, monte usando: ```bash mount -t nfs [-o vers=2] : -o nolock ``` Deve-se especificar para **usar a versão 2** porque ela não possui **nenhuma** forma de **autenticação** ou **autorização**. **Exemplo:** ```bash mkdir /mnt/new_back mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock ``` ## 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 alterar o UID e GID facilmente para ter acesso aos arquivos, você pode usar [nfsshell](https://github.com/NetDirect/nfsshell). [Tutorial legal do NFSShell.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/) ## Arquivos de configuração ``` /etc/exports /etc/lib/nfs/etab ``` ### Configurações perigosas - **Permissões de Leitura e Escrita (`rw`):** Essa configuração permite tanto a leitura quanto a escrita no sistema de arquivos. É essencial considerar as implicações de conceder um acesso tão amplo. - **Uso de Portas Inseguras (`insecure`):** Quando habilitado, 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`):** Essa configuração torna os diretórios visíveis mesmo se outro sistema de arquivos estiver montado abaixo de um diretório exportado. Cada diretório requer sua própria entrada de exportação para um gerenciamento adequado. - **Propriedade de Arquivos Raiz (`no_root_squash`):** Com essa configuração, arquivos criados pelo usuário raiz mantêm seu UID/GID original de 0, ignorando o princípio do menor privilégio e potencialmente concedendo permissões excessivas. - **Não Supressão de Todos os Usuários (`no_all_squash`):** Essa opção garante que as identidades dos usuários sejam preservadas em todo o sistema, o que poderia levar a problemas de permissão e controle de acesso se não forem tratados corretamente. ## Escalação de Privilégios usando configurações incorretas do NFS [Escalação de Privilégios do NFS no\_root\_squash e no\_all\_squash](../linux-hardening/privilege-escalation/nfs-no\_root_squash-misconfiguration-pe.md) ## Comandos Automáticos do HackTricks ``` Protocol_Name: NFS #Protocol Abbreviation if there is one. Port_Number: 2049 #Comma separated if there is more than one. Protocol_Description: Network File System #Protocol Abbreviation Spelled out Entry_1: Name: Notes Description: Notes for NFS Note: | NFS is a system designed for client/server that enables users to seamlessly access files over a network as though these files were located within a local directory. #apt install nfs-common showmount 10.10.10.180 ~or~showmount -e 10.10.10.180 should show you available shares (example /home) mount -t nfs -o ver=2 10.10.10.180:/home /mnt/ cd /mnt nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in https://book.hacktricks.xyz/pentesting/nfs-service-pentesting Entry_2: Name: Nmap Description: Nmap with NFS Scripts Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP} ```
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! * Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.