
Доказательство концепции для хранимого XSS в платформе IoT ThingsBoard, позволяющее повышение привилегий через кражу токена аутентификации. Включает детали CVE-2024-55466, CVSS 8.8 и пошаговое воспроизведение.
Копаясь в технологиях IoT, я обнаружил уязвимость в приложении Thingsboard, которая открывала возможности для повышения привилегий.
Thingsboard — это приложение с открытым исходным кодом, которое позволяет управлять устройствами, собирать, обрабатывать и визуализировать данные для IoT-сервисов и развертываний. Кроме того, один экземпляр Thingsboard (управляемый администратором арендатора) может размещать сервисы для нескольких организаций, у каждой из которых есть собственный администратор компании.
Исследуя его возможности, я заметил функцию загрузки файлов в представлении «Image Gallery». К сожалению, эта функция была уязвима для хранимого межсайтового скриптинга, что позволяло злоумышленнику повышать привилегии путем кражи токенов аутентификации.
Эта уязвимость затрагивает все выпуски Thingsboard, включая Community, Cloud и Professional. Я ответственно сообщил о проблеме команде безопасности Thingsboard, которая признала её и пообещала исправить в будущем релизе. Впоследствии я сообщил об уязвимости в MITRE, что привело к присвоению 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:HДля демонстрации уязвимости потребуется установка ThingsBoard (Репозиторий GitHub) с хотя бы одним пользователем с низкими привилегиями.
Шаг 1: Войдите в учетную запись клиента с низкими привилегиями.

Шаг 2: Перейдите в Resources > Image Gallery

Шаг 3: Создайте вредоносный файл изображения (здесь используется SVG-файл с полезной нагрузкой JavaScript), чтобы использовать уязвимость межсайтового скриптинга.

Шаг 4: Загрузите файл и проверьте ответ, чтобы определить путь к файлу назначения, куда была загружена полезная нагрузка.

Шаг 5: Перейдите по пути файла publicLink, чтобы активировать полезную нагрузку.

Поскольку полезная нагрузка хранится на легитимном экземпляре Thingsboard, злоумышленник может легко обмануть высокоценные цели (например, администратора арендатора, администратора компании и т.д.), чтобы украсть токены аутентификации.
Демонстрация вышеупомянутого воздействия:
Шаг 1: Войдите в учетную запись с высокими привилегиями (здесь используется учетная запись администратора арендатора в браузере Chrome, чтобы продемонстрировать изолированную среду от браузера Firefox, использованного выше).

Шаг 2: Перейдите по пути файла publicLink, полученному ранее.
