
Mientras experimentaba con tecnología IoT, encontré una vulnerabilidad en la aplicación Thingsboard que permitía vías para la escalada de privilegios.
Thingsboard es una aplicación de código abierto que permite la gestión de dispositivos, la recopilación de datos, el procesamiento y la visualización para servicios e implementaciones de IoT. Además, una única instancia de Thingsboard (gestionada por un administrador de inquilino) puede alojar servicios para múltiples organizaciones con administradores de empresa independientes para cada una.
Mientras exploraba sus funciones, noté una funcionalidad de carga de archivos en la vista "Image Gallery". Desafortunadamente, la función era vulnerable a cross-site scripting almacenado, lo que permitía a un adversario escalar privilegios aprovechando el robo de tokens de autenticación.
Esta vulnerabilidad afecta a todas las versiones de Thingsboard, incluidas las ediciones Community, Cloud y Professional. Informé responsablemente del problema al equipo de seguridad de Thingsboard, quien lo reconoció y se comprometió a solucionarlo en una versión futura. Posteriormente, informé de la vulnerabilidad a MITRE, lo que resultó en la asignación de 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:HPara demostrar la vulnerabilidad, se necesita una instalación de ThingsBoard (Repositorio de GitHub) con al menos un usuario con privilegios bajos.
Paso 1: Inicia sesión en una cuenta de cliente con privilegios bajos.

Paso 2: Ve a Resources > Image Gallery

Paso 3: Crea un archivo de imagen malicioso (aquí se utiliza un archivo SVG con un payload de JavaScript) para explotar la vulnerabilidad de Cross-Site Scripting.

Paso 4: Sube el archivo e inspecciona la respuesta para identificar la ruta de archivo de destino donde se subió el payload.

Paso 5: Visita la ruta de archivo publicLink para activar el payload.

Dado que el payload se almacena en la instancia legítima de Thingsboard, un adversario puede engañar fácilmente a objetivos de alto valor (por ejemplo: administrador del inquilino, administrador de la empresa, etc.) para robar tokens de autenticación.
Una demostración del impacto mencionado anteriormente:
Paso 1: Inicia sesión en una cuenta de alto valor (aquí se usa la cuenta de administrador del inquilino en el navegador Chrome, para demostrar un entorno aislado del navegador Firefox utilizado anteriormente).

Paso 2: Visita la ruta de archivo publicLink obtenida anteriormente.
