Мы подтверждаем наличие критической уязвимости. По базовым метрикам CVSS 3.1 ей присвоен балл 10.0, основанный на векторе AV: N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H.
Уязвимость идентифицирована как Unrestricted Upload of File with Dangerous Type, идентификатор CWE-434.
Функционал загрузки тикета предполагает возможность прикрепления изображений, в том числе, с помощью ссылок на изображения. Исследователь выявил, что если указать URL-адрес, который возвращает PHP-скрипт, сервер загрузит его и сам скрипт будет доступен извне.
Особенность воспроизведения заключается в необходимости прикрепить ссылку напрямую в запрос через Burp Suite, так как в клиентском коде приложения реализована проверка таких расширений и блокировка попыток вставки ссылок через UI. Однако именно ограничение проверки расширения клиентским кодом является причиной, по которой исследователь смог загрузить вредоносный скрипт и исполнить код на сервере. Эксплуатация уязвимости оказалась успешной из-за нескольких факторов:
— Формат файла проходит проверку на стороне клиента, а не на сервере;
— Серверная часть приложения при предоставлении доступа к файлам исполняет .php файлы, а не возвращает их в исходном виде. Это позволяет загрузить файл с расширением .php и достичь удаленного выполнения кода. Мы видим следующие последствия эксплуатации уязвимости:
— захват полного контроля над веб-сайтом (например, отображение произвольного содержимого и введение пользователей в заблуждение);
— доступ к базе данных, которая может содержать учетные и чувствительные ПД всех пользователей;
— возможность доступа к внутренней сети для горизонтального передвижения по другим серверам и персональным компьютерам сотрудников;
— использование сервера для проведения атак на другие ресурсы, в том числе использование его в качестве командующего сервера C2;
— использование вычислительных ресурсов сервера для майнинга и проведения DDoS атак; и т. д. Также, учитывая содержимое /etc/passwd/:image.png // @example.com domain accounts, мы предполагаем, что уязвимость может не ограничиться безопасностью целевого ресурса app.example.com, но и затронуть безопасность сотрудников и данных example.com. В связи с этим, мы рекомендуем определить для данного отчета максимальную выплату, рассчитанную правилами программы.
Для устранения этой проблемы мы рекомендуем следующие действия:
— Проверять расширение/формат файла с помощью механизма «белого списка» на стороне сервера;
— Блокировать доступ к файлам с расширением .php и интерпретировать формат .php файлов как «text/plain» (подробнее
stackoverflow.com/questions/8 414 840/prevent-upload-php-script-tobe-executed);— Отключить использование php-интерпретатора для обработки файлов в директории с пользовательскими файлами. В этом может помочь директива «php_flag engine off» в файле конфигурации «.htaccess» (подробнее по ссылке:
stackoverflow.com/questions/13 272 231/how-to-safely-prevent-uploaded-file-from-being-runvia-php-on-any-server);Пожалуйста, сообщите нам, если у вас возникли вопросы или вам нужна дальнейшая помощь. Мы всегда готовы оказать поддержку для обеспечения безопасности ваших систем.