Русский
Русский
English
Статистика
Реклама

Разбираем уязвимость в Citrix ADС, позволяющую за минуту проникнуть во внутреннюю сеть компании

В конце прошлого года эксперт Positive Technologies обнаружил уязвимость CVE-2019-19781 в ПО Citrix ADC, которая позволяет любому неавторизованному пользователю выполнять произвольные команды операционной системы.

Под угрозой оказались около 80 тысяч компаний по всему миру. Ситуация усугубляется тем, что продукт Citrix ADC устанавливается на границе между внешней и внутренней сетью организации. Таким образом, после эксплуатации уязвимости, злоумышленник получает доступ сразу во внутреннюю сеть компании и имеет возможность развивать атаки на приватный сегмент сети.

В сегодняшнем материале автор исследования подробнее разберет уязвимость, детали ее обнаружения и эксплуатации. Поехали!

Что такое Citrix ADC


Citrix ADC программно ориентированное решение для доставки приложений и балансировки нагрузки, специально разработанное, чтобы повысить скорость работы традиционных, облачных и веб-приложений, независимо от того, где они размещены. Наибольшее распространение такие контроллеры уже получили в IT- и телеком-отраслях. Согласно прогнозам, к 2023 году спрос на ADC вырастет у финансовых и страховых компаний.

Насколько все серьезно


В ходе мониторинга актуальных угроз (threat intelligence) было установлено, что потенциально уязвимы не менее 80 000 компаний из 158 стран. На момент обнаружения уязвимости, в ТОП-5 по количеству таких организаций входили Соединенные Штаты Америки (абсолютный лидер более 38% всех уязвимых организаций расположены на территории США), Германия, Великобритания, Нидерланды, Австралия.

Россия находилась на 26-м месте рейтинга по общему числу потенциально уязвимых компаний различных секторов бизнеса всего более 300 организаций. Казахстан и Беларусь занимали 44-е и 45-е места по числу уязвимых компаний соответственно.

По данным на февраль 2020 года, в топ стран по количеству потенциально уязвимых организаций входили Бразилия (43% от числа компаний, в которых уязвимость была выявлена изначально), Китай (39%), Россия (35%), Франция (34%), Италия (33%) и Испания (25%). Лучшую динамику устранения уязвимости демонстрировали США, Великобритания и Австралия: в этих странах зафиксировано по 21% компаний, которые продолжали использовать уязвимые устройства и не принимали никаких мер защиты.



Обнаружение и эксплуатация


В самом начале исследования я обнаружил, что, используя Path Traversal, у неавторизованного пользователя есть возможность обращаться к статическим файлам, которые недоступны без авторизации (/vpn/../vpns/style.css). Это было найдено в ходе Black Box анализа Citrix ADC.



Поведение, описанное выше, заинтересовало меня, поэтому я решил найти образ Citrix ADC, запустить локально (спасибо за помощь моему коллеге Юрию Алейнову) и продолжить исследование с полным доступом к исходному коду приложения.

Прежде всего был проанализирован конфиг веб-сервера Apache (/etc/httpd.conf), который отвечает за веб-интерфейс данного приложения. Как мы видим на картинке ниже, пути, попадающие под паттерн /vpns/portal/scripts/.*\.pl$ обрабатываются функцией ModPerl::Registry. Получается, что есть возможность исполнять perl-скрипты из папки /netscaler/portal/scripts/ без авторизации.



После этого я начал анализировать скрипты, которые мы можем вызвать, перейдя по адресу /vpn/../vpns/portal/scripts/[scriptName].pl.



Практически в каждом скрипте вызывается функция csd модуля NetScaler::Portal::UserPrefs (/netscaler/portal/modules/NetScaler/Portal/UserPrefs.pm). Функция работает с HTTP заголовками NSC_USER и NSC_NONCE. Со вторым заголовком никаких интересных действий не совершается, а вот значение заголовка NSC_USER используется в качестве имени файла. Если файла (имя которого было передано, как значение заголовка NSC_USER) не существует, то данный файл создается с определенной структурой, а если он уже есть, то парсится и на его основе заполняется переменная $doc.



Получается, что если использовать path traversal в имени файла, то мы сможем создавать файл с расширением .xml в любом каталоге файловой системы, где у нас есть права на запись. Чтобы проверить это, отправим строку ../../../../tmp/myTestFile в качестве значение заголовка NSC_USER и проверим наличие файла в каталоге /tmp/.



На данном этапе у нас есть возможность создавать файл с расширением .xml, но нет возможности контролировать содержимое файла.

Обратим внимание на скрипт newbm.pl, который также находится в директории, которая нам интересна. Этот скрипт принимает POST-параметры и записывает в файл (имя которого указано в заголовке NSC_USER) значения таких параметров, как url, title и desc.



Теперь есть возможность не только создавать xml-файлы в произвольных местах, но и частично контролировать их содержимое.

Чтобы продолжить путь к RCE, обратимся снова к конфигу веб-сервера и заметим, что еще один путь (/vpns/portal/) обрабатывается perl-функцией NetScaler::Portal::Handler (/netscaler/portal/modules/NetScaler/Portal/Handler.pm)



Функция handler получает часть пути после последнего символа / в качестве имени файла, ищет его в папке /netscaler/portal/templates/ и пытается отрендерить данный файл, используя библиотеку Template Toolkit.



Таким образом, если мы сможем загрузить свой файл в папку с темплейтами, то сможем вызвать и его рендер.

Дальнейшую эксплуатацию осложняет тот факт, что библиотека Template Toolkit работает в таком режиме, что нельзя исполнить perl-код штатными методами. Например, не может быть использована директива [% PERL %].



Исходя из данных ограничений, я решил поискать уязвимости в стандартных плагинах библиотеки. Рассмотрим такой плагин, как Datafile (/usr/local/lib/perl5/site_perl/5.14.2/mach/Template/Plugin/Datafile.pm). Файл довольно маленький, поэтому сразу обращаем внимание на вызов стандартной функции open с двумя аргументами. Такое использование небезопасно и может привести к RCE.



Пробуем проэксплуатировать уязвимость локально и в качестве проверки создаем файл testRCE в папке /tmp/.



На данный момент у нас есть возможность создавать файлы в произвольных местах на системе, частично контролировать их содержимое и уязвимость в библиотеке Template Toolkit. Используем всё это для того, чтобы получить выполнение произвольных команд от неавторизованного пользователя.

Создаем в папке с темплейтами файл, рендер которого приведет к исполнению кода и созданию веб-интерпретатора командной строки.



Затем рендерим данный файл.



Обращаемся к скрипту (веб-шеллу), который мы создали ранее и выполняем произвольную команду OS.



Как защититься


Компания Citrix выпустила рекомендации по устранению данной уязвимости. Кроме того, производитель рекомендует пользователям незамедлительно обновить всех уязвимых версий ПО до рекомендуемых.

Для блокировки возможной атаки компании могут использовать межсетевые экраны уровня приложения. Например, PT Application Firewall обнаруживает такую атаку из коробки: систему следует перевести в режим блокировки опасных запросов для защиты в реальном времени. С учетом общего срока существования выявленной уязвимости (она актуальна с момента выхода первой уязвимой версии ПО, то есть с 2014 года) актуальность приобретает и выявление возможных фактов эксплуатации данной уязвимости (и соответственно, компрометации инфраструктуры) в ретроспективе.

Пользователи PT Network Attack Discovery начиная с 18 декабря 2019 года могут воспользоваться специальными правилами, детектирующими попытки эксплуатации данной уязвимости в режиме онлайн.

Автор: Михаил Ключников (@__mn1__), Positive Technologies

Timeline


  • 5 December, 2019 Reported to Citrix
  • 19 December, 2019 Released mitigation steps from Citrix
Источник: habr.com
К списку статей
Опубликовано: 08.07.2020 18:05:40
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании positive technologies

Информационная безопасность

Сетевые технологии

Citrix

Citrix adc

Уязвимости

Категории

Последние комментарии

© 2006-2020, personeltest.ru