# 2049 - Pentesting Serviço NFS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você 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 do 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
## **Informações Básicas** É um sistema cliente/servidor que permite aos usuários acessar arquivos em uma rede e tratá-los como se estivessem em um diretório de arquivos local. Tem o mesmo propósito que o SMB, mas não pode se comunicar com o SMB. O protocolo NFS não tem **mecanismo de autenticação** ou **autorização**. A autorização é obtida a partir das informações disponíveis do sistema de arquivos, onde o servidor é responsável por traduzir as informações do **usuário** fornecidas pelo **cliente** para as do **sistema de arquivos** e converter as informações de autorização correspondentes da maneira mais correta possível na sintaxe exigida pelo UNIX. A autenticação mais comum é via `UID`/`GID` do UNIX e `membros do grupo`, razão pela qual essa sintaxe é mais provável de ser aplicada ao protocolo NFS. Um problema é que o **cliente** e o **servidor** **não necessariamente** precisam ter as **mesmas correspondências de UID/GID** para usuários e grupos. Nenhuma verificação adicional pode ser feita por parte do servidor. É por isso que o NFS deve ser usado **apenas** com esse método de autenticação em **redes confiáveis**. **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 (De [https://academy.hackthebox.com/module/112/section/1068](https://academy.hackthebox.com/module/112/section/1068)) | **Versão** | **Recursos** | | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `NFSv2` | É **mais antiga** mas é suportada por muitos sistemas e inicialmente operava inteiramente sobre UDP. | | `NFSv3` | Possui mais recursos, incluindo tamanho de arquivo variável e melhor relatório de erros, mas não é totalmente compatível com clientes NFSv2. | | `NFSv4` | Inclui Kerberos, funciona através de firewalls e na Internet, **não requer mais portmappers**, suporta ACLs, aplica operações baseadas em estado e fornece melhorias de desempenho e alta **segurança**. É também a primeira versão a ter um protocolo stateful. | ## Enumeração ### Scripts úteis do nmap ```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 #### NFS - `auxiliary/scanner/nfs/nfsmount`: Este módulo permite verificar se um compartilhamento NFS está acessível e montá-lo localmente. - `auxiliary/scanner/nfs/nfs_showmount`: Este módulo permite verificar se um compartilhamento NFS está acessível e listar os diretórios compartilhados. - `exploit/linux/nfs/nfs_trunc`: Este módulo explora uma vulnerabilidade de truncamento de arquivos no serviço NFS em sistemas Linux. - `exploit/solaris/nfs/nfs_ilist`: Este módulo explora uma vulnerabilidade de estouro de buffer no serviço NFS em sistemas Solaris. - `exploit/solaris/nfs/nfs_sharectl`: Este módulo explora uma vulnerabilidade de escape de shell no serviço NFS em sistemas Solaris. #### RPC - `auxiliary/scanner/portmap/rpcinfo`: Este módulo permite verificar se um serviço RPC está acessível e listar os programas e versões disponíveis. - `auxiliary/scanner/portmap/portmap_dump`: Este módulo permite verificar se um serviço RPC está acessível e listar as informações do mapa de porta. - `auxiliary/scanner/portmap/portmap_version`: Este módulo permite verificar se um serviço RPC está acessível e obter a versão do serviço. - `exploit/freebsd/nfsd/nfsd_setresuid`: Este módulo explora uma vulnerabilidade de escalonamento de privilégios no serviço rpc.nfsd em sistemas FreeBSD. - `exploit/linux/misc/nfs_rpcidmapd`: Este módulo explora uma vulnerabilidade de escalonamento de privilégios no serviço rpc.idmapd em sistemas Linux. - `exploit/solaris/rpc/cachefsd`: Este módulo explora uma vulnerabilidade de escalonamento de privilégios no serviço cachefsd em sistemas Solaris. #### Samba - `auxiliary/scanner/smb/smb_enumshares`: Este módulo permite listar os compartilhamentos disponíveis em um servidor Samba. - `auxiliary/scanner/smb/smb_enumusers`: Este módulo permite listar os usuários disponíveis em um servidor Samba. - `auxiliary/scanner/smb/smb_login`: Este módulo permite tentar fazer login em um servidor Samba com credenciais conhecidas. - `exploit/linux/samba/is_known_pipename`: Este módulo explora uma vulnerabilidade de escalonamento de privilégios no serviço Samba em sistemas Linux. - `exploit/multi/samba/usermap_script`: Este módulo explora uma vulnerabilidade de escalonamento de privilégios no serviço Samba em sistemas Unix-like. - `exploit/windows/smb/ms08_067_netapi`: Este módulo explora uma vulnerabilidade de execução remota de código no serviço Server Message Block (SMB) em sistemas Windows. ```bash scanner/nfs/nfsmount #Scan NFS mounts and list permissions ``` ### Montagem Para saber **qual pasta** o servidor tem **disponível** para montagem, você pode perguntar usando: ```bash showmount -e ``` Em seguida, monte-o usando: ```bash mount -t nfs [-o vers=2] : -o nolock ``` Você deve especificar o uso da **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 UID e GID para ter acesso a arquivos com facilidade, você pode usar o [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 (De [https://academy.hackthebox.com/module/112/section/1068](https://academy.hackthebox.com/module/112/section/1068)) | **Opção** | **Descrição** | | ---------------- | -------------------------------------------------------------------------------------------------------------------- | | `rw` | Permissões de leitura e escrita. | | `insecure` | Portas acima de 1024 serão usadas. | | `nohide` | Se outro sistema de arquivos foi montado abaixo de um diretório exportado, esse diretório é exportado por sua própria entrada de exportação. | | `no_root_squash` | Todos os arquivos criados pelo root são mantidos com o UID/GID 0. | | `no_all_squash` | | ## Escalação de privilégios usando má configuração do NFS [Escalação de privilégios 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: | It is a client/server system that allows users to access files across a network and treat them as if they resided in a local file 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} ```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você 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 do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.