
Dependency-free interactive Python exploit for the vsftpd 2.3.4 backdoor (CVE-2011-2523).
Um exploit pequeno e sem dependências em Python 3 para o backdoor do vsftpd 2.3.4 (CVE-2011-2523). Ele aciona o backdoor via FTP e te leva para um shell root interativo no listener criado.
Escrito como uma substituição moderna para scripts de exploit antigos que dependiam de telnetlib — removido da biblioteca padrão no Python 3.13. Esta versão usa apenas a biblioteca padrão e lê o shell com select em vez de um sleep fixo, para que a saída não seja truncada.
⚠️ Apenas para uso autorizado. Este exploit tem como alvo um serviço conhecidamente vulnerável e é destinado à educação em segurança e ambientes de laboratório, como o Metasploitable 2. Execute apenas contra sistemas que você possui ou para os quais tem permissão explícita por escrito para testar.
O vsftpd 2.3.4 foi distribuído com um backdoor malicioso: qualquer nome de usuário FTP contendo a sequência :) faz o daemon vincular um shell root na porta TCP/6200. O script:
vsftpd 2.3.4.USER <nome>:) / PASS <qualquer coisa> para acionar o backdoor.id; uname -a.python3 vsftpd_backdoor.py <target-ip> [-p FTP_PORT] [-s SHELL_PORT] [--skip-verify]
Exemplos:
# Padrão: FTP na porta 21, shell backdoor na porta 6200, verificar banner primeiro
python3 vsftpd_backdoor.py 192.168.243.114
# Porta FTP não padrão, pular verificação do banner
python3 vsftpd_backdoor.py 192.168.243.114 -p 2121 --skip-verify
Digite comandos no prompt vsftpd#; digite exit (ou Ctrl-C) para sair.
O backdoor é de uso único por acionamento: a primeira conexão à porta 6200 recebe o shell, e esse shell mantém a porta ocupada enquanto estiver aberta. Nada jamais aceita uma segunda conexão.
Consequências práticas:
nc e Metasploit contra o mesmo alvo simultaneamente — eles disputarão o único slot do shell e você terá falhas confusas ("shell não é novo", conexão recusada, etc.).exit para que o processo remoto morra e libere a porta 6200. Matar o cliente de forma inadequada pode deixar o processo órfão e a porta travada.Se a porta 6200 já estiver vinculada (porta aberta mas sem shell utilizável), reinicie o alvo:
# No console do alvo
sudo netstat -tlnp | grep 6200
sudo kill -9 <pid>
Ou simplesmente reinicie a VM para um backdoor limpo e não acionado.
Distribuído sob a Licença MIT. Veja LICENSE para mais informações.