CVE-2021-46080
Titre de l'exploit : Vehicle Service Management System - 'Multiple' Cross-Site Request Forgery (CSRF) menant à du Cross-Site Scripting stocké (XSS)
Auteur de l'exploit : SANU P.L
CVE : CVE-2021-46080
CVSS : 4.8 MOYEN
Références :
Description :
Une vulnérabilité de Cross-Site Request Forgery (CSRF) existe dans Vehicle Service Management System 1.0. Une attaque CSRF réussie conduit à une vulnérabilité de Cross-Site Scripting stocké.
1. Vehicle Service Management System - 'Mechanic List' (/admin/?page=mechanics)
Exploit :
- Visitez le panneau d'administration http://localhost/vehicle_service/admin
- Créez deux comptes administrateur.
- Connectez le compte Admin-1 dans le navigateur A (Chrome)
- Connectez le compte Admin-2 dans le navigateur B (Firefox)
- Dans le compte Admin-1 (Chrome), accédez à la section Mechanic List et cliquez sur le bouton Create New.
- Injectez la payload ci-dessous dans le champ Full Name.
Payload :
"><script>alert(document.cookie)</script>
- Cliquez sur le bouton Save.
- Capturez la requête dans Burp Suite et générez le fichier HTML CSRF.
- Enregistrez le fichier HTML CSRF, par ex. : CSRF.html
- Dans le navigateur B (Firefox), ouvrez le fichier CSRF.html.
- Accédez à la section Mechanic List dans le navigateur B (Firefox).
- Le code JavaScript malveillant se déclenche.
2. Vehicle Service Management System - 'Service Requests' (/admin/?page=service_requests)
Exploit :
- Visitez le panneau d'administration http://localhost/vehicle_service/admin
- Créez deux comptes administrateur.
- Connectez le compte Admin-1 dans le navigateur A (Chrome)
- Connectez le compte Admin-2 dans le navigateur B (Firefox)
- Dans le compte Admin-1 (Chrome), accédez à la section Service Requests et cliquez sur le bouton Create New.
- Injectez la payload ci-dessous dans le champ Owner Contact.
Payload :
"><script>alert(document.cookie)</script>
- Cliquez sur le bouton Save Request.
- Capturez la requête dans Burp Suite et générez le fichier HTML CSRF.
- Enregistrez le fichier HTML CSRF, par ex. : CSRF.html
- Dans le navigateur B (Firefox), ouvrez le fichier CSRF.html.
- Accédez à la section Service Requests dans le navigateur B (Firefox).
- Choisissez la nouvelle demande de service et cliquez sur Action, puis View.
- Le code JavaScript malveillant se déclenche.
3. Vehicle Service Management System - 'Category List' (/admin/?page=maintenance/category)
Exploit :
- Visitez le panneau d'administration http://localhost/vehicle_service/admin
- Créez deux comptes administrateur.
- Connectez le compte Admin-1 dans le navigateur A (Chrome)
- Connectez le compte Admin-2 dans le navigateur B (Firefox)
- Dans le compte Admin-1 (Chrome), accédez à la section Category List et cliquez sur le bouton Create New.
- Injectez la payload ci-dessous dans le champ Category Name.
Payload :
"><script>alert(document.cookie)</script>
- Cliquez sur le bouton Save.
- Capturez la requête dans Burp Suite et générez le fichier HTML CSRF.
- Enregistrez le fichier HTML CSRF, par ex. : CSRF.html
- Dans le navigateur B (Firefox), ouvrez le fichier CSRF.html.
- Accédez à la section Category List dans le navigateur B (Firefox).
- Le code JavaScript malveillant se déclenche.
4. Vehicle Service Management System - 'Service List' (/admin/?page=maintenance/services)
Exploit :
- Visitez le panneau d'administration http://localhost/vehicle_service/admin
- Créez deux comptes administrateur.
- Connectez le compte Admin-1 dans le navigateur A (Chrome)
- Connectez le compte Admin-2 dans le navigateur B (Firefox)
- Dans le compte Admin-1 (Chrome), accédez à la section Service List et cliquez sur le bouton Create New.
- Injectez la payload ci-dessous dans le champ Service Name.
Payload :
"><script>alert(document.cookie)</script>
- Cliquez sur le bouton Save.
- Capturez la requête dans Burp Suite et générez le fichier HTML CSRF.
- Enregistrez le fichier HTML CSRF, par ex. : CSRF.html
- Dans le navigateur B (Firefox), ouvrez le fichier CSRF.html.
- Accédez à la section Service List dans le navigateur B (Firefox).
- Le code JavaScript malveillant se déclenche.
5. Vehicle Service Management System - 'User List' (/admin/?page=user/list)
Exploit :
- Visitez le panneau d'administration http://localhost/vehicle_service/admin
- Créez deux comptes administrateur.
- Connectez le compte Admin-1 dans le navigateur A (Chrome)
- Connectez le compte Admin-2 dans le navigateur B (Firefox)
- Dans le compte Admin-1 (Chrome), accédez à la section User List et cliquez sur le bouton Create New.
- Injectez la payload ci-dessous dans le champ First Name.
Payload :
"><script>alert(document.cookie)</script>
- Cliquez sur le bouton Save.
- Capturez la requête dans Burp Suite et générez le fichier HTML CSRF.
- Enregistrez le fichier HTML CSRF, par ex. : CSRF.html
- Dans le navigateur B (Firefox), ouvrez le fichier CSRF.html.
- Accédez à la section User List dans le navigateur B (Firefox).
- Le code JavaScript malveillant se déclenche.
6. Vehicle Service Management System - 'Settings' (/admin/?page=system_info)
Exploit :
- Visitez le panneau d'administration http://localhost/vehicle_service/admin
- Créez deux comptes administrateur.
- Connectez le compte Admin-1 dans le navigateur A (Chrome)
- Connectez le compte Admin-2 dans le navigateur B (Firefox)
- Dans le compte Admin-1 (Chrome), accédez à la section Settings.
- Injectez la payload ci-dessous dans le champ System Name.
Payload :
"><script>alert(document.cookie)</script>
- Cliquez sur le bouton Update.
- Capturez la requête dans Burp Suite et générez le fichier HTML CSRF.
- Enregistrez le fichier HTML CSRF, par ex. : CSRF.html
- Dans le navigateur B (Firefox), ouvrez le fichier CSRF.html.
- Accédez à la section Settings dans le navigateur B (Firefox).
- Le code JavaScript malveillant se déclenche.
Impact :
La vulnérabilité de Cross-Site Request Forgery existe sur plusieurs points de terminaison et conduit à une vulnérabilité de Cross-Site Scripting stocké.
Mitigation :
Il est recommandé de mettre en œuvre les éléments suivants :
- Utiliser un jeton imprévisible avec une entropie élevée, comme pour les jetons de session en général.
- Lier le jeton à la session de l'utilisateur.
- Valider strictement le jeton dans tous les cas avant d'exécuter l'action concernée.