
Während ich mit IoT-Technologie herumexperimentierte, fand ich eine Schwachstelle in der Thingsboard-Anwendung, die Möglichkeiten zur Privilegienausweitung bot.
Thingsboard ist eine Open-Source-Anwendung, die Geräteverwaltung, Datenerfassung, -verarbeitung und -visualisierung für IoT-Dienste und -Bereitstellungen ermöglicht. Darüber hinaus kann eine einzelne Thingsboard-Instanz (verwaltet von einem Tenant-Administrator) Dienste für mehrere Organisationen mit jeweils separaten Firmenadministratoren hosten.
Beim Erkunden seiner Funktionen fiel mir eine Datei-Upload-Funktionalität in der Ansicht „Image Gallery“ auf. Leider war die Funktion anfällig für gespeichertes Cross-Site-Scripting (Stored XSS), das es einem Angreifer ermöglichte, durch den Diebstahl von Authentifizierungstokens Privilegien auszuweiten.
Diese Schwachstelle betrifft alle Thingsboard-Versionen, einschließlich Community-, Cloud- und Professional-Editionen. Ich habe das Problem verantwortungsvoll an das Thingsboard-Sicherheitsteam gemeldet, das es bestätigte und zusagte, es in einer zukünftigen Version zu beheben. Anschließend meldete ich die Schwachstelle an MITRE, was zur Vergabe einer CVE führte.
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:HUm die Schwachstelle zu demonstrieren, benötigt man eine Installation von ThingsBoard (Github Repository) mit mindestens einem Benutzer mit niedrigen Berechtigungen.
Schritt 1: Melden Sie sich in einem Kundenkonto mit niedrigen Berechtigungen an.

Schritt 2: Navigieren Sie zu Resources > Image Gallery

Schritt 3: Erstellen Sie eine bösartige Bilddatei (hier wird eine SVG-Datei mit JavaScript-Payload verwendet), um die Cross-Site-Scripting-Schwachstelle auszunutzen.

Schritt 4: Laden Sie die Datei hoch und überprüfen Sie die Antwort, um den Zielpfad zu identifizieren, wohin der Payload hochgeladen wurde.

Schritt 5: Rufen Sie den Dateipfad publicLink auf, um den Payload auszulösen.

Da der Payload auf der legitimen Thingsboard-Instanz gespeichert ist, kann ein Angreifer leicht hochwertige Ziele (z.B. Tenant-Administrator, Firmenadministrator usw.) täuschen, um Authentifizierungstokens zu stehlen.
Eine Demonstration der oben genannten Auswirkungen:
Schritt 1: Melden Sie sich in einem Konto mit hohen Berechtigungen an (hier wird das Tenant-Administrator-Konto im Chrome-Browser verwendet, um eine isolierte Umgebung vom oben verwendeten Firefox-Browser zu demonstrieren).

Schritt 2: Rufen Sie den zuvor abgerufenen Dateipfad publicLink auf.
