# 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)**.