## 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) для получения информации об исправлениях.