Path Traversal => RCE в Windows приложении Pyrus Sync

Path Traversal => RCE в Windows приложении Pyrus Sync

Записки Зёмы

Всем привет, ку, здарова! В этой статье я хотел бы поделиться одной из своих недавних довольно критичных уязвимостей.

Вступление

Уязвимость была найдена у Pyrus. Это платформа управления процессами компаний. Используется разными крупными компаниями в РФ и не только. Имеет веб-клиент, а также администраторское приложение для Windows, которое выгружает данные из задач. О нём и пойдёт сегодня речь в этой статье.

Время около 12 ночи, нахожу новую для себя селфхостед ББ. Решаю посмотреть самые простые кейсы - ничего не нахожу. Уже подумываю о том, чтобы отложить ссылку в ящик и забить. Но всё же решил ещё немного потыкать. И не зря.

Нахождение Path Traversal

Я начинаю просматривать приложение Pyrus Sync на наличие интересных функции с точки зрения возможного наличия багов. Этим оказалась функция загрузки файлов из задач. Когда тестировал веб-клиент я уже загружал файл с названием, которое содержит переход в родительский каталог, а именно "../". Тогда это не сработало. Делаю бекап, жду окончания и.... В родительском каталоге ничего не нашлось. Но я заметил, что слеш пропал. Это очень сильно смутило меня, так как обычно его заменяют на какой-нибудь другой символ.

Так как приложение написано на .NET, недолго думая, я решил посмотреть его внутренности. Закинул в dnSpy и стал искать функцию загрузки файлов. К моему счастью, приложение не было обфусцировано. Через несколько минут нужная функция найдена, название файла как-то форматируется, но... Фильтра нет?

Функция загрузки файлов

Увидев это, я сразу полез в гугл искать то, как можно обойти каталог загрузки. Другой вариант оказался крайне прост - заменить "../" на "..\". Это сработало. Я был несказанно рад, но я не хотел на этом останавливаться.

Раскрутка до RCE

Обнаружил, что файлы загружает служба PyrusSyncService.exe. У неё были повышенные права.

Я попытался подменить файлы приложения, чтобы добиться исполнения кода. Это не сработало. Тогда я обратился в WebPwnChat за советом. И, к моей удачи, моё сообщение заметил reewardius. Он предложил поместить нагрузку в папку автозагрузки.

Я пришёл к следующему пейлоаду - ..\..\..\..\..\..\..\..\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\pohek.exe

Делаю бекап, после создния перезагружаю машину. И, спустя пару секунд после загрузки машины, вижу заветное окошко от своей импровизированной нагрузки.

Репорт об этом отправляется на почту и исправляется за пару дней.

Итог

Злоумышленник, который мог загружать файлы в задачи (например, через форму, которая может быть доступна всем), мог загрузить вредоносный файл и исполнить код на машине администратора.


Благодарю за прочтение, а также компанию Pyrus за согласие на раскрытие уязвимости.

Записки Зёмы. Подписаться.

Report Page