mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
140 lines
8.7 KiB
Markdown
140 lines
8.7 KiB
Markdown
# 2049 - NFS 서비스 펜테스팅
|
|
|
|
{% hint style="success" %}
|
|
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>HackTricks 지원하기</summary>
|
|
|
|
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
|
|
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
|
|
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## **기본 정보**
|
|
|
|
**NFS**는 사용자가 네트워크를 통해 파일에 원활하게 접근할 수 있도록 설계된 **클라이언트/서버** 시스템입니다. 마치 이러한 파일이 로컬 디렉토리에 있는 것처럼 접근할 수 있습니다.
|
|
|
|
이 프로토콜의 주목할 만한 점은 내장된 **인증** 또는 **권한 부여 메커니즘**이 없다는 것입니다. 대신, 권한 부여는 **파일 시스템 정보**에 의존하며, 서버는 **클라이언트가 제공한 사용자 정보**를 파일 시스템의 요구하는 **권한 부여 형식**으로 정확하게 변환하는 역할을 합니다. 주로 **UNIX 구문**을 따릅니다.
|
|
|
|
인증은 일반적으로 **UNIX `UID`/`GID` 식별자 및 그룹 멤버십**에 의존합니다. 그러나 클라이언트와 서버 간의 **`UID`/`GID` 매핑**의 불일치로 인해 서버에서 추가 검증을 할 수 있는 여지가 없어 도전 과제가 발생합니다. 따라서 이 프로토콜은 인증 방법에 의존하기 때문에 **신뢰할 수 있는 네트워크** 내에서 사용하는 것이 가장 적합합니다.
|
|
|
|
**기본 포트**: 2049/TCP/UDP (버전 4를 제외하고, TCP 또는 UDP만 필요함). 
|
|
```
|
|
2049/tcp open nfs 2-3 (RPC #100003
|
|
```
|
|
### Versions
|
|
|
|
- **NFSv2**: 이 버전은 다양한 시스템과의 폭넓은 호환성으로 인식되며, 주로 UDP를 통한 초기 작업으로 그 중요성을 나타냅니다. **가장 오래된** 버전으로, 향후 개발의 기초를 마련했습니다.
|
|
|
|
- **NFSv3**: 다양한 개선 사항과 함께 도입된 NFSv3는 이전 버전을 기반으로 하여 가변 파일 크기를 지원하고 개선된 오류 보고 메커니즘을 제공합니다. 발전에도 불구하고 NFSv2 클라이언트와의 완전한 하위 호환성에는 한계가 있었습니다.
|
|
|
|
- **NFSv4**: NFS 시리즈의 이정표 버전인 NFSv4는 네트워크 간 파일 공유를 현대화하기 위해 설계된 기능 모음을 가져왔습니다. 주목할 만한 개선 사항으로는 **높은 보안**을 위한 Kerberos 통합, 방화벽을 통과하고 포트 매퍼 없이 인터넷에서 작동할 수 있는 기능, 접근 제어 목록(ACL) 지원, 상태 기반 작업의 도입이 있습니다. 성능 향상과 상태 기반 프로토콜의 채택은 NFSv4를 네트워크 파일 공유 기술의 중요한 발전으로 구별합니다.
|
|
|
|
각 NFS 버전은 네트워크 환경의 진화하는 요구를 해결하기 위해 개발되었으며, 보안, 호환성 및 성능을 점진적으로 향상시켰습니다.
|
|
|
|
## Enumeration
|
|
|
|
### Useful nmap scripts
|
|
```bash
|
|
nfs-ls #List NFS exports and check permissions
|
|
nfs-showmount #Like showmount -e
|
|
nfs-statfs #Disk statistics and info from NFS share
|
|
```
|
|
### 유용한 메타스플로잇 모듈
|
|
```bash
|
|
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
|
|
```
|
|
### Mounting
|
|
|
|
서버가 **마운트**할 수 있는 **어떤 폴더**가 있는지 알기 위해 다음과 같이 요청할 수 있습니다:
|
|
```bash
|
|
showmount -e <IP>
|
|
```
|
|
그런 다음 다음을 사용하여 마운트합니다:
|
|
```bash
|
|
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
|
|
```
|
|
당신은 **버전 2를 사용해야** 합니다. 왜냐하면 **인증**이나 **권한 부여**가 **전혀** 없기 때문입니다.
|
|
|
|
**예:**
|
|
```bash
|
|
mkdir /mnt/new_back
|
|
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
|
```
|
|
## Permissions
|
|
|
|
폴더를 마운트하면 **일부 사용자만 접근할 수 있는 파일 또는 폴더**가 포함되어 있습니다(**UID**에 의해). 해당 **UID**를 가진 사용자를 **로컬**에서 생성하면, 그 **사용자**를 사용하여 파일/폴더에 **접근**할 수 있습니다.
|
|
|
|
## NSFShell
|
|
|
|
파일에 접근하기 위해 UID와 GID를 쉽게 나열하고, 마운트하고 변경하려면 [nfsshell](https://github.com/NetDirect/nfsshell)을 사용할 수 있습니다.
|
|
|
|
[멋진 NFSShell 튜토리얼.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
|
|
|
## Config files
|
|
```
|
|
/etc/exports
|
|
/etc/lib/nfs/etab
|
|
```
|
|
### 위험한 설정
|
|
|
|
- **읽기 및 쓰기 권한 (`rw`):** 이 설정은 파일 시스템에서 읽기와 쓰기를 모두 허용합니다. 이렇게 광범위한 접근을 허용하는 것의 의미를 고려하는 것이 중요합니다.
|
|
|
|
- **안전하지 않은 포트 사용 (`insecure`):** 이 기능이 활성화되면 시스템이 1024 이상의 포트를 사용할 수 있습니다. 이 범위 이상의 포트의 보안은 덜 엄격할 수 있어 위험이 증가합니다.
|
|
|
|
- **중첩 파일 시스템의 가시성 (`nohide`):** 이 구성은 다른 파일 시스템이 내보낸 디렉토리 아래에 마운트되어 있어도 디렉토리를 볼 수 있게 합니다. 각 디렉토리는 적절한 관리를 위해 자체 내보내기 항목이 필요합니다.
|
|
|
|
- **루트 파일 소유권 (`no_root_squash`):** 이 설정을 사용하면 루트 사용자가 생성한 파일이 원래의 UID/GID인 0을 유지하여 최소 권한 원칙을 무시하고 과도한 권한을 부여할 수 있습니다.
|
|
|
|
- **모든 사용자 비스쿼시 (`no_all_squash`):** 이 옵션은 사용자 신원이 시스템 전반에 걸쳐 유지되도록 보장하며, 올바르게 처리되지 않으면 권한 및 접근 제어 문제를 일으킬 수 있습니다.
|
|
|
|
## NFS 잘못된 구성으로 인한 권한 상승
|
|
|
|
[NFS no\_root\_squash 및 no\_all\_squash 권한 상승](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
|
|
|
|
## 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: |
|
|
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" %}
|
|
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>HackTricks 지원하기</summary>
|
|
|
|
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
|
|
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
|
|
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
|
|
|
</details>
|
|
{% endhint %}
|