12 KiB
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!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
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)
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
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.
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:
showmount -e <IP>
Em seguida, monte-o usando:
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -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:
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.
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, 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
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!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.