
ホテル・観光予約システム 1.0 における保存型 XSS 脆弱性の概念実証。認証なしのインジェクションと管理者セッションハイジャックを実証します。
| フィールド | 詳細 |
|---|
| タイトル | ホテル・観光予約システム - 保存型クロスサイトスクリプティング(XSS) |
| CVE ID | 割り当て保留中 |
| ベンダー | code-projects.org |
| ベンダーURL | https://code-projects.org/hotel-and-tourism-reservation-in-php-with-source-code/ |
| 製品 | ホテル・観光予約システム |
| バージョン | 1.0 |
| 脆弱性タイプ | 保存型クロスサイトスクリプティング |
| CWE | CWE-79 |
| CVSSスコア | 8.3(高) |
| CVSSベクター | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:L |
| 影響を受けるエンドポイント(注入) | /ht/tour.php |
| 影響を受けるエンドポイント(発火) | /ht/admin/tour_reserves.php |
| 認証の必要性 | 不要(注入)/ 必要(発火) |
| リモートからの悪用可能性 | あり |
| 研究者 | Syed Imad Uddin Alvi |
ホテル・観光予約システム 1.0 のツアー予約機能には、保存型クロスサイトスクリプティング(XSS)の脆弱性が存在します。認証されていない攻撃者は、/ht/tour.php の予約フォームフィールドに任意の JavaScript を注入できます。悪意のあるペイロードはサニタイズされることなくデータベースに保存されます。管理者が /ht/admin/tour_reserves.php のツアー予約管理ページにアクセスすると、保存されたペイロードが管理者のブラウザコンテキストで実行され、セッションハイジャック、認証情報の窃取、または管理者アカウントの完全乗っ取りが可能になります。
ファイル: tour.php(注入ポイント)
ファイル: admin/tour_reserves.php(実行ポイント)
パラメータ: name , email , people , number / 連絡先フィールド(POST)
保存先: hotel_db — ツアー予約テーブル
セットアップ: XAMPP にホテル・観光予約システム 1.0 をインストールし、http://<target>/ht/ にアクセスします。
ステップ 1 — 認証されていないユーザーとしてツアー予約ページに移動します:
http://<target>/ht/tour.php?tour=4
ステップ 2 — name フィールドまたは任意のフィールド(すべてのフィールドが XSS に対して脆弱です)に XSS ペイロードを入力し、Book Now をクリックします:
<script>alert(1)</script>
結果: 「Reservation successfully made!」— ペイロードがデータベースに保存されます。

ステップ 3 — 管理者としてログインし、ツアー予約管理パネルに移動します:
http://<target>/ht/admin/tour_reserves.php
結果: 保存された XSS ペイロードが管理者のブラウザコンテキストで即座に実行されます。

認証されていない攻撃者は以下が可能です:
tour.php の予約フォームは、ユーザー入力をサニタイズせずに直接データベースに保存します。tour_reserves.php の管理パネルは、保存された値を出力エンコーディングなしで HTML レスポンスにそのまま出力するため、注入されたスクリプトが実行可能になります。
// 出力時 — レンダリング前に必ずエンコードする
echo htmlspecialchars($reservation['name'], ENT_QUOTES, 'UTF-8');
** Imad Alvi** — 独立系セキュリティ研究者 GitHub: Xmyronn