
Интерактивный эксплойт на Python без зависимостей для бэкдора vsftpd 2.3.4 (CVE-2011-2523).
Небольшой эксплойт на Python 3 без внешних зависимостей для бэкдора vsftpd 2.3.4 (CVE-2011-2523). Он активирует бэкдор через FTP и даёт вам интерактивную root-оболочку на поднятом слушателе.
Этот скрипт написан как современная замена старым эксплойтам, которые зависели от telnetlib — модуля, удалённого из стандартной библиотеки в Python 3.13. Данная версия использует только стандартную библиотеку и читает вывод оболочки через select вместо фиксированной задержки, поэтому вывод не обрезается.
⚠️ Только для авторизованного использования. Данный инструмент нацелен на заведомо уязвимый сервис и предназначен для обучения безопасности и лабораторных сред, таких как Metasploitable 2. Запускайте его только против систем, которыми вы владеете, или на тест которых у вас есть явное письменное разрешение.
vsftpd 2.3.4 поставлялся с вредоносным бэкдором: любое FTP-имя пользователя, содержащее последовательность :), заставляет демон запустить root-оболочку на TCP/6200. Скрипт:
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]
Примеры:
# Default: FTP on 21, backdoor shell on 6200, verify banner first
python3 vsftpd_backdoor.py 192.168.243.114
# Non-standard FTP port, skip the banner check
python3 vsftpd_backdoor.py 192.168.243.114 -p 2121 --skip-verify
Вводите команды в приглашении vsftpd#; для выхода введите exit (или нажмите Ctrl-C).
Бэкдор одноразовый на каждую активацию: первое подключение к 6200 получает оболочку, и эта оболочка удерживает порт, пока остаётся открытой. Второе соединение не принимается никогда.
Практические последствия:
nc и Metasploit против одной и той же цели одновременно — они будут бороться за единственный слот оболочки, и вы получите сбивающие с толку ошибки («не свежая оболочка», отказ в соединении и т. п.).exit, чтобы удалённый процесс завершился и освободил порт 6200. Некорректное завершение клиента может осиротить процесс и оставить порт застрявшим в открытом состоянии.Если порт 6200 уже занят (порт открыт, но рабочей оболочки нет), перезапустите цель:
# On the target console
sudo netstat -tlnp | grep 6200
sudo kill -9 <pid>
Либо просто перезагрузите виртуальную машину, чтобы получить гарантированно чистый, неактивированный бэкдор.
Распространяется по лицензии MIT. Подробнее см. в LICENSE.