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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
vsftpd-cmds-denied-alias — vsftpd 3.0.5 - 高 - リモート - 権限の残存 - cmds_denied が RFC エイリアス (XRMD) を検出しない | Kitploit
ツール/GitHubGitHub/abraxas/vsftpd-cmds-denied-alias
防御ツール脆弱性分析エクスプロイト構成監査ネットワークセキュリティペネトレーションテスト論文と研究ラボと実践
GitHubabraxas/vsftpd-cmds-denied-alias

vsftpd-cmds-denied-alias

vsftpd 3.0.5 - 高 - リモート - 権限の残存 - cmds_denied が RFC エイリアス (XRMD) を検出しない

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

Abraxas Labs - vsftpd-cmds-denied-alias

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vsftpd-cmds-denied-alias

解説記事: https://abraxaslabs.tech/research/vsftpd-cmds-denied-alias

vsftpd-cmds-denied-alias

分類: 権限の取りこぼし 到達範囲: リモート

vsftpd 3.0.5 - Chris Evans

私は公式の tarball を固定して使用した。GitHub のミラーでもディストリビューションのフォークでもない。SHA-256 26b602ae454b0ba6d99ef44a09b6b9e0dfa7f67228106736df1f278c70bc91d3。vsftpver.h の VSF_VERSION "3.0.5"。

cmds_denied は process_post_login (postlogin.c:140-184) における大文字化されたトークンの完全一致である。その後ディスパッチは RFC 775 のエイリアスを同じハンドラに OR で割り当てる: RMD||XRMD (:263-264)、さらに CWD||XCWD、MKD||XMKD、PASV||P@SW、加えて個別の EPSV / STOU / APPE。RMD を拒否リストに入れた運用者(よくある DELE,RMD のレシピ)でも、XRMD による rmdir は依然として通ってしまう。

この取りこぼしは、運用者が閉じたと思い込んでいた拒否リストの下での、認証済み FTP の完全性に関わる問題である。未認証ではなく、root でもなく、chroot エスケープでもなく、RCE でもない。

IDCVE 未割り当て
分類権限の取りこぼし (cmds_denied の完全一致トークン)
到達範囲リモート (認証済み FTP)
CWECWE-863
CVSSHigh: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
製品vsftpd (Chris Evans)
影響を受けるものvsftpd 3.0.5 公式 tarball
認証FTP USER/PASS (ラボ: anonymous ftp)
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18720 のみ

攻撃者ができること

誰が: 運用者が cmds_denied を設定したデーモン上の、認証済み FTP ユーザー(anonymous またはローカル)。デフォルトでは未設定。man ページが挙げる仮想ユーザーのレシピは guest uid を共有するため、Unix DAC ではそれらを分離できない。セッションはすでに通常の chroot 内でマッピングされた uid になっている。cmds_denied は、そのコマンドを奪い取るはずだった追加の制御であった。

完全性 (ラボで実証済み)

メソッド + シンク権限
cmds_denied=RMD の後の XRMD labdirhandle_rmd -> セッション uid が Unix で rmdir できるディレクトリに対する str_rmdir。ラボ: RMD labdir は 550、XRMD labdir は 250、CWD labdir は 550 (ディレクトリは消えた)。続く MKD labctrl は RMD に対して依然として 550。

完全性 (同じ完全一致トークンのゲートから推測されるもの。ラボ未実施)

メソッド + シンク権限
cmds_denied=MKD の後の XMKD dirhandle_mkd -> セッション uid としての mkdir
cmds_denied=CWD の後の XCWD pathhandle_cwd -> chdir。その後 download_enable が有効なら RETR
cmds_denied=STOR の後の STOU / APPEhandle_upload_common による作成 / 追記。write_enable が必要
cmds_denied=PASV の後の EPSV / P@SWhandle_pasv がデータリスナーを開く。これは拒否リストが止めるはずだったもの

ラボで実証したのは RMD の後の XRMD のみ。他のエイリアスは同じ str_equal ゲートと同じディスパッチ内の OR を共有している。私はそれらを実際には試していない。

偵察

第一級の取りこぼしとしてはなし。cmds_denied は隠蔽ではない。XRMD は名前を列挙しない。

可用性

対象外。ディレクトリの削除は完全性への打撃である。その名前に対する後続の CWD / RETR は副作用として 550 を返す。

この取りこぼしが与えないもの

  • 未認証の cmds_denied(ログイン前は無視され、USER/PASS/QUIT はログイン前のテーブルのまま)
  • Root
  • Chroot エスケープ(allow_writeable_chroot はデフォルトでオフ。ラボでは /incoming 配下にのみ書き込むため、拒否は引き続き有効)
  • cmds_allowed はフェイルクローズド:XRMD を含む未登録の動詞は 550 のまま
  • write_enable=NO は引き続き書き込み系(STOR/MKD/RMD/DELE/RNFR/RNTO/SITE/APPE/STOU)をブロック
  • ユーザーが同じ uid を共有しない場合の Unix DAC
  • SITE と site の大文字小文字バイパス(ftpcmdio.c の str_upper)
  • cmds_denied=CHMOD は決して一致しない。chmod を無効化するには chmod_enable=NO または cmds_denied=SITE を使う

発見の経緯

公式 3.0.5 で hide/deny/cmds_denied を調査した。ゲートはカンマ区切りトークンを1回走査し、大文字化された動詞に対して str_equal を実行するだけである。handle_rmd の内部には2つ目のチェックは存在しない。RFC 775 では依然として XRMD が RMD として提供されている。よくある推奨は cmds_denied=DELE,RMD だが、この文字列には XRMD が含まれていない。

誤った方向性:SITE と site をバイパスとみなすこと。動詞は大文字化される。cmds_allowed も同様に扱うこと:このリストはフェイルクローズドであるため、リストにないエイリアスは拒否されたままとなる。

ラボ

cd lab
./run.sh

ループバック 127.0.0.1:18720。Compose プロジェクト vsftpd-cmds-denied-alias。lab/ 内の公式 3.0.5 tarball(SHA-256 は上記)。cmds_denied=RMD、write_enable=YES、匿名、書き込みは /incoming 配下のみ。ウィットネス VSFTPD-CMDS-DENIED-ALIAS-WITNESS。最終行:

SUCCESS vsftpd-cmds-denied-alias rmd=550 xrmd=250 dir-gone=yes VSFTPD-CMDS-DENIED-ALIAS-WITNESS

修正

現代の動詞を拒否する場合は RFC エイリアスも拒否するか、cmds_denied でエイリアスを一致させてください(XCWD / XMKD / XRMD / XPWD / XCUP / P@SW / EPSV / STOU / APPE)。cmds_allowed(許可リスト)を推奨します。

ベンダーへの報告窓口は [email protected](vsftpd)です。無報酬です。vsftpd のいかなるミラー上でも公開 GitHub issue を開かないでください。

連絡先

Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]

ツールをダウンロード