CVE-2021-46080
Exploit-Titel: Vehicle Service Management System - 'Multiple' Cross-Site-Request-Forgery (CSRF) führt zu gespeichertem Cross-Site-Scripting (XSS)
Autor des Exploits: SANU P.L
CVE: CVE-2021-46080
CVSS: 4.8 MITTEL
Referenzen:
Beschreibung:
Im Vehicle Service Management System 1.0 existiert eine Schwachstelle durch Cross-Site-Request-Forgery (CSRF). Ein erfolgreicher CSRF-Angriff führt zu einer gespeicherten Cross-Site-Scripting-Schwachstelle.
1. Vehicle Service Management System - 'Mechaniker-Liste' (/admin/?page=mechanics)
Exploit:
- Rufen Sie das Admin-Panel http://localhost/vehicle_service/admin auf.
- Erstellen Sie zwei Admin-Konten.
- Melden Sie sich im Browser A (Chrome) mit dem Admin-1-Konto an.
- Melden Sie sich im Browser B (Firefox) mit dem Admin-2-Konto an.
- Navigieren Sie im Admin-1-Konto (Chrome) zum Bereich Mechaniker-Liste und klicken Sie auf die Schaltfläche "Create New".
- Fügen Sie die folgende Nutzlast in das Eingabefeld "Full Name" ein.
Nutzlast:
"><script>alert(document.cookie)</script>
- Klicken Sie auf die Schaltfläche "Save".
- Erfassen Sie die Anfrage in Burp Suite und generieren Sie die CSRF-HTML-Datei.
- Speichern Sie die CSRF-HTML-Datei, z. B. als CSRF.html.
- Rufen Sie im Browser B (Firefox) die Datei CSRF.html auf.
- Navigieren Sie im Browser B (Firefox) zum Bereich Mechaniker-Liste.
- Bösartiger JavaScript-Code wird ausgelöst.
2. Vehicle Service Management System - 'Service-Anfragen' (/admin/?page=service_requests)
Exploit:
- Rufen Sie das Admin-Panel http://localhost/vehicle_service/admin auf.
- Erstellen Sie zwei Admin-Konten.
- Melden Sie sich im Browser A (Chrome) mit dem Admin-1-Konto an.
- Melden Sie sich im Browser B (Firefox) mit dem Admin-2-Konto an.
- Navigieren Sie im Admin-1-Konto (Chrome) zum Bereich Service-Anfragen und klicken Sie auf die Schaltfläche "Create New".
- Fügen Sie die folgende Nutzlast in das Eingabefeld "Owner Contact" ein.
Nutzlast:
"><script>alert(document.cookie)</script>
- Klicken Sie auf die Schaltfläche "Save Request".
- Erfassen Sie die Anfrage in Burp Suite und generieren Sie die CSRF-HTML-Datei.
- Speichern Sie die CSRF-HTML-Datei, z. B. als CSRF.html.
- Rufen Sie im Browser B (Firefox) die Datei CSRF.html auf.
- Navigieren Sie im Browser B (Firefox) zum Bereich Service-Anfragen.
- Wählen Sie die neu erstellte Service-Anfrage aus und klicken Sie unter "Action" auf "View".
- Bösartiger JavaScript-Code wird ausgelöst.
3. Vehicle Service Management System - 'Kategorie-Liste' (/admin/?page=maintenance/category)
Exploit:
- Rufen Sie das Admin-Panel http://localhost/vehicle_service/admin auf.
- Erstellen Sie zwei Admin-Konten.
- Melden Sie sich im Browser A (Chrome) mit dem Admin-1-Konto an.
- Melden Sie sich im Browser B (Firefox) mit dem Admin-2-Konto an.
- Navigieren Sie im Admin-1-Konto (Chrome) zum Bereich Kategorie-Liste und klicken Sie auf die Schaltfläche "Create New".
- Fügen Sie die folgende Nutzlast in das Eingabefeld "Category Name" ein.
Nutzlast:
"><script>alert(document.cookie)</script>
- Klicken Sie auf die Schaltfläche "Save".
- Erfassen Sie die Anfrage in Burp Suite und generieren Sie die CSRF-HTML-Datei.
- Speichern Sie die CSRF-HTML-Datei, z. B. als CSRF.html.
- Rufen Sie im Browser B (Firefox) die Datei CSRF.html auf.
- Navigieren Sie im Browser B (Firefox) zum Bereich Kategorie-Liste.
- Bösartiger JavaScript-Code wird ausgelöst.
4. Vehicle Service Management System - 'Service-Liste' (/admin/?page=maintenance/services)
Exploit:
- Rufen Sie das Admin-Panel http://localhost/vehicle_service/admin auf.
- Erstellen Sie zwei Admin-Konten.
- Melden Sie sich im Browser A (Chrome) mit dem Admin-1-Konto an.
- Melden Sie sich im Browser B (Firefox) mit dem Admin-2-Konto an.
- Navigieren Sie im Admin-1-Konto (Chrome) zum Bereich Service-Liste und klicken Sie auf die Schaltfläche "Create New".
- Fügen Sie die folgende Nutzlast in das Eingabefeld "Service Name" ein.
Nutzlast:
"><script>alert(document.cookie)</script>
- Klicken Sie auf die Schaltfläche "Save".
- Erfassen Sie die Anfrage in Burp Suite und generieren Sie die CSRF-HTML-Datei.
- Speichern Sie die CSRF-HTML-Datei, z. B. als CSRF.html.
- Rufen Sie im Browser B (Firefox) die Datei CSRF.html auf.
- Navigieren Sie im Browser B (Firefox) zum Bereich Service-Liste.
- Bösartiger JavaScript-Code wird ausgelöst.
5. Vehicle Service Management System - 'Benutzer-Liste' (/admin/?page=user/list)
Exploit:
- Rufen Sie das Admin-Panel http://localhost/vehicle_service/admin auf.
- Erstellen Sie zwei Admin-Konten.
- Melden Sie sich im Browser A (Chrome) mit dem Admin-1-Konto an.
- Melden Sie sich im Browser B (Firefox) mit dem Admin-2-Konto an.
- Navigieren Sie im Admin-1-Konto (Chrome) zum Bereich Benutzer-Liste und klicken Sie auf die Schaltfläche "Create New".
- Fügen Sie die folgende Nutzlast in das Eingabefeld "First Name" ein.
Nutzlast:
"><script>alert(document.cookie)</script>
- Klicken Sie auf die Schaltfläche "Save".
- Erfassen Sie die Anfrage in Burp Suite und generieren Sie die CSRF-HTML-Datei.
- Speichern Sie die CSRF-HTML-Datei, z. B. als CSRF.html.
- Rufen Sie im Browser B (Firefox) die Datei CSRF.html auf.
- Navigieren Sie im Browser B (Firefox) zum Bereich Benutzer-Liste.
- Bösartiger JavaScript-Code wird ausgelöst.
6. Vehicle Service Management System - 'Einstellungen' (/admin/?page=system_info)
Exploit:
- Rufen Sie das Admin-Panel http://localhost/vehicle_service/admin auf.
- Erstellen Sie zwei Admin-Konten.
- Melden Sie sich im Browser A (Chrome) mit dem Admin-1-Konto an.
- Melden Sie sich im Browser B (Firefox) mit dem Admin-2-Konto an.
- Navigieren Sie im Admin-1-Konto (Chrome) zum Bereich Einstellungen.
- Fügen Sie die folgende Nutzlast in das Eingabefeld "System Name" ein.
Nutzlast:
"><script>alert(document.cookie)</script>
- Klicken Sie auf die Schaltfläche "Update".
- Erfassen Sie die Anfrage in Burp Suite und generieren Sie die CSRF-HTML-Datei.
- Speichern Sie die CSRF-HTML-Datei, z. B. als CSRF.html.
- Rufen Sie im Browser B (Firefox) die Datei CSRF.html auf.
- Navigieren Sie im Browser B (Firefox) zum Bereich Einstellungen.
- Bösartiger JavaScript-Code wird ausgelöst.
Auswirkungen:
Eine Cross-Site-Request-Forgery-Schwachstelle besteht an mehreren Endpunkten und führt zu einer gespeicherten Cross-Site-Scripting-Schwachstelle.
Gegenmaßnahmen:
Es wird empfohlen, Folgendes zu implementieren:
- Unvorhersehbare Tokens mit hoher Entropie, wie bei Sitzungstokens üblich.
- An die Sitzung des Benutzers gebunden.
- In jedem Fall streng validiert, bevor die entsprechende Aktion ausgeführt wird.