
Jenkins CVE-2024-23897の認証不要の任意ファイル読み取りエクスプロイト。HTTPSおよびCSRF-crumbサポートにより、強化されたインスタンスをバイパスします。
cve-2024-23897-crumb.py — Jenkins <= 2.441 / LTS <= 2.426.2(2.442 / LTS 2.426.3で修正済み)に対する認証不要の任意ファイル読み取り。
広く使われているPoC — exploit-db 51993、 xaitax/CVE-2024-23897、および ProjectDiscovery nucleiテンプレート — はHTTPのみ対応で、CSRF crumbを送信しません。以下のJenkinsインスタンスに対しては:
403 No valid crumb was included in the request で失敗し、「パッチ適用済み」と区別がつかず、偽陰性を生み出します。
本バリアントは:
--http による平文HTTP)に対応;/cli エラーページから利用可能な を取得し、デュプレックスチャネルで再生;JSESSIONID正味の効果: 公開ツールが安全と報告する、強化済みだが未パッチのインスタンスを検出・悪用します。
python3 cve-2024-23897-crumb.py <host> [file] [--http] [--port N]
python3 cve-2024-23897-crumb.py jenkins.example.com
python3 cve-2024-23897-crumb.py jenkins.example.com /etc/shells
python3 cve-2024-23897-crumb.py 10.0.0.5 /etc/passwd --http --port 8080
Python 3標準ライブラリのみ使用。読み取り専用: help "@<file>" を送信するだけで、書き込み・アップロード・実行は一切行いません。
help はファイルの先頭行をエコーします — Too many arguments: メッセージ内の最初の行と、(default: ...) フィールド内の後続行です。先頭行に複数のフィールドがあるか長いファイルでうまく機能します:
/etc/passwd、/etc/shells/proc/net/arp、/proc/net/route(内部IP、ゲートウェイ、MAC)/proc/mounts(コンテナ/ストレージ構成)先頭行が非常に短いファイル(例: /etc/hostname)は認証エラーパスにフォールスルーし、help 経由では何も返しません。ファイル全体の抽出は代わりに connect-node コマンドを使用しますが、匿名ユーザーに Overall/Read 権限が必要です — 多くの場合付与されておらず、その場合も読み取りプリミティブは機能しますが、先頭行のみが返されます。
認可されたテスト対象のホストのみに使用してください。同じチャネルは状態変更CLIコマンド(enable-job、reload-configuration など)を公開します。本スクリプトは意図的に読み取り専用の help パスのみを使用します。