hacktricks/network-services-pentesting/nfs-service-pentesting.md
2024-12-12 13:56:11 +01:00

8.5 KiB

2049 - Pentesting NFS Service

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

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

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 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

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

Montando

Para saber qual pasta o servidor tem disponível para montar, você pode perguntar a ele usando:

showmount -e <IP>

Então monte-o usando:

mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock

Você deve especificar para usar a versão 2 porque ela não tem nenhuma 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 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

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

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

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}

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}