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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-61505 — e107 CMS install.phpにおける安全でないデシリアライゼーション | Kitploit
ツール/GitHubGitHub/pescada-dev/cve-2025-61505
脆弱性分析コード分析エクスプロイトウェブセキュリティ論文と研究学習と教育
GitHubpescada-dev/cve-2025-61505

CVE-2025-61505

e107 CMS install.phpにおける安全でないデシリアライゼーション

リポジトリを見る
16ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-61505 – e107 CMS 2.x における PHP オブジェクトインジェクション

報告日: 2025年9月18日
CVE 割り当て日: 2025年10月9日
公開日: 2026年2月2日
CVE ID: CVE-2025-61505
発見者: Anas Abderrahman Benbarek

概要

e107 CMS バージョン 2.3.3 のインストールスクリプト (install.php) において、PHP オブジェクトインジェクションの脆弱性 (CWE-502: 信頼できないデータのデシリアライゼーション) が発見されました。

この脆弱性により、認証されていないリモート攻撃者が悪意のあるシリアル化データを作成し、e107 コードベースまたはその依存関係に悪用可能なガジェットクラスが存在する場合、任意のコード実行、データ改ざん、その他の悪意のあるアクションにつながる可能性があります。

この問題は、PHP の unserialize() 関数を (allowed_classes オプションなどの) 制限なしにユーザー制御の入力に対して安全でない方法で使用していることに起因します。インストールフェーズに限定されているものの、公開サーバーでのセットアップ中に重大なリスクをもたらします。インストーラーはデータベース作成やファイル書き込みなどの機密操作を処理するためです。

影響を受けるソフトウェア

  • 製品: e107 CMS
  • バージョン: ≤ 2.3.3
  • コンポーネント: インストールスクリプト (install.php)

脆弱性の詳細

e107 CMS のインストールプロセスはマルチステージです。ユーザー入力 (言語、データベース認証情報、管理者詳細など) は、previous_steps POST パラメータに保存されたシリアル化配列を使用してステップ間で保持されます。このデータは送信のために base64 エンコードされ、サーバー上でデコード/アンシリアライズされます。

核心的な問題は、検証、サニタイズ、またはクラスのホワイトリストなしで、デコードされたユーザー入力を unserialize() に直接渡すことです。これは2か所で発生します。

1. グローバルスコープ (初期オーバーライド処理)

php if(isset($_POST['previous_steps'])) { $tmp = unserialize(base64_decode($_POST['previous_steps'])); $override = (isset($tmp['paths']) && isset($tmp['paths']['hash'])) ? array('site_path'=>$tmp['paths']['hash']) : array(); unset($tmp); }

深掘り:

スクリプトは、previous_steps に以前のフォームステップからの信頼されたシリアル化データが含まれていると想定しています。しかし、これは単なる POST パラメータであるため、攻撃者はそれを完全に制御できます。base64_decode() は入力をバイナリに変換し、unserialize() はそれを PHP オブジェクトまたは配列に再構築します。入力にオブジェクト表記 (O: で始まる) が含まれている場合、PHP はそのクラスが現在のスコープに存在するかオートロードされていれば、それらのクラスをインスタンス化します。これにより、即座に __wakeup() やその他のマジックメソッドがトリガーされ、ガジェットチェーンが存在する場合、ファイル書き込みや予期しないデータベース呼び出しなどの副作用を引き起こす可能性があります。 悪用可能性に関する注記: 成功は利用可能なガジェットクラスに依存します。それらがない場合、影響はクラッシュやデータ破損に限定される可能性があります。

2. e_install クラスコンストラクタ (メイン状態復元)

PHPif(isset($_POST['previous_steps'])) { $this->previous_steps = unserialize(base64_decode($_POST['previous_steps'])); // ... (filtering and password restoration logic) unset($_POST['previous_steps']); }

深掘り:

このインスタンスはさらに危険です。なぜなら、デシリアライズされたデータはオブジェクトの状態 ($this->previous_steps) の一部となり、その後のインストーラーのアクション (MySQL セットアップ、管理者作成、設定ファイル生成) に影響を与えるからです。ここでのオブジェクトインジェクションはインストールプロセス全体にわたって持続し、高権限の操作に影響を与える可能性があります。繰り返しますが、allowed_classes の制限がないため、オートロードされた任意のクラス (コア、ハンドラ、プラグイン、ライブラリ) がインスタンス化される可能性があります。 悪用可能性に関する注記: 実際の悪用には通常、危険な動作 (コード実行など) に到達するために複数のオブジェクトを連鎖させる (「ガジェットチェーン」) 必要があります。たとえば、あるクラスの __wakeup() が、ユーザー制御の文字列を評価する別のメソッドを呼び出す可能性があります。そのようなチェーンがない場合、影響はサービス拒否 (デストラクタでのリソース枯渇など) に留まる可能性があります。インストーラーの高権限コンテキスト (e107_config.php の書き込み、ディレクトリ作成) はリスクを増幅させますが、インストール後にスクリプトを削除すれば長期的な露出は軽減されます。 この脆弱性は、セットアップ中のどの段階でも、認証されていない HTTP POST リクエストを /install.php に送信することで到達可能です。

緩和策

  • install.php の削除 — インストール後すぐにスクリプトを削除または名前変更する。
  • アクセス制限 — .htaccess、nginx ルールを使用するか、デプロイ中にファイルを Web ルート外に移動する。
  • パッチ推奨 — 状態保持のために unserialize() を json_decode() に置き換えるか、最低限次のように使用する:

unserialize($data, ['allowed_classes' => false]);

  • データに HMAC 署名/検証を追加して完全性を高める。

参考文献

  • e107 CMS 公式ウェブサイト: https://e107.org
  • e107 CMS GitHub リポジトリ: https://github.com/e107inc/e107
  • CVE レコード: CVE-2025-61505 (公開され次第更新されます)
  • CWE-502: 信頼できないデータのデシリアライゼーション: https://cwe.mitre.org/data/definitions/502.html
ツールをダウンロード