
Prueba de concepto para una vulnerabilidad XSS almacenado en Hotel and Tourism Reservation System 1.0, que demuestra la inyección no autenticada y el secuestro de sesión del administrador.
| Campo | Detalles |
|---|
| Título | Sistema de Reservas de Hotel y Turismo - Cross-Site Scripting (XSS) Almacenado |
| ID CVE | Asignación Pendiente |
| Proveedor | code-projects.org |
| URL del Proveedor | https://code-projects.org/hotel-and-tourism-reservation-in-php-with-source-code/ |
| Producto | Sistema de Reservas de Hotel y Turismo |
| Versión | 1.0 |
| Tipo de Vulnerabilidad | Cross-Site Scripting Almacenado |
| CWE | CWE-79 |
| Puntuación CVSS | 8.3 (Alta) |
| Vector CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:L |
| Endpoint Afectado (Inyección) | /ht/tour.php |
| Endpoint Afectado (Ejecución) | /ht/admin/tour_reserves.php |
| Autenticación Requerida | No (inyección) / Sí (ejecución) |
| Explotable Remotamente | Sí |
| Investigador | Syed Imad Uddin Alvi |
Existe una vulnerabilidad de Cross-Site Scripting (XSS) Almacenado en la funcionalidad de reserva de tours del Sistema de Reservas de Hotel y Turismo 1.0. Un atacante no autenticado puede inyectar JavaScript arbitrario en los campos del formulario de reserva en /ht/tour.php. La carga maliciosa se almacena en la base de datos sin saneamiento. Cuando un administrador visita la página de gestión de reservas de tours en /ht/admin/tour_reserves.php, la carga almacenada se ejecuta en el contexto del navegador del administrador, lo que permite el secuestro de sesión, el robo de credenciales o la toma total de la cuenta de administrador.
Archivo: tour.php (punto de inyección)
Archivo: admin/tour_reserves.php (punto de ejecución)
Parámetro: name , email , people , number / campos de contacto (POST)
Almacenamiento: hotel_db — tabla de reservas de tours
Configuración: Instale el Sistema de Reservas de Hotel y Turismo 1.0 en XAMPP y acceda en http://<target>/ht/
Paso 1 — Navegue a la página de reserva de tours como usuario no autenticado:
http://<target>/ht/tour.php?tour=4
Paso 2 — Introduzca la carga XSS en el campo de nombre o en cualquier campo, todos son vulnerables a XSS, y luego haga clic en Reservar Ahora:
<script>alert(1)</script>
Resultado: "¡Reserva realizada con éxito!" — la carga ahora está almacenada en la base de datos.

Paso 3 — Inicie sesión como administrador y navegue al panel de reservas de tours:
http://<target>/ht/admin/tour_reserves.php
Resultado: La carga XSS almacenada se ejecuta inmediatamente en el contexto del navegador del administrador.

Un atacante no autenticado puede:
El formulario de reserva en tour.php almacena la entrada del usuario directamente en la base de datos sin saneamiento. El panel de administración en tour_reserves.php muestra el valor almacenado sin codificar en la respuesta HTML, sin codificación de salida, lo que permite que los scripts inyectados se ejecuten.
// En la salida — siempre codifique antes de renderizar
echo htmlspecialchars($reservation['name'], ENT_QUOTES, 'UTF-8');
** Imad Alvi** — Investigador de Seguridad Independiente GitHub: Xmyronn