一个经授权的 Kali–Metasploitable2 实验环境,使用 Python 和 Nmap NSE 验证 vsFTPd 2.3.4 中的 CVE-2011-2523。
⚠️ 仅限授权实验环境 — 在隔离的 VirtualBox Host-Only 网络中使用 Kali Linux 和 Metasploitable2 进行。全程未扫描或访问任何未经授权的系统。
CVE-2011-2523 是开源历史上最著名的供应链入侵事件之一。2011 年,vsFTPd 2.3.4 的官方源代码在项目的下载服务器上被植入后门——攻击者修改了二进制文件,使得输入包含 :) 的用户名时会在 TCP 端口 6200 上触发一个后门 shell,从而让任何远程攻击者获得 root 访问权限。
本实验采用结构化的漏洞评估方法验证 CVE-2011-2523:
ftp-vsftpd-backdoor 进行 NSE 后门验证这是真实的漏洞评估工作——与渗透测试人员和 SOC 分析师在开展授权安全评估时所使用的方法论相同。
| 组件 | 详情 |
|---|---|
| 攻击机 | Kali Linux |
| 目标机 | Metasploitable2(故意存在漏洞) |
| 虚拟化平台 | Oracle VirtualBox |
| 网络 | Host-Only 适配器 — 隔离,无互联网访问 |
| 工具 | Python 3、Nmap、NSE、python-nmap 库 |
| 目标 IP | 192.168.56.103 |
| 字段 | 详情 |
|---|---|
| CVE ID | CVE-2011-2523 |
| 受影响软件 | vsFTPd 2.3.4 |
| CVSS 评分 | 10.0 — 严重 |
| 漏洞类型 | 后门 / 供应链入侵 |
| 攻击向量 | 网络 — 无需身份验证 |
| 影响 | 远程 root shell 访问(uid=0) |
| 发现时间 | 2011 年 7 月 |
| MITRE ATT&CK | T1195.002(入侵软件供应链) |
后门工作原理:
当客户端连接到 vsFTPd 2.3.4 并发送包含 :)(笑脸)字符的用户名时,后门代码即被触发——在 TCP 端口 6200 上打开一个监听 shell。连接到端口 6200 即可获得交互式 root shell,无需任何进一步的身份验证。
Step 1: Confirm target IP on Host-Only network
└── ifconfig / ip addr on Metasploitable2
Step 2: Verify connectivity
└── ping 192.168.56.103 from Kali
Step 3: Service & version detection
└── nmap -sV -p 21 192.168.56.103
└── Confirm: vsftpd 2.3.4
Step 4: Python-automated NSE scan
└── python3 pythonnmap.py --host 192.168.56.103 --ports 21
└── NSE scripts executed:
ftp-anon
ftp-bounce
ftp-libopie
ftp-proftpd-backdoor
ftp-vsftpd-backdoor ← CVE-2011-2523 validation
Step 5: Document findings & remediation
sudo nmap -sV -p 21 192.168.56.103
输出:
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
sudo python3 pythonnmap.py --host 192.168.56.103 --ports 21
sudo nmap --script ftp-vsftpd-backdoor -p 21 192.168.56.103
| 服务 | 端口 | 发现 | 证据 |
|---|---|---|---|
| FTP | TCP 21 | 识别出 vsFTPd 2.3.4 — 已知被植入后门的版本 | Nmap 服务/版本扫描 |
| FTP | TCP 21 | 允许匿名 FTP 登录 | ftp-anon NSE 输出 |
| FTP | TCP 21 | 确认目标易受 CVE-2011-2523 影响 | ftp-vsftpd-backdoor NSE 输出 |
| CVE-2011-2523 | TCP 6200 | 后门 shell 返回 uid=0(root) gid=0(root) | NSE 验证输出 |



在真实生产环境中,修复措施应包括:
| 操作 | 优先级 |
|---|---|
| 立即移除 vsFTPd 2.3.4 并替换为已修补版本 | 🔴 严重 |
| 安装前使用 SHA-256 校验和对照官方厂商哈希值验证软件完整性 | 🔴 严重 |
| 除非明确需要,否则禁用匿名 FTP 访问 | 🟠 高 |
| 使用防火墙规则和网络分段限制 FTP 服务暴露 | 🟠 高 |
监控 FTP 认证日志,查找包含 :) 的可疑用户名 | 🟡 中 |
| 考虑将 FTP 完全替换为 SFTP(SSH 文件传输协议) | 🟡 中 |
| 控制项 | 框架 | 相关性 |
|---|---|---|
| T1195.002 | MITRE ATT&CK | 软件供应链入侵 — 后门被注入 vsFTPd 源代码 |
| T1133 | MITRE ATT&CK | 外部远程服务 — 后门开启远程 root shell |
| T1190 | MITRE ATT&CK | 利用面向公众的应用程序 — FTP 服务被远程利用 |
| SI-2 | NIST SP 800-53 | 缺陷修复 — 修补并移除易受攻击的软件 |
| SI-7 | NIST SP 800-53 | 软件完整性 — 部署前验证软件校验和 |
| RA-5 | NIST SP 800-53 | 漏洞监控与扫描 |
| A.12.6 | ISO 27001 | 技术漏洞管理 |
pythonnmap.py 脚本使用 python-nmap 库自动化执行 Nmap NSE 扫描:
# Key functionality
import nmap
scanner = nmap.PortScanner()
scanner.scan(
hosts=target_host,
ports=target_ports,
arguments='-sV --script ftp-anon,ftp-bounce,ftp-libopie,ftp-proftpd-backdoor,ftp-vsftpd-backdoor'
)
Python 自动化的优势:
| 技能 | 详情 |
|---|---|
| CVE 研究 | 从技术层面理解 CVE-2011-2523——攻击向量、后门机制、CVSS 评分 |
| 漏洞验证 | 使用 NSE 脚本在受控环境中确认真实 CVE |
| Nmap 与 NSE | 服务检测、版本扫描以及基于脚本的漏洞验证 |
| Python 安全自动化 | 使用 python-nmap 库自动化 NSE 扫描 |
| 发现文档记录 | 结构化发现表,包含证据、严重性和修复建议 |
| 修复规划 | 产出按优先级排序的修复建议 |
| MITRE ATT&CK 映射 | T1195.002、T1133、T1190——供应链和远程访问技术 |
| NIST 框架映射 | SI-2、SI-7、RA-5——缺陷修复和漏洞扫描控制项 |
| 实验环境安全 | 维持隔离的 Host-Only 网络——未经授权访问的风险为零 |
cve-2011-2523-vsftpd-validation-lab/
│
├── README.md # This file
├── pythonnmap.py # Python-automated Nmap NSE scanner
├── requirements.txt # Python dependencies (python-nmap)
├── .gitignore # Excludes sensitive files
│
└── screenshots/
├── metasploitable-ip-address.png # Target IP confirmation
├── ftp-service-version-scan.png # vsFTPd 2.3.4 detected
└── ftp-vsftpd-cve-validation.png # CVE-2011-2523 validated
# Clone the repository
git clone https://github.com/alexojocyber/cve-2011-2523-vsftpd-validation-lab.git
cd cve-2011-2523-vsftpd-validation-lab
# Install Nmap and Python dependency
sudo apt install -y nmap
pip install -r requirements.txt
# Run the scanner against your authorized lab target
sudo python3 pythonnmap.py --host TARGET_IP --ports 21
本实验仅在隔离的授权环境中使用故意存在漏洞的虚拟机进行。所有扫描和验证仅针对 Host-Only VirtualBox 网络中的 Metasploitable2 执行,无外部连接。本项目仅用于教育和防御性网络安全目的。未经明确书面授权,切勿扫描或测试任何系统。
Alex Ojo — 网络安全学生 | 漏洞评估与安全自动化
🔗 GitHub | LinkedIn | Portfolio