hacktricks/network-services-pentesting/nfs-service-pentesting.md

9.5 KiB

2049 - Pentesting Serviço NFS

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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 possui mecanismo de autenticação ou autorização. A autorização é obtida a partir das informações disponíveis no 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 UNIX e associações de grupos, razão pela qual essa sintaxe é a 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, o NFS deve ser apenas usado 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)

Versão Recursos
NFSv2 É mais antiga mas é suportada por muitos sistemas e inicialmente operava totalmente 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 baseado em estado.

Enumeração

Scripts nmap úteis

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

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:

showmount -e <IP>

Em seguida, monte usando:

mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -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:

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 usar esse usuário para acessar o arquivo/pasta.

NSFShell

Para listar, montar e alterar o UID e GID facilmente para ter acesso aos arquivos, você pode usar nfsshell.

Tutorial legal do NFSShell.

Arquivos de configuração

/etc/exports
/etc/lib/nfs/etab

Configurações perigosas

(De 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, este 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 configurações incorretas do NFS

Escalação de privilégios do NFS no_root_squash e no_all_squash

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 🎥