Sploitus

Exploit for CVE-2024-55591-POC

kitploit · 2026-08-25

Exploit Code

MARKDOWN173 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-EXFIL0-CVE-2024-55591-POC
# ScaryByte R&D PoC для CVE-2024-55591

Комплексный **все-в-одном** скрипт Proof of Concept на Python для обнаружения и эксплуатации критической уязвимости обхода аутентификации (CVE-2024-55591) в некоторых устройствах Fortinet. Этот скрипт:

  1. **Автоматически устанавливает** недостающие зависимости
  2. **Опционально сканирует** целевой хост на наличие **открытых портов** с помощью `nmap`
  3. **Выполняет предварительные проверки** для подтверждения, что сервис является устройством Fortinet и уязвим
  4. **Эксплуатирует интерфейс WebSocket** для перехвата Telnet-подобного сеанса CLI
  5. **Выполняет начальную или несколько команд** после эксплуатации
  6. **Проверяет версию устройства** на соответствие известным уязвимым диапазонам из Fortinet PSIRT FG-IR-24-535



* * *

## Содержание

  * Сводка по уязвимости
  * Затронутые версии
  * Предварительные требования
  * Использование
    * 1\. Клонирование и установка
    * 2\. Запуск скрипта
    * 3\. Следование мастеру
  * Возможности
    * Автоматическая установка зависимостей
    * Опциональное SYN-сканирование Nmap
    * Тестирование нескольких портов
    * Команды после эксплуатации
    * Анализ версии и проверка уязвимости
  * Пример прохождения
    * 1\. Начальные подсказки мастера
    * 2\. Результаты Nmap и выбор порта
    * 3\. Процесс эксплуатации
    * 4\. Процесс после эксплуатации
  * Отказ от ответственности



* * *

## Сводка по уязвимости

CVE-2024-55591 — это критическая уязвимость обхода аутентификации в некоторых продуктах Fortinet (FortiOS и FortiProxy). Используя недостаток в интерфейсе управления WebSocket/Telnet, злоумышленник может получить привилегированный доступ к CLI без действительных учетных данных.

## Затронутые версии

Согласно консультации Fortinet PSIRT (FG-IR-24-535), известны следующие затронутые версии:

  * **FortiOS** : 7.0.0 до 7.0.16
  * **FortiProxy** : 7.0.0 до 7.0.19, 7.2.0 до 7.2.12



## Предварительные требования

  * Python 3.x
  * (Опционально) Nmap для автоматического сканирования портов
  * Сетевой доступ к целевому устройству
  * Достаточные привилегии на локальной машине для установки недостающих пакетов Python (при необходимости)



## Использование

### 1\. Клонирование и установка

root@kitploit:~
    
    
    git clone https://github.com/exfil0/CVE-2024-55591-POC.git
    cd CVE-2024-55591-POC
    

### 2\. Запуск скрипта

root@kitploit:~
    
    
    python3 attack.py
    

При запуске скрипт **автоматически** проверяет наличие недостающих зависимостей Python (`requests`, `urllib3`) и пытается их установить.

### 3\. Следование мастеру

Вас попросят указать:

  1. **IP-адрес/имя хоста цели**
  2. Нужно ли **запустить Nmap** для поиска открытых портов
  3. Если найдено несколько открытых портов, нужно ли тестировать **ВСЕ** или только **один**
  4. Использовать ли **SSL**
  5. **Команду** для первоначального выполнения (можно выбрать из предопределённого списка или ввести свою)
  6. (Опционально) Нужно ли выполнять **команды после эксплуатации**



После подтверждения скрипт проверяет соединение, проверяет наличие уязвимости, обновляет соединение до WebSocket и пытается выполнить обход аутентификации.

* * *

## Возможности

### Автоматическая установка зависимостей

При запуске скрипт проверяет наличие библиотек `requests` и `urllib3`. Если они отсутствуют, предпринимается попытка установить их через `pip`.

### Опциональное SYN-сканирование Nmap

По вашему выбору скрипт запускает `nmap -sS -p- --min-rate 500 <host>` для обнаружения открытых TCP-портов, после чего либо:

  * Перебирает все обнаруженные порты
  * Позволяет выбрать один



### Тестирование нескольких портов

Если обнаружено несколько открытых портов, вы можете указать скрипту **протестировать их все**. Это полезно, если службы Fortinet прослушивают нестандартные порты.

### Команды после эксплуатации

Если эксплуатация прошла успешно, вы можете опционально выполнить дополнительные команды в том же Telnet-сеансе, например:

  * `diag sys top`
  * `diag debug crashlog read`
  * `execute shell`



Эти команды после эксплуатации можно изменить в скрипте для сбора более продвинутых данных.

### Анализ версии и проверка уязвимости

Скрипт пытается извлечь версию устройства из вывода `get system status` или `get system info`. Если она соответствует известному уязвимому диапазону, вы получите уведомление.

* * *

## Пример прохождения

### 1\. Начальные подсказки мастера

  1. **Целевой IP** : например, `192.168.1.50`
  2. **Сканирование Nmap?** : `y` (Да) для обнаружения открытых портов
  3. **SSL?** : Обычно `y` при подключении через HTTPS/443
  4. **Начальная команда** : например, `get system status`
  5. **Команды после эксплуатации** : `y` или `n`



### 2\. Результаты Nmap и выбор порта

Если Nmap найдёт несколько открытых портов, вы можете выбрать автоматическое тестирование **всех** портов или указать конкретный.

### 3\. Процесс эксплуатации

  * Скрипт проверяет, возвращает ли `/login?redir=/ng` интерфейс управления Fortinet
  * Скрипт проверяет, содержит ли `service-worker.js?local_access_token=ScaryBYte` подстроку `api/v2/static`
  * Если обе проверки пройдены, он выполняет обновление до WebSocket и отправляет поддельный контекст входа Telnet
  * После получения Telnet-подобного CLI вы можете выполнять команды, такие как `get system status`



### 4\. Процесс после эксплуатации

Если включён режим **после эксплуатации** , скрипт отправляет дополнительные отладочные или системные команды. Вывод собирается и отображается в вашей консоли.

* * *

## Отказ от ответственности

Данный скрипт Proof of Concept предоставляется **только** для **образовательных и тестовых** целей. Несанкционированная эксплуатация систем без явного разрешения незаконна. Всегда обеспечивайте наличие соответствующих разрешений перед сканированием или тестированием любых систем, а также обращайтесь к консультации Fortinet (FG-IR-24-535) для получения информации об исправлениях.