
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 を返さない場合、そのターゲットの処理は停止します。
期待されるトークンを抽出できない場合、そのターゲットは脆弱性チェック失敗として報告されます。
アップロードリクエスト中の例外は捕捉され、スクリプトは次の拡張子/パスの試行を続行します。
ローカルのペイロードファイルが存在しない場合、プログラムはエラーで終了します。
対話型チャネルは KeyboardInterrupt を処理し、セッションを終了します。
提供されているソースの主要な関数は以下のとおりです。
safe_print(msg)スレッドセーフなコンソール出力ヘルパー。
read_custom_shell(filepath)ローカルのペイロードファイルを、デコードエラーを無視して UTF-8 テキストとして読み取ります。
interactive_shell(shell_url)成功したシェルパスが報告された後に、対話型 HTTP コマンドインターフェースを提供します。
exploit(url, shell_content, interactive=False)ターゲット処理ワークフローを実行し、結果ディクショナリを返します。
main()以下を処理します。
このプロジェクトには、使用前に理解しておくべきセキュリティ上重要な特性がいくつかあります。
対話モードは、リモート HTTP エンドポイントにコマンドを送信できます。このため、パッシブスキャナよりもはるかに機密性が高くなります。
運用上のペイロードを気軽に公開したり配布したりしないでください。
現在の実装では TLS 証明書検証が無効になっています。
このプロジェクトを成熟したセキュリティツールとして扱う前に、これを修正すべきです。
ペイロードはローカルファイルから直接読み込まれ、HTTP リクエストの一部として送信されます。
ペイロードファイルは実行可能なセキュリティテスト用素材として扱ってください。
現在のソースには、強力な認可や許可リストのメカニズムが実装されていません。
より安全な内部バージョンでは、明示的なターゲット許可リストをサポートすべきです。
現在の実装には、包括的なレートリミッターがありません。
したがって、同時リクエストは慎重に制御すべきです。
結果ファイルには、悪用の試行が成功したことに関連する URL が含まれる可能性があります。これらのファイルは機密性の高い評価データとして保護してください。
プロフェッショナルな評価ワークフローは、次のようになるべきです。```text Authorization ↓ Define Scope ↓ Prepare Isolated Test Environment ↓ Confirm Target Ownership / Permission ↓ Perform Minimal Verification ↓ Collect Evidence ↓ Stop Exploitation Once Proof Is Established ↓ Remediate ↓ Retest ↓ Document Findings
脆弱性評価の目的は、**必要最小限の影響**でリスクを明らかにすることであり、無制限のアクセスを取得することではありません。
---
## 推奨されるラボ環境
開発用に、以下を含む専用環境を構築してください:
- 分離された Linux VM;
- ローカル Web サーバー;
- テスト用 Joomla インストール;
- 該当する JCE コンポーネント/バージョン;
- ネットワーク分離;
- スナップショット/バックアップ;
- テストアカウント;
- アプリケーションおよび Web サーバーのログ。
無関係な本番システムに対してテストを行わないでください。
---
## トラブルシューティング
### `ModuleNotFoundError: No module named 'requests'`
Python の依存関係をインストールします:```bash
python3 -m pip install requests urllib3
指定されたパスが存在し、読み取り可能であることを確認してください:```bash ls -l
### 初回のHTTPリクエストが失敗する
確認事項:
- URLの正確性;
- DNS;
- ネットワーク接続性;
- HTTP/HTTPSの可用性;
- ファイアウォールルール;
- ターゲットスコープ;
- サーバーログ。
### CSRFトークンが検出されない
ターゲットのレスポンスは、現在の実装における正規表現が想定するHTML構造と異なる可能性があります。
トークンが存在しないことが、ターゲットが安全である、あるいは脆弱であることを意味すると仮定しないでください。これは結論の出ない結果として扱ってください。
### 結果ファイルが空である
確認事項:```text
ELV_CVE/success.txt
コンソール出力を検査し、失敗した HTTP リクエスト、トークン抽出の失敗、またはアップロード拒否がないか確認します。
提供されている実装にはいくつかの制限があります。
--verbose フラグは定義されていますが、現在のところ詳細ログを制御していません。--output 引数は定義されていますが、現在のところ結果ファイルの選択には使用されていません。json と sleep はインポートされていますが、示されている実装では実質的に使用されていません。uploaded_hidden を参照していますが、示されている exploit() 関数はそのステータスを返しません。本番品質のリリースをタグ付けする前に、以下を追加することを検討してください:
ハードコードされた値を設定レイヤーに移動します:
主に print() に依存するのではなく、Python の logging モジュールを使用してください。
推奨レベル:```text DEBUG INFO WARNING ERROR
### 結果スキーマ
一貫した結果オブジェクトを定義します。例えば:```text
target
status
reason
http_status
evidence
timestamp
脆弱性の検証をコマンド実行から分離します。
より安全なアーキテクチャは次のとおりです:```text Detection → Verification → Evidence
デフォルトで対話的なコマンド実行が無効になっています。
### ターゲットの許可リスト化
ネットワークアクションを実行する前に、明示的なスコープファイルまたは許可リストを必須にします。
### 依存関係の固定
テスト済みの依存関係バージョンを含む `requirements.txt` またはロックファイルを使用します。
### テスト
以下の単体テストを追加します:
- URL 正規化;
- トークン解析;
- ターゲットリスト解析;
- 結果のシリアライズ;
- エラーハンドリング;
- 候補パスの処理。
---
## 推奨リポジトリレイアウト
クリーンなリポジトリでは以下を使用できます:```text
.
├── README.md
├── LICENSE
├── requirements.txt
├── elv-cve.py
├── tests/
│ ├── test_parser.py
│ ├── test_results.py
│ └── test_token_parser.py
├── docs/
│ └── methodology.md
└── examples/
└── targets.example.txt
実際のターゲットリスト、認証情報、シェルペイロード、セッションデータ、機密性の高い評価結果をコミットしないでください。
推奨される .gitignore エントリ:```gitignore
pycache/
*.py[cod]
.venv/
venv/
.env
ELV_CVE/
*.log
*.tmp
.DS_Store
機密性の高い評価成果物は、公開リポジトリの外に保管する必要があります。
---
## バージョニング
現在のプロジェクトは、次のように識別されます:```text
v1.0.0
今後のリリースでは、セマンティックバージョニングを推奨します:```text MAJOR.MINOR.PATCH
例:```text
1.0.0
1.1.0
1.1.1
2.0.0
CLI、結果フォーマット、またはアーキテクチャに破壊的変更を加える場合は、メジャーバージョンをインクリメントしてください。
今後のマイルストーン候補:
有用なセキュリティレポートには以下を記載する必要があります:```text Title Affected Asset Affected Component Version Severity CVE / Advisory Description Preconditions Evidence Business Impact Remediation Retest Result Timeline
公開レポートには、認証情報、個人情報、無関係なデータ、不要なコマンド出力を含めないでください。
---
## 修復ガイダンス
影響を受ける Joomla/JCE デプロイメントの場合、修復はこのスクリプトに埋め込まれた CVE メタデータのみに依存するのではなく、**公式ベンダー/セキュリティアドバイザリおよび確認された影響バージョン範囲**に基づいて行う必要があります。
一般的な防御措置には以下が含まれます:
1. インストールされている Joomla および JCE のバージョンを特定する。
2. デプロイメントが確認された影響範囲内にあるかどうかを判断する。
3. 利用可能な場合は、ベンダーがサポートする修正リリースにアップグレードする。
4. 不審なアップロード/インポート活動がないか、Web サーバーおよびアプリケーションのログを確認する。
5. Web からアクセス可能なディレクトリ内の予期しないファイルを検査する。
6. 侵害が疑われる場合は、認証情報をローテーションする。
7. 永続化メカニズムとスケジュールされたタスクを確認する。
8. 修復後に再テストする。
9. 組織のインシデント対応プロセスに従って、関連する証拠を保全する。
---
## 帰属
プロジェクトのブランディングとソースメタデータは、エンジンを次のように識別しています:
**HxN / E.L.V**
プロジェクトバージョン:
**1.0.0**
---
## ライセンス
このプロジェクトは、以下に基づいて配布されることを意図しています:
**GNU General Public License v3.0**
完全なライセンステキストについては、付属の `LICENSE` ファイルを参照してください。
リポジトリにまだ `LICENSE` ファイルが含まれていない場合は、リポジトリを GPL ライセンスとして公開する前に、公式の GNU GPL v3 テキストを追加してください。
---
## 免責事項
このソフトウェアは、許可されたセキュリティ研究、防御的セキュリティテスト、教育、および管理された実験室での使用のために提供されています。
作者および貢献者は、このソフトウェアの使用から生じる誤用、不正アクセス、損害、データ損失、サービス中断、またはその他の結果について責任を負いません。
テスト活動が適用される法律、契約、ポリシー、および明示的な承認要件に準拠していることを確認するのは、あなた自身の責任です。
**所有しているシステム、またはテストする明示的な許可を得ているシステムのみをテストしてください。**
---
## 最終的な注意
この README は、提供された `elv-cve.py` ソースによって公開されている動作を文書化しています。実装の詳細と、独立した脆弱性/アドバイザリの検証を必要とする主張を意図的に区別しています。
公開リポジトリの場合、CVE 情報を検証し、プロジェクトを特定の製品/バージョンに対する確認されたエクスプロイトとして説明する前に、権威あるベンダー/アドバイザリの参照を追加してください。