
一个轻量级、无外部依赖的 Python 3 利用工具,用于 vsftpd 2.3.4 后门(CVE-2011-2523)。它通过 FTP 触发后门,并将你放入一个交互式 root shell 中,连接到生成的监听器。
作为依赖 telnetlib 的旧利用脚本的现代替代品编写——该库已在 Python 3.13 中从标准库中移除。此版本仅使用标准库,并通过 select 读取 shell,而不是固定睡眠,因此输出不会被截断。
⚠️ 仅限授权使用。 此工具针对已知存在漏洞的服务,旨在用于安全教育和实验室环境,例如 Metasploitable 2。仅在你拥有或获得明确书面许可的系统上运行。
vsftpd 2.3.4 附带了一个恶意后门:任何包含 :) 序列的 FTP 用户名都会导致守护进程在 TCP/6200 上绑定一个 root shell。该脚本执行以下操作:
vsftpd 2.3.4。USER <name>:) / PASS <anything> 以触发后门。id; uname -a 确认权限。python3 vsftpd_backdoor.py <target-ip> [-p FTP_PORT] [-s SHELL_PORT] [--skip-verify]
示例:
# 默认:FTP 在 21 端口,后门 shell 在 6200 端口,首先验证横幅
python3 vsftpd_backdoor.py 192.168.243.114
# 非标准 FTP 端口,跳过横幅检查
python3 vsftpd_backdoor.py 192.168.243.114 -p 2121 --skip-verify
在 vsftpd# 提示符下输入命令;输入 exit(或 Ctrl-C)退出。
该后门是每次触发仅一次:第一个连接到 6200 的连接获得 shell,并且该 shell 在保持打开状态期间占用该端口。没有任何东西会接受第二个连接。
实际后果:
nc 和 Metasploit——它们会争夺唯一的 shell 槽位,导致令人困惑的失败("不是新 shell"、"连接被拒绝"等)。exit 离开 shell,以便远程进程终止并释放 6200。不干净地终止客户端可能导致进程成为孤儿,使端口保持打开状态。如果 6200 已被绑定(端口开放但没有可用的 shell),请重置目标:
sudo netstat -tlnp | grep 6200
sudo kill -9 <pid>
或者直接重启虚拟机,以保证后门干净且未被触发。
根据 MIT 许可证分发。更多信息请参阅 LICENSE。