| 字段 | 详情 |
|---|---|
| 标题 | 酒店与旅游预订系统 - 存储型跨站脚本(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 — 在姓名字段或任意字段(所有字段均存在 XSS 漏洞)中输入 XSS 载荷,然后点击立即预订:
<script>alert(1)</script>
结果: “预订成功!” — 载荷现已存储在数据库中。
步骤 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