Уязвимости в web-интерфейсе сетевых устройств Juniper, поставляемых с JunOS

В web-интерфейсе J-Web, который используется в сетевых устройствах компании Juniper, оснащённых операционной системой JunOS, выявлено несколько уязвимостей, наиболее опасная из которых (CVE-2022-22241) позволяет удалённо без прохождения аутентификации выполнить свой код в системе через отправку специально оформленного HTTP-запроса. Пользователям оборудования Juniper рекомендовано установить обновление прошивки, а если это невозможно, проследить, чтобы доступ к web-интерфейсу был заблокирован из внешних сетей и ограничен только заслуживающими доверия хостами.

Суть уязвимости в том, что передаваемый пользователем файловый путь обрабатываются в скрипте /jsdm/ajax/logging_browse.php без фильтрации префикса с типом контента на стадии до проверки аутентификации. Атакующий может передать под видом изображения вредоносный phar-файл и добиться выполнения размещённого phar-архиве PHP-кода, воспользовавшись методом атаки «Phar deserialization» (например, указав в запросе «filepath=phar:/путь/pharfile.jpg»).

Проблема в том, что при проверке загруженного файла при помощи PHP-функции is_dir(), эта функция автоматически выполняет десериализацию метаданных из архива Phar (PHP Archive) при обработке путей, начинающихся с «phar://». Аналогичный эффект наблюдается при обработке переданных пользователем файловых путей в функциях file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime() и filesize().

Атака усложняется тем, что помимо инициирования выполнения phar-архива, злоумышленник должен найти способ его загрузки на устройство (через обращение к /jsdm/ajax/logging_browse.php можно лишь указать путь для выполнения уже существующего файла). Из возможных сценариев попадания файлов на устройство упомянуты загрузка phar-файла под видом картинки через сервис передачи изображений и подстановка файла в кэш web-контента.

Другие уязвимости:

  • CVE-2022-22242 — подстановка неотфильтрованных внешних параметров в вывод скрипта error.php, позволяющая добиться межсайтовый скриптинга и выполнить в браузере пользователя произвольный JavaScript-код при переходе по ссылке (например, «https://JUNOS_IP/error.php?SERVER_NAME=<script>alert(0)</script>». Уязвимость может использоваться для перехвата параметров сеанса администратора, если атакующим удастся добиться открытия администратором специально оформленной ссылки.
  • CVE-2022-22243, СVE-2022-22244 — подстановка выражений XPATH через скрипты jsdm/ajax/wizards/setup/setup.php и /modules/monitor/interfaces/interface.php, позволяет непривилегированному аутентифицированному пользователю манипулировать сеансами администратора.
  • CVE-2022-22245 — отсутствие должной чистки последовательности «..» в путях, обрабатываемых в скрипте Upload.php, позволяет аутентифицированному пользователю загрузить свой PHP-файл в каталог, допускающий выполнение PHP-скриптов (например, передав путь «fileName=\..\..\..\..\www\dir\new\shell.php»).
  • CVE-2022-22246 — возможность выполнения произвольного локального PHP-файла через манипуляции аутентифицированным пользователем со скриптом jrest.php, в котором внешние параметры используются для формирования имени файла, загружаемого функцией «require_once()» (например, «/jrest.php?payload=alol/lol/any\..\..\..\..\any\file»)

Источник: opennet.ru