
Preuve de concept pour XSS stocké dans la plateforme IoT ThingsBoard permettant une escalade de privilèges via le vol de jetons d'authentification. Inclut les détails de CVE-2024-55466, CVSS 8.8, et une reproduction étape par étape.
En expérimentant avec la technologie IoT, j'ai découvert une vulnérabilité dans l'application Thingsboard qui ouvrait la voie à une escalade de privilèges.
Thingsboard est une application open-source qui permet la gestion des appareils, la collecte, le traitement et la visualisation de données pour les services et déploiements IoT. De plus, une seule instance Thingsboard (gérée par un administrateur de locataire) peut héberger des services pour plusieurs organisations avec des administrateurs d'entreprise distincts pour chacune.
En explorant ses fonctionnalités, j'ai remarqué une fonctionnalité de téléchargement de fichiers dans la vue "Galerie d'images". Malheureusement, cette fonctionnalité était vulnérable au cross-site scripting stocké, ce qui permettait à un adversaire d'escalader les privilèges en volant des jetons d'authentification.
Cette vulnérabilité affecte toutes les versions de Thingsboard, y compris les éditions Community, Cloud et Professional. J'ai signalé le problème de manière responsable à l'équipe de sécurité de Thingsboard, qui l'a reconnu et s'est engagée à le corriger dans une future version. Par la suite, j'ai signalé la vulnérabilité à MITRE, ce qui a conduit à l'attribution d'un CVE.
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:HPour démontrer la vulnérabilité, il faut une installation de ThingsBoard (Dépôt GitHub) avec au moins un utilisateur à faible privilège.
Étape 1 : Connectez-vous avec un compte client à faible privilège.

Étape 2 : Allez dans Resources > Image Gallery

Étape 3 : Créez un fichier image malveillant (ici, un fichier SVG est utilisé avec une charge utile JavaScript) pour exploiter la vulnérabilité de Cross-Site Scripting.

Étape 4 : Téléchargez le fichier et inspectez la réponse pour identifier le chemin du fichier de destination où la charge utile a été téléchargée.

Étape 5 : Visitez le chemin du fichier publicLink pour déclencher la charge utile.

Étant donné que la charge utile est stockée sur l'instance Thingsboard légitime, un adversaire peut facilement tromper des cibles de grande valeur (par exemple, administrateur de locataire, administrateur d'entreprise, etc.) pour voler des jetons d'authentification.
Une démonstration de l'impact mentionné ci-dessus :
Étape 1 : Connectez-vous avec un compte de grande valeur (ici, le compte administrateur de locataire est utilisé dans le navigateur Chrome, pour démontrer un environnement isolé du navigateur Firefox utilisé précédemment).

Étape 2 : Visitez le chemin du fichier publicLink, récupéré précédemment.
