Alvaros
.
- Регистрация
- 14.05.16
- Сообщения
- 21.452
- Реакции
- 101
- Репутация
- 204
В конце прошлого года эксперт Positive Technologies
Под угрозой оказались
В сегодняшнем материале автор исследования подробнее разберет уязвимость, детали ее обнаружения и эксплуатации. Поехали!
Что такое 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:
ortal::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:
ortal::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 выпустила
Для блокировки возможной атаки компании могут использовать межсетевые экраны уровня приложения. Например,
Пользователи
Автор: Михаил Ключников (@
Timeline
You must be registered for see links
уязвимость CVE-2019-19781 в ПО Citrix ADC, которая позволяет любому неавторизованному пользователю выполнять произвольные команды операционной системы. Под угрозой оказались
You must be registered for see links
по всему миру. Ситуация усугубляется тем, что продукт 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:
You must be registered for see links
Получается, что если использовать path traversal в имени файла, то мы сможем создавать файл с расширением «.xml» в любом каталоге файловой системы, где у нас есть права на запись. Чтобы проверить это, отправим строку «../../../../tmp/myTestFile» в качестве значение заголовка «NSC_USER» и проверим наличие файла в каталоге «/tmp/».
На данном этапе у нас есть возможность создавать файл с расширением «.xml», но нет возможности контролировать содержимое файла.
Обратим внимание на скрипт «newbm.pl», который также находится в директории, которая нам интересна. Этот скрипт принимает POST-параметры и записывает в файл (имя которого указано в заголовке NSC_USER) значения таких параметров, как «url», «title» и «desc».
You must be registered for see links
Теперь есть возможность не только создавать xml-файлы в произвольных местах, но и частично контролировать их содержимое.
Чтобы продолжить путь к RCE, обратимся снова к конфигу веб-сервера и заметим, что еще один путь (/vpns/portal/) обрабатывается perl-функцией NetScaler:
Функция handler получает часть пути после последнего символа «/» в качестве имени файла, ищет его в папке «/netscaler/portal/templates/» и пытается отрендерить данный файл, используя библиотеку «Template Toolkit».
You must be registered for see links
Таким образом, если мы сможем загрузить свой файл в папку с темплейтами, то сможем вызвать и его рендер.
Дальнейшую эксплуатацию осложняет тот факт, что библиотека «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 выпустила
You must be registered for see links
по устранению данной уязвимости. Кроме того, производитель рекомендует пользователям незамедлительно обновить всех уязвимых версий ПО до рекомендуемых.Для блокировки возможной атаки компании могут использовать межсетевые экраны уровня приложения. Например,
You must be registered for see links
обнаруживает такую атаку «из коробки»: систему следует перевести в режим блокировки опасных запросов для защиты в реальном времени. С учетом общего срока существования выявленной уязвимости (она актуальна с момента выхода первой уязвимой версии ПО, то есть с 2014 года) актуальность приобретает и выявление
You must be registered for see links
эксплуатации данной уязвимости (и соответственно, компрометации инфраструктуры) в ретроспективе. Пользователи
You must be registered for see links
начиная с 18 декабря 2019 года могут воспользоваться специальными правилами, детектирующими попытки эксплуатации данной уязвимости в режиме онлайн.Автор: Михаил Ключников (@
You must be registered for see links
), Positive TechnologiesTimeline
- 5 December, 2019 Reported to Citrix
- 19 December, 2019 Released mitigation steps from Citrix



