
Уязвимость OpenEMR
Path traversal и DoS уязвимость в проекте OpenEMR
Уязвимая функция в файле: /openemr/custom/ajax_download.php
Условия:
Уязвимые версии: <5.0.2, исправлено в версии 5.0.2.
Уязвимая переменная в этой функции: fileName, она может контролироваться атакующим, и отсутствует какая-либо фильтрация и проверка.
Атакующий может скачать любой файл (который читаем пользователем www-data) из хранилища сервера.
Если запрашиваемый файл доступен для записи пользователю www-data и директория /var/www/openemr/sites/default/documents/cqm_qrda/ существует, он будет удалён с сервера.
Несуществующая директория не является большой проблемой, так как атакующий может её создать. Переменная "higher_level_path" в функции загрузки /openemr/controller.php?document&upload позволяет нам указать имя директории, в которой будет сохранён файл, и если эта директория не существует (а переменная "patient_id" является числовой и больше 0), она будет создана с правами "700" и владельцем "www-data".
Это может вызвать DoS, так как атакующий может удалить некоторые конфигурационные файлы/php-скрипты с сервера.
Раскрытие информации.
Отказ в обслуживании.
P.S. Особая благодарность Брейди Г. Миллеру из команды OpenEMR за быстрый ответ и патчи