mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-01 08:59:30 +00:00
160 lines
12 KiB
Markdown
160 lines
12 KiB
Markdown
# 2049 - Pentesting Serviço NFS
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* 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)**.
|
|
|
|
</details>
|
|
|
|
## **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 <IP>
|
|
```
|
|
Em seguida, monte-o usando:
|
|
```bash
|
|
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:**
|
|
```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}
|
|
```
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* 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)**.
|
|
|
|
</details>
|