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

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

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

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

ツールディレクトリ

カテゴリ

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
abraxas/proftpd-sftp-copy-file-write

proftpd-sftp-copy-file-write

ProFTPD 1.3.9d - 高 - リモート - 権限残留 / ファイル書き込み - SFTP copy-file が宛先 WRITE をスキップ

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

Abraxas Labs - proftpd-sftp-copy-file-write

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-sftp-copy-file-write

proftpd-sftp-copy-file-write

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

ProFTPD 1.3.9d (f59f248) - proftpd.org

contrib の mod_sftp は、SFTPEngine が有効になると copy-file をアドバタイズする (SFTP_FXP_EXT_DEFAULT)。fxp_handle_ext_copy_file は、pr_fsio_stat(dst) が成功した場合に限り、宛先の WRITE と AllowOverwrite を実行する。まだ存在しない宛先はこのチェックをスキップする。その後 pr_fs_copy_file2 が、<Limit WRITE> DenyAll の配下であっても、セッション UID としてファイルを作成する。

FTP STOR と SFTP OPEN-write は依然として xfer_pre_stor を経由し、これは作成前に必ず dir_check で WRITE を確認する。公開されている Issue 2095 はその逆で、SITE COPY がソースの READ をスキップするものだ。今回の取りこぼしは、新しい名前に対する宛先の WRITE である。

IDCVE 未採番
クラス権限の取りこぼし / ファイル書き込み
到達範囲リモート (認証済み SFTP)
CWECWE-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 (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_sftp
認証認証済み SFTP (SFTPEngine on)
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

私はタグ v1.3.9d を固定し、fxp_handle_ext_copy_file を読んだ。これは偽の SITE COPY の PRE_CMD をディスパッチする。mod_copy は copy_copy を CMD として登録し、PRE_CMD としては登録しないため、FTP の宛先 WRITE チェックはこの経路では決して実行されない。ソースの READ は常に dir_check される。宛先の WRITE は、宛先が既に存在しない限り、されない。ラボは 127.0.0.1:18710 上のループバック SFTP である。

攻撃者ができること

手法シンク権限
SFTP EXTENDED copy-file で読み取り可能な src を、まだ存在しない宛先名へ、<Limit WRITE> DenyAll を含む <Directory> 配下でコピーpr_fs_copy_file2完全性 (ラボで実証): そのファイルをセッション UID として作成する。偵察 (ラボで実証): 宛先の READ が許可されている場合、宛先の SFTP READ がソースのバイト列を返す。
同じ宛先が既に存在するdir_check WRITE + AllowOverwriteクローズ (ラボで実証): copy-file による上書きは permission denied を返す。
同じ宛先への SFTP OPEN / STOR / SCP アップロードxfer_pre_storクローズ (ラボで実証): OPEN の write/create は SSH_FX_PERMISSION_DENIED (ステータス 3)。
未認証の copy-fileSFTP 認証クローズ。シェルなし。Unix DAC は依然として適用される。

ラボで実証 vs 推測: 宛先の作成、witness の宛先 READ、OPEN-write の拒否、既存宛先の上書き拒否はラボで実証済みである。未認証と Unix DAC は、認証/chroot モデルからの推測のままである。

必要条件: contrib mod_sftp がロードされていること、SFTPEngine on。典型的なディストリビューションの SFTP vhost。SFTPExtensions -copyFile で拡張機能をオフにできる。

ラボ

cd lab
./run.sh

ループバック 127.0.0.1:18710 はコンテナの 2222 にマッピングされる。Compose プロジェクト proftpd-sftp-copy-file-write。イメージタグ proftpd-sftp-copy-file-write:1.3.9d。Witness PROFTPD-SFTP-COPY-FILE-WRITE-WITNESS。最終行:

SUCCESS PROFTPD-SFTP-COPY-FILE-WRITE dest-exists=yes open-write=denied copy-file=ok overwrite-denied=yes PROFTPD-SFTP-COPY-FILE-WRITE-WITNESS

修正

pr_fs_copy_file2 の前に、宛先がまだ存在しない場合でも宛先の WRITE を dir_check する。あるいは拡張機能を無効化する: SFTPExtensions -copyFile。

参考資料

  • github.com/proftpd/proftpd タグ v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_sftp/fxp.c 内の fxp_handle_ext_copy_file
  • SFTP_FXP_EXT_DEFAULT は copy-file を含む
  • 逆 (FTP SITE COPY におけるソース READ のスキップであり、今回の宛先 WRITE の取りこぼしではない): Issue 2095
  • CWE-863
ツールをダウンロード