
Всеобъемлющий универсальный скрипт для демонстрации концепции на Python, предназначенный для обнаружения и эксплуатации критической уязвимости обхода аутентификации (CVE-2024-55591) в некоторых устройствах Fortinet.
Комплексный все-в-одном скрипт Proof of Concept на Python для обнаружения и эксплуатации критической уязвимости обхода аутентификации (CVE-2024-55591) в некоторых устройствах Fortinet. Этот скрипт:
nmapCVE-2024-55591 — это критическая уязвимость обхода аутентификации в некоторых продуктах Fortinet (FortiOS и FortiProxy). Используя недостаток в интерфейсе управления WebSocket/Telnet, злоумышленник может получить привилегированный доступ к CLI без действительных учетных данных.
Согласно консультации Fortinet PSIRT (FG-IR-24-535), известны следующие затронутые версии:
git clone https://github.com/exfil0/CVE-2024-55591-POC.git
cd CVE-2024-55591-POC
python3 attack.py
При запуске скрипт автоматически проверяет наличие недостающих зависимостей Python (requests, urllib3) и пытается их установить.
Вас попросят указать:
После подтверждения скрипт проверяет соединение, проверяет наличие уязвимости, обновляет соединение до WebSocket и пытается выполнить обход аутентификации.
При запуске скрипт проверяет наличие библиотек requests и urllib3. Если они отсутствуют, предпринимается попытка установить их через pip.
По вашему выбору скрипт запускает nmap -sS -p- --min-rate 500 <host> для обнаружения открытых TCP-портов, после чего либо:
Если обнаружено несколько открытых портов, вы можете указать скрипту протестировать их все. Это полезно, если службы Fortinet прослушивают нестандартные порты.
Если эксплуатация прошла успешно, вы можете опционально выполнить дополнительные команды в том же Telnet-сеансе, например:
diag sys topdiag debug crashlog readexecute shellЭти команды после эксплуатации можно изменить в скрипте для сбора более продвинутых данных.
Скрипт пытается извлечь версию устройства из вывода get system status или get system info. Если она соответствует известному уязвимому диапазону, вы получите уведомление.
192.168.1.50y (Да) для обнаружения открытых портовy при подключении через HTTPS/443get system statusy или nЕсли Nmap найдёт несколько открытых портов, вы можете выбрать автоматическое тестирование всех портов или указать конкретный.
/login?redir=/ng интерфейс управления Fortinetservice-worker.js?local_access_token=ScaryBYte подстроку api/v2/staticget system statusЕсли включён режим после эксплуатации, скрипт отправляет дополнительные отладочные или системные команды. Вывод собирается и отображается в вашей консоли.
Данный скрипт Proof of Concept предоставляется только для образовательных и тестовых целей. Несанкционированная эксплуатация систем без явного разрешения незаконна. Всегда обеспечивайте наличие соответствующих разрешений перед сканированием или тестированием любых систем, а также обращайтесь к консультации Fortinet (FG-IR-24-535) для получения информации об исправлениях.