• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья Технический анализ Fortinet FortiNAC CVE-2022-39952

b2dde80c-d9f7-49f4-9e7d-a94029828aad.jpeg

Введение

В четверг, 16 февраля 2023 года, компания Fortinet выпустила PSIRT, в котором подробно описана CVE-2022-39952, критическая уязвимость, затрагивающая ее продукт FortiNAC. Эта уязвимость, обнаруженная Gwendal Guégniaud из Fortinet, позволяет неаутентифицированному злоумышленнику записать произвольные файлы в системе и в результате получить RCE от root'а.

Извлечение образа

Извлечение файловых систем из устройств происходит просто, сначала из vmdk перечисляются пути к монтируемым файловым системам:
sudo virt-filesystems --filesystems -a fortinac-9.4.1.0726.vmdk

Screen-Shot-2023-02-20-at-8.38.22-AM.png


Далее мы подключаем файловую систему в созданный нами каталог:
sudo guestmount -a fortinac-9.4.1.0726.vmdk -m /dev/centos/root --ro /tmp/fnac941

Screen-Shot-2023-02-20-at-8.39.32-AM.png


Уязвимость
После извлечения обеих файловых систем из уязвимого и исправленного vmdk видно, что файл /bsc/campusMgr/ui/ROOT/configWizard/keyUpload.jsp был удален в патче, а также совпадает с именем servlet, упомянутого в changelog.

meld.png


Изучая содержимое keyUpload.jsp, мы видим, что неаутентифицированная конечная точка будет анализировать запросы, которые предоставляют файл в параметре key, и, если он найден, записывать его в /bsc/campusMgr/config.applianceKey.

Screen-Shot-2023-02-18-at-12.53.40-PM.png


После успешной записи файла вызов Runtime().Exec() выполняет сценарий bash, расположенный по адресу /bsc/campusMgr/bin/configApplianceXml.

Screen-Shot-2023-02-18-at-1.00.53-PM.png


Сценарий bash вызывает команду unzip на только что записанном файле. Сразу же, увидев этот вызов на файле, контролируемом злоумышленником, мы вспомнили несколько недавних уязвимостей, которые мы рассматривали и которые использовали распаковку архивов. Хотя наши первоначальные мысли были связаны с проблемой обхода каталога, unzip помогает удалить относительные пути и защищает от обхода.

На самом деле проблема гораздо более проста, и никакого обхода не требуется. Непосредственно перед вызовом unzip сценарий bash вызывает cd /. Unzip позволит размещать файлы по любым путям, если они не выходят за пределы текущего рабочего каталога. Поскольку рабочим каталогом является /, вызов unzip внутри сценария bash позволяет записать любой произвольный файл.

Эксплуатация

Подобно использованию предыдущих уязвимостей в архивах, позволяющих произвольную запись файлов, мы используем эту уязвимость для записи задания cron в файл /etc/cron.d/payload. Это задание запускается каждую минуту и инициирует reverse shell для хакера. Сначала мы создаем zip-архив, содержащий файл, и указываем путь, по которому мы хотим его извлечь. Затем мы отправляем вредоносный zip-файл на уязвимую конечную точку в поле key. В течение минуты мы получаем обратную оболочку от root. Наш POC, автоматизирующий эту процедуру, можно найти на GitHub.

Демо

FpMsVgdX0CsDu8b

POC

Индикатор взлома

К сожалению, устройство FortiNAC не позволяет получить доступ к графическому интерфейсу, пока не будет добавлен лицензионный ключ, поэтому для проверки индикаторов не были доступны журналы GUI. Однако использование проблемы можно было наблюдать в журналах файловой системы, расположенных по адресу /bsc/logs/output.master. В частности, можно было проверить наличие строки Running configApplianceXml, пока атакующий не очистил этот файл журнала.

Screen-Shot-2023-02-20-at-9.44.26-AM.png


Уязвимостью произвольной записи файлов можно злоупотреблять несколькими способами для получения удаленного выполнения кода. В данном случае мы записываем задание cron в файл /etc/cron.d/, но злоумышленники также могут перезаписать и регулярно выполняемый двоичный файл в системе или SSH-ключи пользователей.
 
Последнее редактирование модератором:

Octavian Augustus

Green Team
06.10.2019
16
3
BIT
0
Огромное удовольствие было получено от прочтения вашей статьи, все четко и по полочкам!
 
  • Нравится
Реакции: szybnev
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!