認証済みの任意ファイルアップロードによるリモートコード実行 Webkul Krayin CRM 2.2.x における CVE-2026-38526 の技術分析と制御された再現。
認証済みの任意ファイルアップロードによるリモートコード実行 Webkul Krayin CRM 2.2.x における CVE-2026-38526 の技術分析と制御された再現。
CVE-2026-38526 は、Webkul Krayin CRM 2.2.x に影響を与える認証済みの任意ファイルアップロード脆弱性です。
脆弱な機能は、アプリケーションの TinyMCE アップロードエンドポイントを通じて公開されています:
POST /admin/tinymce/upload
アプリケーションは、アップロードできるファイルの種類を十分に制限していません。認証済みユーザーは、.php などのサーバーサイドで実行可能な拡張子を持つファイルを送信できます。アプリケーションはアップロードされたファイルを保存し、そのアクセス可能な URL を返します。
デプロイ環境がアップロード場所からの PHP 実行を許可している場合、アップロードされたファイルはその後 Web サーバーを通じてリクエストでき、Web アプリケーションプロセスのコンテキストでリモートコード実行が可能になります。
公開されている CVE レコードでは、この脆弱性は CVSS 3.1: 9.9 (Critical) と評価されています。
このリポジトリには、この脆弱性に関する私自身の技術分析と制御された再現が含まれています。
この脆弱性はすでに CVE-2026-38526 として公開されています。この作業は、脆弱性の発見を主張するものではありません。この調査の目的は、脆弱な実装を理解し、制御された環境で悪用経路を再現し、ファイルアップロードの問題をリモートコード実行に変える条件を検証することでした。
この脆弱性は Hack The Box GCSB 2026 Nexus machine でも使用されており、この問題を研究するための実践的な環境が提供されました。
製品: Webkul Krayin CRM 影響を受けるバージョン: 2.2.x 脆弱性: 任意ファイルアップロード 結果として生じる影響: リモートコード実行 認証: 必要 攻撃ベクトル: ネットワーク CWE: CWE-434 — 危険な種類のファイルの無制限アップロード CVSS: 9.9 Critical CVE: CVE-2026-38526
脆弱な機能は以下によって処理されます:
/admin/tinymce/upload
このエンドポイントは、file パラメータを通じてアップロードされたファイルを受け入れます。 関連するアプリケーションロジックは、保存されるファイル名を元のファイル名から導出し、その元の拡張子を保持します。

この動作は重要です。なぜなら、アプリケーションは単にアップロードされたオブジェクトを受け入れているのではなく、攻撃者が制御する実行可能な拡張子を保持し、その結果生成されたオブジェクトをアプリケーションのストレージ機構を通じてアクセス可能にしているからです。
主な問題は、アップロードされたファイルに対するサーバーサイドの検証が不十分であることです。
アプリケーションは、保存されるファイル名を構築する際に、クライアントが提供した元の拡張子を使用します。実行可能なファイルタイプがストレージ層に到達するのを防ぐ、十分に制限的な許可リストが存在しません。
関連するフローは次のとおりです

生成されたファイル名の使用は、根本的な問題を解決しません。
例えば、shell.php を .php のような生成されたファイル名に変更しても、サーバーが .php ファイルを実行可能な PHP コードとして解釈し続ける限り、アップロードされたファイルは安全にはなりません。
無制限のアップロードは、自動的にリモートコード実行を意味するわけではありません。
実行経路は、アップロードされたファイルに対するサーバーの処理に依存します。
脆弱なデプロイシナリオでは、チェーンは次のようになります
