
Joomla JCEのprofile-importアップロードを悪用してCVE-2026-48907を攻撃し、シェルパスを検証して、許可されたターゲット上で対話型コマンドチャネルを開くPython CLI。
E.L.V — Exploit Loader & Vulnerability Firmware
認可された脆弱性評価のためのサイバーセキュリティリサーチユーティリティ。
E.L.V CVE リサーチ & アセスメントフレームワークは、制御されたセキュリティリサーチおよび認可された脆弱性評価を目的とした Python ベースのコマンドラインユーティリティです。
提供されている実装には、以下の機能が含まれています:
現在のソースは、そのリサーチターゲットを次のように特定しています:
CVE-2026-48907 Joomla! JCE Extension < 2.9.99.5 Unauthenticated RCE
この CVE/製品の主張はソースコードによって提供されたメタデータであり、この README によって独立して検証されたものではありません。セキュリティ上の主張を公開する前に、識別子、影響を受けるバージョン、アドバイザリ、影響を受けるコンポーネント、および修復情報を信頼できるベンダー/CVE ソースに対して検証してください。
このプロジェクトはリモート Web アプリケーションと対話し、提供されている実装にはカスタムサーバーサイドペイロードをアップロードし、アップロードされたシェルと通信する機能が含まれています。
明示的な認可を得たシステムに対してのみ使用してください。
このプロジェクトを以下の目的で使用しないでください:
安全な実験環境には、分離されたローカル VM/コンテナ環境、または意図的に脆弱なトレーニングターゲットを使用してください。
| フィールド | 値 |
|---|---|
| プロジェクト | E.L.V CVE リサーチ & アセスメントフレームワーク |
| 作者 / エンジン | HxN / E.L.V |
| バージョン | 1.0.0 |
| 言語 | Python |
| プラットフォーム | *nix / Unix 系システム |
| ライセンス | GNU GPL v3 |
| インターフェース | コマンドライン |
| HTTP クライアント | requests |
| 並行処理 | ThreadPoolExecutor |
| 主な目的 | 認可されたセキュリティリサーチと評価 |
提供されている elv-cve.py ソースには、以下の主要コンポーネントが含まれています。
スクリプトは --shell オプションを通じて提供されたローカルファイルを読み込みます。
ソースはこれをカスタムシェル/アップローダーファイルとして記述しており、指定されたファイルが読み込めない場合に終了します。
プログラムは 2 つの相互排他的なターゲットモードをサポートしています:
各ターゲットに対して、スクリプトはターゲットルートへの GET リクエストを実行し、続行する前に HTTP 200 レスポンスを期待します。
実装は、正規表現を使用して返された HTML から CSRF 関連の値を検索します。
現在 2 つのパターンが実装されています。
スクリプトは以下に対するマルチパートアップロードリクエストを構築します:```text /index.php?option=com_jce
リクエストには profile-import タスクと抽出されたトークンが含まれています。
### 6. 候補パスの検証
アップロードリクエストの後、プログラムは生成されたファイルについて複数の可能性のある場所を確認します。
現在のソースには以下の候補パスが含まれています:```text
/tmp/
/images/
/images/stories/
/media/
単一のターゲットに対して、現在のプログラムは、アップロードされたシェルパスが成功したと報告されたときに、対話型コマンドインターフェースを起動します。
ソースは、以下の名前の POST パラメータを使用してコマンドを送信します:```text cmd c
この機能はリモートコマンド実行を引き起こす可能性があるため、隔離された明示的に許可された環境に限定すべきです。
### 8. マルチターゲット処理
ターゲットファイルが指定された場合、プログラムは `ThreadPoolExecutor` を使用し、ターゲットを並行して処理します。
ソース内のデフォルトのスレッド数は次のとおりです:```text
10
大まかに言うと、現在の実装は次の流れに従います:```text Start │ ├── Parse command-line arguments │ ├── Load local payload file │ ├── Load one target OR target list │ ├── Create ELV_CVE output directory │ ├── Target processing │ │ │ ├── GET target │ ├── Check HTTP response │ ├── Extract token │ ├── Submit profile-import request │ ├── Check candidate file paths │ └── Record result │ └── Write results / display summary
---
## 要件
提供されたソースは以下をインポートします:
- Python 標準ライブラリモジュール:
- `random`
- `re`
- `time`
- `argparse`
- `sys`
- `os`
- `json`
- `threading`
- `concurrent.futures`
- サードパーティモジュール:
- `requests`
- `urllib3`
したがって、最小限の依存関係のインストールは次のとおりです:```bash
python3 -m pip install requests urllib3
再現可能なデプロイメントのために、依存関係を requirements.txt ファイルに固定してください。
例:```text requests urllib3
---
## インストール
プロジェクトをクローンするか、隔離された評価環境にコピーします。
例:```bash
git clone <YOUR-REPOSITORY-URL>
cd <YOUR-REPOSITORY-DIRECTORY>
仮想環境を作成します:```bash python3 -m venv .venv
有効化します:```bash
source .venv/bin/activate
依存関係をインストールします:```bash python3 -m pip install -r requirements.txt
Python を確認します:```bash
python3 --version
依存関係を確認します:```bash python3 -c "import requests, urllib3; print('Dependencies OK')"
> `<YOUR-REPOSITORY-URL>` と `<YOUR-REPOSITORY-DIRECTORY>` を、あなたのリポジトリで使用されている値に置き換えてください。
---
## コマンドラインインターフェース
ソースは以下のコマンドラインオプションを定義しています。
### ターゲットの選択```text
-u, --url
単一のターゲットURL。```text -f, --file
ターゲットURLを含むファイルへのパス。
これらのオプションは相互に排他的であり、いずれか1つが必須です。
### ペイロードの選択```text
--shell
ローカルカスタムペイロードファイルへのパス。
この引数は現在の実装で必須です。
-t, --threads
ワーカースレッド数。
デフォルト:```text
10
-v, --verbose
引数パーサーによって公開されている詳細フラグを有効にします。
注: 現在のソースはこのオプションを定義していますが、`args.verbose` を使用して出力動作を実質的に変更することはありません。
### 出力オプション```text
-o, --output
引数はパーサーによって定義されていますが、現在の実装では最終結果を書き込む際に args.output を使用していません。現在の結果パスは次のようにハードコードされています:```text
ELV_CVE/success.txt
これは将来のリリースで修正する価値のある実装上の詳細です。
---
## 入力ファイル
### ターゲットリスト
ターゲットリストモードでは、1行につき1つのURLを想定しています。
空行は無視されます。
`#` で始まる行は無視されます。
概念的な形式:```text
https://authorized-target-01.example
https://authorized-target-02.example
# laboratory target
https://authorized-target-03.example
明示的に評価を許可されているターゲットのみをファイルに記載してください。
--shell 引数は、プログラムがテキストとして読み込むローカルファイルを指定します。
提供されたソースは、ファイルの内容を正常に読み込むこと以外の検証を行いません。
安全な開発とテストのために、コマンドを実行するペイロードではなく、無害なテストフィクスチャを使用してください。
プログラムは以下を作成します:```text ELV_CVE/
マルチターゲットモードでは、次のように書き込みます:```text
ELV_CVE/success.txt
現在のソースは、成功したシェルURLをこのファイルに書き込みます。
結果フォーマットの例:```text https://authorized-lab.example/path/to/result
プログラムはまた、ロードされたターゲット数に対する成功結果数を含む完了サマリーを出力します。
---
## 並行処理
マルチターゲットモードでは以下を使用します:```python
ThreadPoolExecutor
設定されるスレッド数はデフォルトで 10 です。
高い並行性は以下を増加させる可能性があります:
制御された評価では、低い並行性の値から始め、環境と認可が許す場合にのみ増加させてください。
提供されている実装は、HTTP 通信に requests.Session() を使用します。
主なネットワーク操作は以下の通りです:
ソースは明示的なリクエストタイムアウトを使用しています:
これらの値は現在のソースにハードコードされています。
実装は以下を設定します:```python s.verify = False
`InsecureRequestWarning` を抑制します。
これは、証明書の検証が無効になっていることを意味します。
使い捨てのラボ環境で自己署名証明書を使用する場合には役立つかもしれませんが、**通常の本番セキュリティツールでは推奨されません**。
より安全な実装では、証明書の検証を設定可能にし、デフォルトで検証を有効にしておくべきです。
---
## ログ記録と結果
ソースコードでは、ワーカースレッド間の出力衝突を減らすために、`safe_print()` の周囲にスレッドロックを使用しています。
一般的なステータスカテゴリには、次のものがあります。```text
failed
success
結果オブジェクトには、以下のようなフィールドも含まれる場合があります:```text url status reason shell_url
マルチターゲットコレクターはさらに以下をチェックします:```text
uploaded_hidden
ただし、提供されている exploit() の実装は現在そのステータスを返していません。
これは、将来のバージョンで結果モデルを整理できる領域を示しています。
現在の実装では、いくつかの失敗ケースを処理しています。
失敗した HTTP リクエストは、例外メッセージとともに失敗したターゲットとして記録されます。
最初の GET が HTTP 200 を返さない場合、そのターゲットの処理は停止します。
期待されるトークンを抽出できない場合、そのターゲットは脆弱性チェック失敗として報告されます。
アップロードリクエスト中の例外は捕捉され、スクリプトは次の拡張子/パスの試行を続行します。
ローカルのペイロードファイルが存在しない場合、プログラムはエラーで終了します。