Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
proftpd-site-copy-dest-follow — ProFTPD 1.3.9d - 高 - リモート - 権限残留 / ファイル書き込み - SITE COPY の宛先がシンボリックリンクを追跡 | Kitploit
ツール/GitHubGitHub/abraxas/proftpd-site-copy-dest-follow
特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用セキュリティ仮想化ペネトレーションテスト論文と研究ラボと実践

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHub
abraxas/proftpd-site-copy-dest-follow

proftpd-site-copy-dest-follow

ProFTPD 1.3.9d - 高 - リモート - 権限残留 / ファイル書き込み - SITE COPY の宛先がシンボリックリンクを追跡

リポジトリを見る
97日前未レビュー

Abraxas Labs - proftpd-site-copy-dest-follow

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-site-copy-dest-follow

proftpd-site-copy-dest-follow

クラス: 権限の取りこぼし / ファイル書き込み 到達範囲: リモート

ProFTPD 1.3.9d (f59f248) - proftpd.org

contrib の mod_copy の SITE COPY は、dest を dir_canonical_vpath(未解決)で Limit チェックする。その後 pr_fs_copy_file2 が dest を O_NOFOLLOW なしで open するため、dest のシンボリックリンクが辿られる。FTP STOR は解決済みパス(dir_realpath / dir_best_path)で Limit チェックする。SITE COPY の dest はそうではない。

認証済み FTP ユーザーが、dest のシンボリックリンクを対象ファイルに向けて SITE COPY を発行することで、WRITE 拒否されたファイルを上書きする。 被害者への直接 STOR および SITE COPY は 550 のまま。リンクに対する STOR / SITE RMDIR / RMD も 550 のまま。DELE はリンクノードのみを削除する。シェルはなし。Unix DAC は依然として適用される。

これは公開されている Issue 2095(SITE COPY の source READ スキップ)の逆である。公開されている Issue 2256(RNTO EXDEV シンボリックリンク追従)とは別物である。この取りこぼしは EXDEV だけでなく、すべてのコピーにおける SITE COPY の dest である。

IDCVE 未割当
クラス権限の取りこぼし / ファイル書き込み
到達範囲リモート(認証済み FTP)
CWECWE-59, CWE-863
CVSSHigh: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
製品ProFTPD
影響1.3.9d タグ v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_copy
認証認証済み FTP(mod_copy ロード済み、CopyEngine デフォルト有効)。SITE SYMLINK の設置には、リンクが既に存在しない限り contrib mod_site_misc も必要
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

誰が: 認証済み FTP ユーザー。mod_copy ロード済み。WRITE 許可ディレクトリ内の dest シンボリックリンク(SITE SYMLINK、または既存のリンク)。SITE SYMLINK の src は dir_check_canon G_READ を使用するため、被害者ファイルへのリンクを設置するにはそのファイルへの READ が必要。この分離は READ 許可、WRITE 拒否である。セッション UID は依然としてターゲットを Unix で書き込める必要がある。

手法シンク権限
WRITE 許可ディレクトリ内の SITE SYMLINK(または既存リンク)で、そのターゲットが UID で Unix 書き込み可能な WRITE 拒否ファイル; そのリンクを src とする読み取り可能な SITE COPYpr_fsio_open の dest が追従完全性(ラボ実証済み): Limit 拒否されたファイルをセッション UID として切り詰め/上書き。ラボ: /secret/victim が ORIGINAL から SITE COPY /readable/src.txt /upload/link 後の witness に変化。/secret/victim への直接 SITE COPY は 550 のまま。
同じリンクに対する SITE RMDIRdir_check_canon -> dir_best_pathクローズ済み(ラボ実証済み): 550 RMDIR /upload/link: Operation not permitted。被害者は無傷。
同じリンクに対するコア RMDdir_best_path + WRITEクローズ済み(ラボ実証済み): 550 Permission denied。被害者は無傷。
dest リンクへの STORdir_best_path + WRITEクローズ済み(ラボ実証済み): STOR /upload/link -> 550。被害者は無傷。
dest リンクへの DELEリンクノードの unlink被害者に対してクローズ済み(ラボ実証済み): DELE はリンクのみを削除; 被害者は依然として witness を保持。
ホスト /etc への DefaultRoot ジェイルchrootクローズ済み。Unix DAC は依然として適用される。未認証なし。シェルなし。

ラボ実証済み vs 推測: 未解決 dest シンボリックリンク経由の上書き、拒否された STOR/RMDIR/RMD、およびリンクのみの DELE はラボ実証済み。未認証および Unix DAC は認証/chroot モデルからの推測のまま。

発見の経緯

私は proftpd/proftpd v1.3.9d (f59f248) を固定した。サンプル basic.conf を使用したデフォルトのコア FTP には未公開の Crit/High はなかった。次に contrib の mod_copy に取り組んだ。

copy_copy(contrib/mod_copy.c)は dest を dir_canonical_vpath で構築し、その未解決文字列に対して dir_check(..., G_WRITE, to) を実行する。pr_fs_copy_file2(src/fsio.c)は stat/open が dest シンボリックリンクを辿るとコメントし、その後 pr_fsio_open(dst, O_WRONLY|O_CREAT|O_NONBLOCK) を O_NOFOLLOW なしで実行する。

公開 Issue 2095 は SITE COPY の source READ スキップである。その正確なバグはスキップする。公開 Issue 2256 は RNTO EXDEV 追従である。この取りこぼしはすべてのコピーにおける SITE COPY の dest である。

SITE RMDIR の再帰追従は親のドロップであった: SITE RMDIR は dir_check_canon / dir_best_path を使用し、これらは Limit の前にシンボリックリンクを解決する。ラボで SITE RMDIR およびコア RMD が dest リンクに対して拒否されたままであることを確認した。

既に記録済みの誤った道: STOR がそうであるからといって dest の Limit を解決済みとして扱うこと; Issue 2256 をこの取りこぼしと同一視すること; SITE RMDIR が被害者を辿ると主張すること。見せかけ: リバースシェル。オラクルは、/upload/link 経由の SITE COPY 後に /secret/victim が witness を保持し、リンクへの STOR が依然として 550 であることである。

ラボ

python3 proftpd-site-copy-dest-follow-Abraxas-Labs.py

または:

cd lab
./run.sh

ループバック FTP 127.0.0.1:18720、パッシブ 18721-18730。Compose プロジェクト proftpd-site-copy-dest-follow。Witness PROFTPD-SITE-COPY-DEST-FOLLOW-WITNESS。最終行:

SUCCESS PROFTPD-SITE-COPY-DEST-FOLLOW victim-has-witness=yes stor-secret=denied stor-link=denied site-rmdir-walk=no rmd-walk=no dele-victim=intact PROFTPD-SITE-COPY-DEST-FOLLOW-WITNESS

修正

解決済みの dest を Limit チェックする(dir_realpath / dir_best_path)、または dest を O_NOFOLLOW で開く。STOR は既に解決済みパスを Limit チェックしている。

ベンダーへの報告は [email protected]。proftpd/proftpd に公開 GitHub issue を立てないこと。

参考文献

  • github.com/proftpd/proftpd タグ v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_copy.c copy_copy
  • src/fsio.c pr_fs_copy_file2
  • 逆: Issue 2095 SITE COPY source <Limit READ>
  • 別物: Issue 2256 RNTO EXDEV シンボリックリンク追従
  • CWE-59 · CWE-863

ライセンス

GNU Affero GPL v3.0。LICENSE を参照。ループバックラボのみ。無保証。

ツールをダウンロード