
Abhängigkeitsfreier interaktiver Python-Exploit für die vsftpd-2.3.4-Backdoor (CVE-2011-2523).
Ein kleiner, abhängigkeitsfreier Python-3-Exploit für die vsftpd-2.3.4-Backdoor (CVE-2011-2523). Er löst die Backdoor über FTP aus und bringt dich in eine interaktive Root-Shell auf dem gestarteten Listener.
Geschrieben als moderner Ersatz für alte Exploit-Skripte, die von telnetlib abhingen – entfernt aus der Standardbibliothek in Python 3.13. Diese Version verwendet ausschließlich die Standardbibliothek und liest die Shell mit select statt eines festen Sleeps, sodass die Ausgabe nicht abgeschnitten wird.
⚠️ Nur für autorisierte Nutzung. Dies richtet sich gegen einen Dienst mit bekannter Schwachstelle und ist für Sicherheitsschulungen und Laborumgebungen wie Metasploitable 2 gedacht. Führe es nur gegen Systeme aus, die dir gehören oder für die du eine ausdrückliche schriftliche Genehmigung zum Testen hast.
vsftpd 2.3.4 wurde mit einer bösartigen Backdoor ausgeliefert: Jeder FTP-Benutzername, der die Sequenz :) enthält, veranlasst den Daemon, eine Root-Shell an TCP/6200 zu binden. Das Skript:
vsftpd 2.3.4.USER <name>:) / , um die Backdoor auszulösen.PASS <anything>id; uname -a bestätigt werden.python3 vsftpd_backdoor.py <target-ip> [-p FTP_PORT] [-s SHELL_PORT] [--skip-verify]
Beispiele:
# 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
Gib Befehle an der vsftpd#-Eingabeaufforderung ein; tippe exit (oder Strg-C), um zu beenden.
Die Backdoor ist Einmal-pro-Auslösung: Die erste Verbindung zu 6200 erhält die Shell, und diese Shell hält den Port, solange sie geöffnet ist. Nichts akzeptiert jemals eine zweite Verbindung.
Praktische Konsequenzen:
nc und Metasploit nicht gleichzeitig gegen dasselbe Ziel aus – sie kämpfen um den einzigen Shell-Slot und du erhältst verwirrende Fehler („keine frische Shell", Verbindung abgelehnt usw.).exit, damit der entfernte Prozess stirbt und 6200 freigibt. Ein unsauberes Beenden des Clients kann den Prozess verwaist zurücklassen und den Port blockiert halten.Wenn 6200 bereits gebunden ist (Port offen, aber keine brauchbare Shell), setze das Ziel zurück:
# On the target console
sudo netstat -tlnp | grep 6200
sudo kill -9 <pid>
Oder starte die VM einfach neu, für eine garantiert saubere, nicht ausgelöste Backdoor.
Verteilt unter der MIT-Lizenz. Siehe LICENSE für weitere Informationen.