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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cotonti-commentswidget-poc — Cotonti CommentsWidget PHPオブジェクトインジェクション脆弱性(CAN-2026-2035973 / CVE-2026-71294)に対する安全なローカル概念実証。 | Kitploit
ツール/GitHubGitHub/harshrajsinghania/cotonti-commentswidget-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用学習と教育
GitHubharshrajsinghania/cotonti-commentswidget-poc

cotonti-commentswidget-poc

Cotonti CommentsWidget PHPオブジェクトインジェクション脆弱性(CAN-2026-2035973 / CVE-2026-71294)に対する安全なローカル概念実証。

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
14時間47分前未レビュー
共有

Cotonti CommentsWidget PHP オブジェクトインジェクション PoC

Cotonti の CommentsWidget 実装で確認された PHP オブジェクトインジェクション問題に対する安全なローカル概念実証です。

脆弱性

  • プロジェクト: Cotonti
  • 影響を受けるコンポーネント: plugins/comments/inc/CommentsWidget.php
  • CWE: CWE-502 — 信頼できないデータのデシリアライズ
  • CVE/候補: CAN-2026-2035973 / CVE-2026-71294
  • 研究者: Harsh Raj Singhania

脆弱なコードパスは ci GET パラメータを受け取り、攻撃者が制御するデータを base64_decode() を経由して PHP の unserialize() に渡しますが、インスタンス化を許可するクラスを制限していません。

概念的には、脆弱な操作は次のとおりです。

root@kitploit:~
$ci = @unserialize(base64_decode($ci));

シリアライズされたオブジェクトが渡されると、PHP は攻撃者が制御するクラスをインスタンス化し、__wakeup() などのマジックメソッドを呼び出す可能性があります。より大きなアプリケーションでは、適切なガジェットクラスが利用可能な場合に危険となり得ます。

提出された修正は、デシリアライズを次のように変更します。

root@kitploit:~
$ci = @unserialize(base64_decode($ci), ['allowed_classes' => false]);

さらに、使用前に結果の値が期待される配列構造を持っていることを検証します。

この PoC が示すもの

poc.php は 3 つのローカルテストを実行します。

  1. 脆弱な動作 — 制限のない unserialize() が DangerousGadget をインスタンス化し、その __wakeup() メソッドをトリガーします。
  2. 修正済みの動作 — allowed_classes => false によりガジェットクラスのインスタンス化が防止され、したがって __wakeup() の副作用も防止されます。
  3. 構造検証 — 予期しない形状のシリアライズ値は、修正で使用される検証ロジックによって拒否されます。

PoC は /tmp/pwned_by_cotonti_poc.txt を、__wakeup() が実行されたことを示す無害なセンチネルとしてのみ使用します。オペレーティングシステムのコマンドを実行することはありません。id && whoami という文字列は、ガジェットの command プロパティ内のプレースホルダー値としてのみ存在します。

要件

  • serialize() / unserialize() をサポートする PHP CLI
  • ローカルテスト環境

脆弱なデシリアライズ動作と修正済みのデシリアライズ動作が直接再現されるため、Cotonti のインストールは不要です。

PoC の実行

リポジトリのディレクトリから:

root@kitploit:~
php poc.php

期待される出力は次のようになります。

root@kitploit:~
[!] DangerousGadget::__wakeup() triggered
[TEST 1] VULNERABLE: __wakeup() executed during unrestricted unserialize().
[TEST 2] FIXED: object instantiation was blocked; no sentinel was created.
[TEST 3] FIXED: invalid serialized structure rejected by validation.

Summary:
- Vulnerable path allows a serialized attacker-controlled object to be instantiated and invokes __wakeup().
- Fixed path uses allowed_classes=false, preventing the gadget class from being instantiated.
- Structural validation rejects values that do not match the expected array shape.
- No real command execution is performed by this PoC; the command property is only a placeholder.

スクリプトは終了前にセンチネルファイルを削除します。

修復

攻撃者が制御するデータを、制限のない PHP の unserialize() でデシリアライズしないでください。

このコードパスに対して、実証された緩和策はクラスのインスタンス化を無効にすることです。

root@kitploit:~
unserialize($data, ['allowed_classes' => false]);

また、デシリアライズされた値の内容を使用する前に、アプリケーションが期待する正確な構造と照合して検証する必要があります。

参考資料

  • 上流のセキュリティ問題: https://github.com/Cotonti/Cotonti/issues/1888
  • 上流の修正プルリクエスト: https://github.com/Cotonti/Cotonti/pull/1889
  • Cotonti プロジェクト: https://github.com/Cotonti/Cotonti

責任ある使用

このリポジトリは、セキュリティ研究、検証、および防御的テストを目的としています。PoC は、あなたが所有する環境、または明示的にテストを許可された環境でのみ実行してください。許可なくシステムを標的にするために使用しないでください。

帰属

Harsh Raj Singhania — 脆弱性研究、概念実証、および開示。

ツールをダウンロード