Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2015-3306-lab — 再現可能なDockerラボ + CVE-2015-3306(ProFTPD mod_copyの認証前任意ファイルコピー)用のraw-socketエクスプロイト — パッチ差分解析の学習演習 | Kitploit
ツール/GitHubGitHub/diegslva/cve-2015-3306-lab
エクスプロイトフレームワーク脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHubdiegslva/cve-2015-3306-lab

cve-2015-3306-lab

再現可能なDockerラボ + CVE-2015-3306(ProFTPD mod_copyの認証前任意ファイルコピー)用のraw-socketエクスプロイト — パッチ差分解析の学習演習

リポジトリを見る
8時間46分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2015-3306 — ProFTPD mod_copy 事前認証による任意ファイルコピー

完全に再現可能なラボと、CVE-2015-3306 向けに手書きしたエクスプロイト — 脆弱性研究(パッチ差分解析、手動トリガー、rawソケットによるエクスプロイト開発)の学習演習として構築しました。

脆弱性

ProFTPD の mod_copy モジュールは SITE CPFR / SITE CPTO コマンドペアを実装しており、データをクライアントに転送せずにサーバー側でファイルをコピーします。

バージョン 1.3.5 では、どちらのハンドラーもセッションが認証済みかどうかをチェックしていませんでした。 このモジュールは単に 「ログイン前に SITE コマンドを送る者はいない」 と想定していただけ — この誤った想定が CVE となりました。 認証されていない任意のクライアントが、サーバープロセスが読み取り可能な任意のファイルを、書き込み可能な任意の場所へコピーできました。

パッチ

修正(コミット 212d54271f、1.3.5a でリリース)は2つのことを行います:

  1. copy_cpfr と copy_cpto の先頭に認証ゲートを追加:
    root@kitploit:~
    authenticated = get_param_ptr(cmd->server->conf, "authenticated", FALSE);
    if (authenticated == NULL || *authenticated == FALSE) {
      pr_response_add_err(R_530, _("Please login with USER and PASS"));
      errno = EPERM;
      return PR_ERROR(cmd);
    }
    
  • CopyEngine on|off ディレクティブを追加 — 以前は、このモジュールを同梱したビルドでは無効化すらできませんでした。
  • 完全な unified diff は patch.diff にあります。パッチを読むことがスキルです: 修正箇所は、どこに傷があったかを教えてくれます。

    ラボ

    Dockerfile は、公式ソース tarball から ProFTPD 1.3.5(最後の脆弱なリリース)を mod_copy 有効でコンパイルします:

    root@kitploit:~
    docker build -t proftpd-135 .
    docker run -d --name lab135 -p 127.0.0.1:2121:21 -p 127.0.0.1:30000-30010:30000-30010 proftpd-135
    docker exec lab135 chmod 777 /home/ftp
    

    proftpd.conf の PassivePorts はデータチャネルを固定します — FTP の2チャネル構成(制御 + 動的データ)が、素朴なコンテナマッピングが失敗する理由です: 制御ポートは機能するのに、データポートは機能しません。

    エクスプロイト

    exploit.py は rawソケットを使用します — ftplib は使いません。ライブラリはプロトコルを隠蔽するからであり、プロトコルの隠蔽こそが我々が戦っている対象だからです:

    root@kitploit:~
    SITE CPFR /etc/segredo.txt   -> 350  (USER/PASS 未送信: これが脆弱性そのもの)
    SITE CPTO /home/ftp/...      -> 250  (任意コピー実行)
    USER ftp / PASS ...          -> 230  (ログインは単なる外部持ち出し経路)
    PASV / RETR                  -> 150 -> 226  (フラグ取得)
    DELE                         -> 250  (クリーンアップ: IOC を残さない)
    

    学んだ教訓(このリポジトリの本当の目的)

    • バナーは真実ではない。 Debian はバージョンを上げずに修正をバックポートします。ハニーポット(Dionaea 等)は意図的に脆弱なバナーを模倣します。
    • 悪用可能なバグ ≠ 自動的なエクスプロイト。 環境(ファイルシステムのパーミッション、AllowOverwrite、ポートマッピング)が最終的な影響を決定します。
    • 冪等性が重要。 優れたエクスプロイトは連続して2回実行できます — 宛先名は一意に(time.time() ではなく time.time_ns())、残存状態に依存しません。
    • FTP 応答にはステートマシンがある。 1xx は暫定(続きを期待)、2xx は完了、3xx は中間、5xx はエラー。RETR は2回応答します: 150、その後 226。次のコマンドの前に両方を消費します。
    • ターゲットのログが真実の情報源。 クライアントが「550」を返し、その理由が分からない場合、サーバーのデバッグログ(-d10)がどのチェックが発動したかを正確に教えてくれます。
    • クリーンアップは OPSEC。 ファイルを残すエクスプロイトは、証拠を残すエクスプロイトです。

    参考情報

    • 修正コミット: https://github.com/proftpd/proftpd/commit/212d54271f
    • CVE: https://nvd.nist.gov/vuln/detail/CVE-2015-3306

    免責事項

    教育および許可されたラボ利用のみを目的としています。所有していない、または書面によるテスト許可を得ていないシステムに対して実行することは違法です。

    ツールをダウンロード